回 帖 发 新 帖 刷新版面

主题:求教一个问题:十进制到十六进制数转换的程序

求教一个问题:十进制到十六进制数转换的程序
转换几次以后就返回系统
从键盘取得一个十进制数,然后把这个十进制数转换成十六进制数显示出来
具体程序:
decihex   segment
   assume   cs:  decihex
main   proc   far
repeat:
   call   decibin
   call   crlf
   call   binihex
   call   crlf
   [color=0000FF]sub   dx,dx    ;用于控制转换次数
   push   dx
   mov   dx,3
   dec   dx
   cmp   dx,1
   jnb   repeat  
   ret[/color]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


为什么蓝色部分不能控制转换次数,程序每次都无限循环进行?

回复列表 (共3个回复)

沙发

急等解答……

板凳

sub   dx,dx
   push   dx
   mov   dx,3
repeat:
   call   decibin
   call   crlf
   call   binihex
   call   crlf
   dec   dx
   cmp   dx,1
   jnb   repeat
   ret

改成这样还是无限循环

3 楼

建立个一个映射表,然后直接用十进制查表,不过对于输入的编码需要先转换为十进制。

我来回复

您尚未登录,请登录后再回复。点此登录或注册