從鍵盤輸入一個字符,判斷其是不是大寫字母,如果是則請輸出這個大寫字母,如果不是請輸出“這不是一個大寫字母”的英文信息(要求:能連續輸出直到輸出“#”結束)。
P155
例4.13
DATA SEGMENT
STR DB 0DH
,0AH
,'This is not an upper letter!$' ;0DH為回車符、
0AH為換行符
DATA ENDS
CODE SEGMENTASSUME CS
:CODE
,DS
:DATA
START
: MOV AX
,DATA
;MOV DS
,AX
;
NEXT
: MOV AH
,1 ;調用
1號功能,帶回顯的鍵盤輸入,AH
=01INT 21H
;實現單字符輸入,即將從鍵盤輸入的字符的ASCII碼值送到AL寄存器中,同時回顯在屏幕上
CMP AL
,'#' ;輸入的單個字符已經存放到AL中,然后拿AL與
'#'進行比較(相減)
JZ EXIT
;JZ
--->ZF
=1,零標志位為
1跳轉,即結果為
0跳轉到EXIT 若AL為
'#',跳轉到EXIT處,否則跳過該指令執行下一條指令
CMP AL
,'A' ;拿AL與
'A'進行比較(相減)
JB OUTPUT
;JB
--->AL
<'A'(低于
/不高于也不等于)跳轉,即AL內容所對應的ASCII碼值比
'A'對應的ASCII碼值小,跳轉到OUTPUT處 若AL
<'A',跳轉到OUTPUT處,否則跳過該指令執行下一條指令
CMP AL
,'Z' ;拿AL與
'Z'進行比較(相減)
JA OUTPUT
;JA
--->AL
>'Z'(高于
/不低于也不等于)跳轉,即AL內容所對應的ASCII碼值比
'Z'對應的ASCII碼值大,跳轉到OUTPUT處 若AL
>'Z',跳轉到OUTPUT處,否則跳過該指令執行下一條指令
;當程序走到此條指令,即輸入的單個字符為單個大寫字母,輸出AL寄存器里面的內容即可
MOV AH
,2 ;調用
2號功能單字符輸出
MOV DL
,AL
;輸出內容為DL寄存器里面的數據
INT 21H
;將DL寄存器中的字符在顯示器上輸出顯示
JMP NEXT
;由題目要求可得,能連續輸出直到輸出“#”結束,即遇到
'#'程序才可結束,重新跳轉NEXT處再次進行判斷
OUTPUT
: MOV DX
,OFFSET STR
;OFFSET返回變量或標號的偏移地址屬性值,即將STR存放字符串的首地址傳遞給
DXMOV AH
,9 ;調用
9號功能,字符串輸出
INT 21H
;將數據段DS中從偏移地址DX處開始的,以
'$'字符結尾的字符串輸出到顯示器上 回車、換行、然后輸出
'This is not an upper letter!'JMP NEXT
;由題目要求可得,能連續輸出直到輸出“#”結束,即遇到
'#'程序才可結束,重新跳轉NEXT處再次進行判斷
EXIT
: MOV AH
,4CH
;調用
4CH號功能,返回DOS操作系統
INT 21H
;終止當前程序的運行,并返回DOS系統
CODE ENDS
;END START
;
總結
以上是生活随笔為你收集整理的从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是请输出“这不是一个大写字母”的英文信息(要求:能连续输出直到输出“#”结束)。的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。