0
What are the contents of the CCR and D3 after the following instructions sequence executes? Perform the calculation by hand and show your work.

MOVE.B    #7,D3
CMPI.B    #11,D3

我知道 D3 寄存器的内容将保持不变,因为我不确定如何进行计算以获取 ccr 标志。

有人可以告诉我你是如何计算的,以及设置了哪些标志以及原因。我真的很难理解这一点。

4

1 回答 1

1

D3将不会被 改变CMPI,但它的低字节当然是7由于MOVE. (感谢@unwind 指出这一点。)

指令集参考将告诉您CMPI通过从第二个操作数中减去第一个操作数来工作。也说Xflag不受影响,其他的根据结果设置如下:

  • N: 7-11 < 0, 所以N=1
  • Z: 7-11 != 0, 所以Z=0
  • V: 7-11=-4,这在有符号数字的范围内,V=0
  • C: 7-11=-4, 超出无符号数的范围, C=1.

这些是标志的人工版本,cpu 实际上使用按位逻辑:

  • N: 结果的最高位。在 2 的补码表示中,负数具有 MSB 集。
  • Z: 只是NAND所有结果位的位。Z=1如果所有位都为零。
  • V: 这个很麻烦。V=(-R7)*(-A7)*B7+R7*A7*(-B7)R7作为结果的 MSB,A7以及B7两个操作数的 MSB。这意味着如果从正数中减去负数会得到负数,或者如果从负数中减去正数会得到正数,则会出现有符号溢出。
  • C:减法的最后进位,又名。第 9 位。
于 2014-10-17T13:03:31.767 回答