68000汇编语言 - CMPI.B

时间:2014-10-17 10:58:46

标签: assembly 68000

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标志。

可以somone请告诉我你是如何做到这一点的计算方法,以及为什么要设置标志。我真的很难理解这一点。

1 个答案:

答案 0 :(得分:1)

D3将由CMPI保持不变,但由于7,其低字节当然为MOVE。 (感谢@unwind指出这一点。)

指令集引用将告诉您CMPI通过从第二个操作数中减去第一个操作数来工作。它还说X标志不受影响,其他标志根据结果设置如下:

  • N7-11 < 0,所以N=1
  • Z7-11 != 0,所以Z=0
  • V7-11=-4,这是有符号数字的范围,V=0
  • C7-11=-4,超出了无符号数范围C=1

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

  • N:结果中最重要的一点。在2的补码表示中,负数具有MSB集。
  • Z:只是所有结果位的NAND。如果所有位都为零,则Z=1
  • V:这个很棘手。 V=(-R7)*(-A7)*B7+R7*A7*(-B7)R7是结果的MSB,A7B7两个操作数的MSB。这意味着,如果从正数减去负数给出负数,或者如果从负数中减去正数,则表示有符号溢出。
  • C:减法的最终结果,又名。第9位。