对于将其做出的第二个Z80 DAA问题表示歉意 - 我现在已经实施了此指令,但是我不确定一件事吗? Z80手册说“请参阅说明”,但仅在执行DAA之前就提到了旗帜。

我将标志设置为如下:

如果结果为负(0x80&结果等于0x80),则设置z,如果结果为零h(不确定此问题,那么z如果修改了原始累加器值的较高的鼻子,则设置C设置C

除此之外,指令似乎按照我的期望表现出色:-)我希望有人可以为我清除这一点,非常感谢。

有帮助吗?

解决方案

这是一个很好的问题。是的,H Flag的行为没有清楚地记录在案 DAA.

如果a的较低的nibble(最低显着四位)是一个非碱基10数(大于9,例如a,b,c,d,e或f) 或者 设置了H标志,将6添加到寄存器中。这意味着即使较低的鼻子在0-9范围内,您也可以通过设置H标志强制将6施加到寄存器中。

当涉及到您的问题时,H旗 通常 在我的经验中仍然没有受到影响,但是您不能依靠这一点,因为说“效果是非标准”,这意味着H Flag可能会改变或根据情况不会改变。在这种情况下,您应该始终认为H标志受到 DAA 执行后的说明即使您认为在测试中不受影响。

其他提示

我只能找到 这里 DAA修改了半携带/借用标志。

我建议将此标志完全设置为X86 CPU上的DAA和DAS说明设置的AF(辅助携带)标志。我认为没有理由在i8080/i8085/z80和i8086的daa/das之间进行操作有任何差异。

如果X86 DAA/DAS将AF设置为1,如果将AF调整为6的最低4位。如果不调整它们,则将其重置为0。

请参阅Intel(或AMD)X86 CPU手册中的DAA和DAS的伪代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top