在汇编中添加了两位小数,但结果是十六进制
added two decimals in assembly, but result is hexadecimal
您好,我只想在汇编中添加两位小数,例如:
org 1000
mov ax,08H
mov bx,05H
add bx,ax
hlt
但是bx寄存器中的结果是000D,我想在寄存器中看到0013(十进制)。更有趣的是,当我尝试使用更高数字的相同代码时,我可以获得十进制结果:
org 1000
mov ax,52H
mov bx,12H
add bx,ax
hlt
编译第二个代码后,我在 bx 寄存器中看到 0064,但是第一个代码的结果是十六进制的。我该如何解决这个问题
谢谢
要解决您的第一个问题,您应该将总和放入 AL 寄存器中。
mov bl,8
mov al,5
add al,bl
aaa
aad 16 ; --> AL contains 0013(decimal)
第二个问题可以通过先计算十分位(将 AL 存储在一个额外的寄存器中),然后计算单位,然后将两者与另一个 aad 16
组合来解决。
如果您的汇编器不知道指令aad 16
,您可以用db 0D5h,10h
代替它
我忽略了一个对这两个问题都适用的更好的解决方案!
mov bl,8
mov al,5
add al,bl
daa ; --> AL contains 0013(decimal) CF=0
mov bl,52h
mov al,12h
add al,bl
daa ; --> AL contains 0064(decimal) CF=0
mov bl,52h
mov al,19h
add al,bl
daa ; --> AL contains 0071(decimal) CF=0
mov bl,52h
mov al,59h
add al,bl
daa ; --> AL contains 0011(decimal) CF=1 --> 0111(decimal)
您好,我只想在汇编中添加两位小数,例如:
org 1000
mov ax,08H
mov bx,05H
add bx,ax
hlt
但是bx寄存器中的结果是000D,我想在寄存器中看到0013(十进制)。更有趣的是,当我尝试使用更高数字的相同代码时,我可以获得十进制结果:
org 1000
mov ax,52H
mov bx,12H
add bx,ax
hlt
编译第二个代码后,我在 bx 寄存器中看到 0064,但是第一个代码的结果是十六进制的。我该如何解决这个问题
谢谢
要解决您的第一个问题,您应该将总和放入 AL 寄存器中。
mov bl,8
mov al,5
add al,bl
aaa
aad 16 ; --> AL contains 0013(decimal)
第二个问题可以通过先计算十分位(将 AL 存储在一个额外的寄存器中),然后计算单位,然后将两者与另一个 aad 16
组合来解决。
如果您的汇编器不知道指令aad 16
,您可以用db 0D5h,10h
我忽略了一个对这两个问题都适用的更好的解决方案!
mov bl,8
mov al,5
add al,bl
daa ; --> AL contains 0013(decimal) CF=0
mov bl,52h
mov al,12h
add al,bl
daa ; --> AL contains 0064(decimal) CF=0
mov bl,52h
mov al,19h
add al,bl
daa ; --> AL contains 0071(decimal) CF=0
mov bl,52h
mov al,59h
add al,bl
daa ; --> AL contains 0011(decimal) CF=1 --> 0111(decimal)