用汇编语言将32位16进制数转换成10进制数,怎么办?
来源:百度知道 编辑:UC知道 时间:2024/06/29 01:06:48
我告诉你思路啊,用C来编,然后反汇编,看看编译器是怎么生成代码的,嘿嘿!
去网络上找找运算子程序库,
思路:
把十六进制(比如4位)数除以10000d(十进制数,因为十进制最大是5位--65535)
如果二位十六进制数就除以100d(因为十进制最大是三位--255)
商就是十进制的最高位
再把余数除以1000d
商就是十进制的次高位
再把余数除以100d
...
除以10d
....
除以1d
...以此类推
就得到十进制数
下面是四位十六进制数转为十进制代码:
code segment
main proc far
assume cs:code
start:
call hexibin ;16-2
call crlf ;换行
call binidec ;2-10
call crlf
jmp main ;get next input
ret
main endp
hexibin proc near
mov bx,0 ;clear BX for number
newchar:
mov ah,01h ;keyboard input
int 21h ;call DOS
sub al,30h ;ASCII to binary
jl exit ;jump if<0
cmp al,10d ;is it > 9d
jl add_to ;yes,so it's digit
;not digit(0-9),may be letter(a to f)
sub al,27h ;convert ASCII to binary
cmp al,0ah ;is it <