msp430进位

Carry bit in msp430

我正在为微控制器 msp430 编写模拟器。我不明白什么时候应该设置进位。例如在 add 指令中: 1+0x7FFF设置进位还是1+0xFFFF

有两个不同的指令实现了 <、JL(小于则跳转)和 JLO(小于则跳转)。

JL 的文档说它

allows comparison of signed integers.

JLO 的文档说它

is used for the comparison of unsigned numbers.

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

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

您可以从 TI documents. In particular, the second example in the documentation of ADD instruction (page 3-22 中的示例中推断出如果结果大于 0xff(对于 ADDADDA 限制分别为 0xffff0xfffff - 8、16 和 20 位):

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

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

至少有几个现有的 open-source MSP430 仿真器,即 mspsim 和 Avrora。我建议将它们用作参考实现。