CMP后会设置进位标志吗?

问题描述

(MSP430 16位)

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

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

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

解决方法

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

语法
CMP src,dstCMP.W src,dst

说明
从目标操作数中减去源操作数。 […] 这两个操作数不受影响,并且不存储结果。仅状态位受影响。

状态位
[…]
C:设置结果是否有最高位进位,否则复位

因此,如果从零中减去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