抱歉让我成为我的第二个Z80 DAA问题 - 我现在已经实现了这个指令,但有一点我不确定 - 这个指令设置的是H标志吗?Z80手册中说"看到指令",但它只在DAA之前提到标志,而不是在执行之后.
我设置标志如下:
如果结果为负,则设置S(0x80&结果等于0x80)如果结果为零,则设置Z(不确定因此问题)P/V设置为结果的奇偶校验(如果是偶数则为1,如果为奇数则为0)N如果原始累加器值的高半字节被修改,则设置为C
除此之外,指令似乎按照我的预期执行:-)我希望有人可以为我清除这一点,非常感谢.
这是一个好问题。是的,H 标志的行为没有明确记录,因为它的行为不符合DAA.
如果 A 的低半字节(最低有效四位)是非基数 10 数字(大于 9,如 A、B、C、D、E 或 F)或设置了 H 标志,则将 6 添加到寄存器中。这意味着即使低半字节在0-9范围内,您也可以通过设置H标志强制将6添加到A寄存器。
当谈到你的问题时,根据我的经验,H 标志通常保持不变,但你不能依赖它,因为据说“效果是非标准的”,这意味着 H 标志可能会根据情况改变或可能不会改变。在这种情况下,您应该始终认为 H 标志DAA在执行后受到指令的影响,即使您在测试中看到它不受影响。
| 归档时间: |
|
| 查看次数: |
1526 次 |
| 最近记录: |