(十进制转化成二进制,二进制再转换成十六进制的ascll码输出,)
decihex segment assume cs:decihex main proc far repeat: call decibin call crlf call binihex call crlf jmp repeat main endp decibin proc near mov bx,0 ;从键盘上获得一个数字,将它转化成二进制 newchar: mov ah,1h int 21h ;从键盘上读取的都是ascll码 sub al,30h;ascll码转换成二进制 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 binihex proc near mov ch,4h rotate: mov cl,4h;值得注意的是:移位数只能是1或者CL这个寄存器,当移位数大于1时就必须采用寄存器的方式 rol bx,cl mov al,bl and al,0fh add al,30h cmp al,3ah jl print add al,7h print mov dl,al mov ah,2 int 21h dec ch jnz rotate ret binihex endp crlf proc mear mov dl,0dh;回车的ascll码 mov ah,2h int 21h mov dl,0ah;换行的ascll码 mov ah,2h int 21h ret crlf endp decihex ends end main
而数字的ascll范围为30h~39h
字母的范围41h开始(大写A)
再调用DOS命令2
MUL REG/MEM ;REG寄存器,MEM存储器
IMUL REG/MEM
MUL和IMUL指令分别用于实现无符号数的乘法和有符号数的乘法运算。都只有一个源操作数,可以使寄存器或存储器,而且目标操作数隐含规定在累加器中。
1)MUL/IMUL指令
(a)字节乘法,则AL×REG8/MEM8,乘积存于AX中。 (b)字乘法,则AX×REG16/MEM16,乘积的高16位存放在DX中,低16位存放在AX中。


![[汇编语言]子程序结构 十进制到十六进制转换程序 [汇编语言]子程序结构 十进制到十六进制转换程序](http://www.mshxw.com/aiimages/31/926065.png)
