0

我正在尝试在创建 4 位小数后进行小数调整。我看到该daa命令存在,但只调整了al我需要将整个ax调整为从十六进制到十进制的时间。

例如:

mov ax, 9876h
mov bx, 5432h
add ax, bx

将导致ax寄存器中的 ECA8。我想要的转换后的答案类似于ax寄存器中的 5308,带有一个进位标志,指定完整答案中 5 之前的那个 (15308)

DAA只影响al而不是ax,是否有其他命令可以执行此操作或执行此操作的简单方法?(我也在寻找减法的想法,因为DAS也只会影响al

4

1 回答 1

0

由于原始示例是针对 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

如果CF有第 5 位结转,将被设置。

于 2013-11-09T04:11:02.480 回答