【问题标题】:will carry flag be set after CMP?CMP后会设置进位标志吗?
【发布时间】:2020-11-10 05:33:25
【问题描述】:

(MSP430 16 位)

CLR[.W]   R14 
CMP[.W]   #0x0200, R14 
JC        #1234

我怎么知道是否会设置进位标志?

CMP[.W] #0x0200, R14可以设置进位标志吗?

【问题讨论】:

标签: unsigned msp430 cmp carryflag


【解决方案1】:

查看文档会有所帮助。
MSP430x2xx Family User's Guide 的第 3.4.6.14 节说:

语法
CMP src,dstCMP.W src,dst

说明
从目标操作数中减去源操作数。 […] 两个操作数不受影响,结果不存储;只有状态位受到影响。

状态位
[…]
C:如果结果的MSB有进位则置位,否则复位

因此,如果从零中减去 0x200 需要进位,则会设置进位标志。

进位标志的这个含义在 JC/JHS 的文档中的 3.4.6.24 节中有更清楚的说明:

说明
[…] JC(如果进位/更高或相同则跳转)用于比较无符号数(0 到 65536)。

示例
R5 与 15 比较。如果内容更高或相同,则跳转到 LABEL。

CMP #15,R5
JHS LABEL    ; Jump is taken if R5 >= 15
......       ; Continue here if R5 < 15

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多