如何在程序集 4 中小数调整 8085 位数字加法



我正在尝试在添加创建 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

最新更新