从键盘读入一个字符
判断字符的范围
0-9、A-F、a-f
转换成功显示转换成功后的信息或用户输入错误则显示错误的信息
若用户输入为 'q'字符则显示退出信息然后退出
data segment
t db ?
s db ?
msg db 0dh, 0ah, 'The input char is ', '$' ;转换成功后的信息
emsg db 0dh, 0ah, 'Wrong input!', 0dh, 0ah, '$';错误的信息
qmsg db 0dh, 0ah, 'quit', 0dh, 0ah, '$' ;退出信息
data ends
prog segment
main proc far
assume cs:prog, ds:data
start:
mov ax,data
mov ds,ax
again:
mov ah,01h
int 21h ;读入要转换的字符
lea bx,s
mov byte ptr ds:[bx], al ;把用户输入的字符保存在s
next1:
and al,7fh
cmp al,'0'
jb error
cmp al,'9'
ja next2
sub al,30h
jmp next4 ;判读是否在0-9范围
next2:
cmp al,'A'
jb error
cmp al,'F'
ja next3
sub al,37h
jmp next4 ;判读是否在A-F范围
next3:
cmp al,'a'
jb error
cmp al,'f'
ja error
sub al,57h ;判读是否在a-f范围
next4:
mov bx,offset t
mov byte ptr ds:[bx],al ;把转换后的值保存在t
lea dx, msg
mov ah,09h
int 21h ;显示正确转换后的信息
mov dl,s
mov ah,02h
int 21h ;显示用户先前输入的字符
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h ;回车换行
jmp again
error:
cmp al,'q'
je quit ;若用户输入q字符则退出
lea dx, emsg
mov ah,09h
int 21h ;显示错误信息
jne again
quit:
lea dx, qmsg
mov ah,09h
int 21h ;显示退出信息
mov ax,4c00h
int 21h
main endp
prog ends
end start
转载于:https://blog.51cto.com/poollooq/1563019