1

I am writing simulator to microcontroller msp430. I cant understand when i should set carry bit. For example in add instruction: 1+0x7FFF setting carry bit or 1+0xFFFF?

4

2 回答 2

0

有两个不同的指令来实现<,JL(如果小于则跳转)和 JLO(如果小于则跳转)。

JL 的文档说它

允许比较有符号整数。

JLO 的文档说它

用于无符号数的比较。

JLO 与 JNC 相同,因此 C 是无符号进位。

于 2016-01-24T09:08:12.793 回答
0

对于该ADD指令,进位位在无符号溢出时设置。

您可以从TI 文档中的示例中推断出这一点。特别是,ADD指令文档中的第二个示例(第 3-22 页)表示,ADD.B如果结果大于0xff(并且ADD限制ADDA分别为 8、16 和 20 位),0xffff则进行进位:0xfffff

ADD.B           #10,R5     ; Add 10 to Lowbyte of R5
JC TONI                    ; Carry occurred, if (R5)  ≥  246 [0Ah+0F6h]
......                     ; No carry

除了进位位之外,msp430 状态寄存器中还有一个 NEGATIVE 位这一事实证实了这一点。

至少有几个现有的开源 MSP430 仿真器,即mspsimAvrora。我建议将它们用作参考实现。

于 2016-01-24T10:12:47.617 回答