我正在尝试在添加创建 4 位小数后进行十进制调整。我看到 daa
命令存在,但这只会调整al
,而我需要将整个ax
调整为从十六进制调整到十进制。
例如:
mov ax, 9876h
mov bx, 5432h
add ax, bx
将导致 ECA8 出现在ax
寄存器中。我想要的转换后的答案类似于 ax
寄存器中的 5308,带有一个进位标志,指定完整答案中 5 之前的那个 (15308)
DAA
只影响al
而不是ax
,是否有其他命令可以执行此操作或简单的方法来执行此操作?(我也在寻找减法的想法,因为DAS
也只影响al
)
由于原始示例是针对 8086 的,因此我将使用该指令集显示答案。同样的原则也适用于 8085。没有等效于对双字节值进行操作的daa
指令。因此,您必须拆分操作:
mov al, 76h
add al, 32h
daa
mov bl, al
jnc skip
mov bh, 1
skip:
mov al, 98h
add al, 54h
daa
add bh, al
如果有第 5 位数字结转,将设置CF
。