[MSP430 16 位]
0x437c mov[.b] #-1, r12
0x926c cmp[.b] #4, r12
0x2801 jlo 0xda36
谁能帮我用二进制计算(cmp[.b] #4, r12)?
示例:r12-#4= 1111111111111111 - 0100 @@? 我不知道如何在无符号和有符号的情况下用二进制计算 cmp。
有符号和无符号减法之间没有任何变化。改变的是你使用什么样的跳跃:JLO 或 JL。JL 和 JGE 用于有符号比较。JLO 和 JHS 用于无符号比较。因此,在您的情况下,您使用的是无符号比较,并且 jlo 不会跳转到 0xda36,因为 CMP 将设置进位位。请注意,JLO 是 JNC 的别名(如果没有进位则跳转)。
要手动计算减法,您可以将其转换为第一个加数加上第二个加数的一个补码 + 1 的总和。因此,在您的情况下,您有:
0xFFFF - 0x0004 =
0xFFFF + 0xFFFB + 1 = //carry is set
0xFFFB