汇编:debug下编程将十进制数12345678D转换成十六进制数;将十六12345678H进制数转换成BCD码。求代码或思

寄存器内只能存放4位,12345678有八位,该怎么办?
debug貌似不支持386指令集...所以,32位除法用不了。

-e102 '12345678' 0 0 0 0
-a10e
0AF4:010E lea si,[102]
0AF4:0112 mov cx,7
0AF4:0115 cld
0AF4:0116 lodsb
0AF4:0117 and ax,f
0AF4:011A add [10a],ax
0AF4:011E adc word ptr [10c],0
0AF4:0123 clc
0AF4:0124 rcl word ptr [10a],1
0AF4:0128 rcl word ptr [10c],1
0AF4:012C mov ax,[10a]
0AF4:012F mov dx,[10c]
0AF4:0133 clc
0AF4:0134 rcl ax,1
0AF4:0136 rcl dx,1
0AF4:0138 clc
0AF4:0139 rcl ax,1
0AF4:013B rcl dx,1
0AF4:013D add [10a],ax
0AF4:0141 adc [10c],dx
0AF4:0145 loop 116
0AF4:0147 lodsb
0AF4:0148 and ax,f
0AF4:014B add [10a],ax
0AF4:014F adc word ptr [10c],0
0AF4:0154 jmp 162
0AF4:0156
-e156 78 56 34 12 0 0 0 0 0 0 0 0
-a162
0AF4:0162 lea si,[159]
0AF4:0166 lea di,[15a]
0AF4:016A mov cx,4
0AF4:016D mov al,[si]
0AF4:016F dec si
0AF4:0170 xor ah,ah
0AF4:0172 push cx
0AF4:0173 mov cx,4
0AF4:0176 shl ax,cl
0AF4:0178 shr al,cl
0AF4:017A xchg ah,al
0AF4:017C stosw
0AF4:017D pop cx
0AF4:017E loop 16d
0AF4:0180
-g180

AX=0807 BX=0000 CX=0000 DX=0096 SP=FFEE BP=0000 SI=0155 DI=0162
DS=0AF4 ES=0AF4 SS=0AF4 CS=0AF4 IP=0180 NV UP EI PL NZ NA PO NC
0AF4:0180 D0E8 SHR AL,1
-d102 lc
0AF4:0100 31 32 33 34 35 36-37 38 4E 61 BC 00 12345678Na..
-d156 lc
0AF4:0150 78 56-34 12 01 02 03 04 05 06 xV4.......
0AF4:0160 07 08 ..
-q
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-01
要用到32位的乘除法。
-------
不能直接应用乘除法的指令,要编写程序,完成较大数字的乘除法运算。
相似回答