实验一:
实验内容:从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其它字符。
若输入为小写字母, 显示“You Input a Lowercase Letter!”;
若输入为大写字母,显示“You Input an Uppercase Letter!”;
若输入为数字,显示“You Input a Digit!”;
若输入为其它字符,显示“You Input Other Letter!”
实验思路:(1)数字 0~9 的 ASCII 码为 30H~39H;大写字母的 ASCII 码为 41H~5AH,小写字母的 ASCII 码为 61H~7AH。
(2)本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的 ASCII 码值判 断其所属类型,并显示相应的信息。
(3)字符串显示使用功能号为 09H 的 DOS 功能调用,接收键盘输入的 单个字符使用功能号为 01H 的 DOS 功能调用。
实验代码:
;从键盘键入字符,判断其属性
.model small
.stack
.data
INFOR1 DB 0AH,0DH,"Please Input Any Key to input a letter: $"
INFOR2 DB 0AH,0DH,"You Input a Lowercase Letter! $"
INFOR3 DB 0AH,0DH,"You Input a Uppercase Letter! $"
INFOR4 DB 0AH,0DH,"You Input a Digit! $"
INFOR5 DB 0AH,0DH,"You Input Other Letter! $"
.code
START: MOV ax,@data
MOV ds,ax
;输出INFOR1并且接受从键盘输入的一个字符
;**********
;输出INFOR1
MOV dx,offset INFOR1 ;lea dx,INFOR1
MOV ah,9
INT 21h
;接受从键盘输入的一个字符
MOV ah,1
INT 21h
;**********
;相当于swith.case
CMP al,'0' ;AL和0比较大小
JB OTHER ;al<0跳转到OTHER
CMP al,'9'
JBE DIGIT ;al<=9跳转到DIGIT
CMP al,'A'
JB OTHER ;al的ASCII小于A(41)跳转到OTHER
CMP al,'Z'
JBE UPPER ;al的ASCII小于等于Z(5A)跳转到UPPER
CMP al,'a'
JB OTHER ;al的ASCII小于a(61)跳转到OTHER
CMP al,'z'
JBE LOWER ;al的ASCII小于等于z(7A)跳转到LOWER
JMP PEND ;程序停止
;CASE的区域
;输入字符61(a)<=AS<=7A(z)
LOWER: MOV dx,offset INFOR2
MOV ah,9
INT 21h
JMP PEND
;输入字符41(A)<=AS<=5A(Z)
UPPER: MOV dx,offset INFOR3
MOV ah,9
INT 21h
JMP PEND
;输入字符0<=AS<=9
DIGIT: MOV dx,offset INFOR4
MOV ah,9
INT 21h
JMP PEND
;输入字符ASCII<0,9<AS<41(A),5A(Z)<AS<61(a)
OTHER: MOV dx,offset INFOR5
MOV ah,9
INT 21h
JMP PEND
;程序结束
PEND: MOV ah,4Ch
INT 21h
END START
实验结果: