将在 cmp[.b] #4, #-1 之后设置进位标志? [MSP430 16 位]

will carry flag be set after cmp[.b] #4, #-1 ? [MSP430 16 bit]

[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