从键盘读入一个字符
判断字符的范围
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
本文介绍了一个简单的字符转换程序,该程序能够从键盘读取用户输入的单个字符,并判断其是否位于0-9、A-F或a-f范围内。如果字符位于这些范围内,则将其转换为相应的数值并显示转换结果;如果输入不符合条件或者超出范围,则会提示错误信息。当用户输入字符'q'时,程序将显示退出信息并终止。
2660

被折叠的 条评论
为什么被折叠?



