(十进制转化成二进制,二进制再转换成十六进制的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中。