Assembly 8085汇编中4位加法的十进制调整

Assembly 8085汇编中4位加法的十进制调整,assembly,decimal,addition,digit,Assembly,Decimal,Addition,Digit,我尝试在加法后进行小数调整,创建一个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位小数。 我看到
daa
命令存在,但它只调整
al
,而我需要将整个
ax
从十六进制调整为十进制

例如:

mov ax, 9876h
mov bx, 5432h
add ax, bx
将导致
ax
寄存器中出现ECA8。我想要的转换后的答案类似于
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

如果有第五个数字的结转,则将设置
CF

我没有在8085汇编中编程,但您的代码在我看来是8086汇编,而不是8085汇编。那么你的目标是8086而不是8085?