判断从键盘输入的字符,如果是数字字符则在屏幕终端显示字符串' number’, 如果是字母字符则显示'char', 否则显示'other' 。为什么运行时总是
data segment
string1 db 'Please input a number:',0dh,0ah,'$'
string2 db 0dh,0ah,'number!',0dh,0ah,'$'
string3 db 0dh,0ah,'char',0dh,0ah,'$'
string4 db 0dh,0ah,'other',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
S:
lea dx,string1 ;将string1的偏移地址放到dx中,使dx指向string1
mov ah,09h;在光标位置显示字符串,DS:DX=串地址,用’$’结束字符串
int 21h
mov ah,01h;置光标位置,键盘输入并回显, AL=输入字符
int 21h
cmp al,30h
jnc number2 ;大于或等于时转移
jmp outputother
number2:
cmp al,3ah
jnc notnum
lea dx,string2
mov ah,09h
int 21h
jmp S
notnum:
cmp al,41h;判断是否为大写字符
jnc char
jmp outputother
char: cmp al,5bh;与大写字符“Z”的下一个比较
jnc smallchar ;转到判断小写字符处
lea dx,string3
mov ah,09h
int 21h
jmp S
smallchar:
cmp al,62h;与小写字符'a'的下一个比较
jnc smallchar2;高于则转移
jmp outputother
smallchar2: cmp al,7bh
jnc outputother
lea dx,string3
mov ah,09h
int 21h
jmp S
outputother: lea dx,string4
mov ah,09h; 显示字符串,DS:DX=串地址’$’结束字符串
int 21h
jmp EXIT
EXIT:
mov ah,4ch
int 21h
code ends
end start