用汇编语言将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 <