在msp430中携带一下

时间:2016-01-24 03:21:57

标签: msp430 carryflag

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

2 个答案:

答案 0 :(得分:0)

有两个不同的指令实现<,JL(如果更少则跳转)和JLO(如果更低则跳转)。

JL的文档说它

  

允许比较有符号整数。

JLO的文档说它

  

用于比较无符号数。

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

答案 1 :(得分:0)

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

您可以从TI documents中的示例中推断出这一点。特别是,ADD指令(page 3-22)文档中的第二个示例表明,如果结果大于ADD.B0xff,则ADD进位}和ADDA限制分别为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状态寄存器中还有一个NEGATIVE位确认了这一点。

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