【发布时间】:2016-09-27 15:43:45
【问题描述】:
我正在阅读一本关于 Zilog Z80 处理器的书,其中每当作者出于某种可能的原因想要清除进位位时,他都会执行以下任一操作:
XOR A
AND A
OR A
这对 F 寄存器中的 C 位有何影响?换句话说,对某个寄存器 (A) 执行操作如何影响另一个寄存器 (F)?
【问题讨论】:
-
我还是不明白你说的“如何”是什么意思。根据定义,这就是它的工作原理。这在硬件方面也不是什么奇怪的事情。
-
但这对我来说没有意义,或者我就是不明白。我的意思是,当您
LD A, 0时,它会影响 A 寄存器,而不是 B 寄存器,而不是 F 寄存器,因为这是我选择执行操作的寄存器。那么为什么XOR A是个例外呢? -
“对某个寄存器 (A) 执行操作如何影响另一个寄存器 (F)”。这是一个常见的,通常是理想的属性。
F毕竟是 flags 寄存器。例如,在执行cp之后,您可能想知道操作数是否相等(设置了 Z),在执行add之后,您可能想知道是否生成了进位,等等。 -
@Michael 哦,现在 "它如何影响另一个寄存器" 部分似乎是合乎逻辑的,尤其是您给出的第二个示例。但是在那个使用
ADD的例子中,为了在进位/借位的情况下继续执行适当的过程,接下来影响C位是下一个合乎逻辑的事情,换句话说,A之间存在关系——例如—— - 和 F。虽然在XOR A示例中它对我来说仍然没有意义,因为它们之间仍然没有关系,也许这只是我对硬件的不了解。 -
@AbdelrahmanEid 实际上,Z80 ALU 和标志寄存器之间存在关系——标志寄存器从 ALU 操作接收标志——而不是寄存器和标志寄存器之间
标签: assembly xor microprocessors z80