求汇编语言2进制到16进制转换程序代码

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:43:47
求汇编语言2进制到16进制转换程序代码,要求从键盘输入2进制数,从屏幕上显示出对应的16进制。高手帮忙把注释和你写的思路也写写啊!!本人很需要注释和思路,谢谢啊

先说我的思想,在发程序上来,上面的一个程序我看了,对于作者给定的数确实可以输出正确结果,但有一个问题,当给的数在10个或以下时就会出错了。
我的程序是这样写的:
允许用户从键盘输入0~16个0或1,判断输如以回车(20h)为输入结束,对每一个输入判断为1,还是为0,如果为1,设置cf=1然后带进位左移bx,如果为0,设置cf=0,也是带进位左移bx,bx开始时为0,如果输入10101的话,经过5次移位,bx=10101b了,输入完了后将bx按十六进制方式输出,源程序如下:(如还有不懂可以发消息与我交流)
CODES SEGMENT
ASSUME CS:CODES
START:
mov bx,0
loop1:
clc ;此指令清除cf标志位cf=0
mov ah,1h
int 21h
cmp al,0dh ;比较是不是回车键

je print ;如果是表示输入完毕

cmp al,'0'
jz rotate
stc ;此指令设置cf为1
rotate:
rcl bx,1 ;注意这里是带进位左移,程序的思想所在
jmp loop1
print:

mov dl,0dh ;接下来的六行指令打印回车和换行,避免输出的覆盖原来的输入
mov ah,2h
int 21h
mov dl,0ah
mov ah,2h
int 21h

mov cl,4 ;将bx的二进制数按十六进制显示出来
mov ch,4
loop2:
rol bx,cl
mov dl,bl
and dl,0fh
add dl,30h
cmp dl