求教一个问题:十进制到十六进制数转换的程序
转换几次以后就返回系统从键盘取得一个十进制数,然后把这个十进制数转换成十六进制数显示出来
具体程序:
decihex segment
assume cs: decihex
main proc far
repeat:
call decibin
call crlf
call binihex
call crlf
sub dx,dx ;用于控制转换次数
push dx
mov dx,3
dec dx
cmp dx,1
jnb repeat
ret
main endp
decibin proc near ;从键盘取得十进制数,保存在BX中
mov bx,0
newchar:
mov ah,1
int 21h
sub al,30h
jl exit
cmp al,9d
jg exit
cbw
xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
jmp newchar
exit:
ret
decibin endp
binihex proc near ;用十六进制形式显示BX中的数
mov ch,4
rotate:
mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
binihex endp
crlf proc near
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
crlf endp
decihex ends
end main
为什么蓝色部分不能控制转换次数,程序每次都无限循环进行?