十六进制到十进制的转换。要求从键盘输入的0-FFFFH的正整数转换为十进制数并在屏幕上显示出来(通过寄存器传送参数)
ASCLL码(大小写字母以及数字)
数字的十六进制则从30H开始(0~9)
30H~39H
ASCLL码转十六进制
键盘读取的是数字
键盘读取的是大写字母
键盘读取的是小写字母
代码细节
主框架
从键盘上读取的ascll码转化成二进制
二进制转化成十进制
全部代码
hexidec segment
assume cs:hexidec
main proc far
start:
push ds
sub ax,ax
push ax
repeat:
call hexibin
call crlf
call binidec
call crlf
jmp repeat
ret
main endp
hexibin proc near
mov bx,0;用来保存十六进制转化成二进制的数
newchar:
mov ah,1h;注意读入是放在AL中,AL=ASCLL码;输出是放在DL上,DL=ASCLL码
int 21h
sub al,30h
jl exit
cmp al,10d
jl add_to
sub al,27h
cmp al,10h
jge exit
add_to:
mov cl,4
shl bx,cl
mov ah,0
add bx,ax
jmp newchar
exit:
ret
hexibin endp
binidex proc near
mov cx,10000d
call dec_div
mov cx,1000d
call dec_div
mov cx,100d
call dec_div
mov cx,10d
call dec_div
mov cx,1d
call dec_div
ret
dec_div proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,2
int 21h
ret
dec_div endp
binidex endp
hexidec ends