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
?
user3191398
问问题
1253 次
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 仿真器,即mspsim
Avrora。我建议将它们用作参考实现。
于 2016-01-24T10:12:47.617 回答