ARM数据处理指令——比较指令
助记符 | 说明 | 操作 | 条件码位置 |
---|---|---|---|
CMP Rn, operand2 | 比较指令 | 标志N、Z、C、V<-Rn-operand2 | CMP{cond} |
CMN Rn,operand2 | 负数比较指令 | 标志N、Z、C、V<-Rn+operand2 | CMN{cond} |
TST Rn,operand2 | 位测试指令 | 标志N、Z、C、V<-Rn&operand2 | TST(cond) |
TEQ Rn,operand2 | 相等测试指令 | 标志N、Z、C、V<-Rn^operand2 | TEQ(cond) |
比较指令——CMP
比较指令——CMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。
指令格式如下:
CMP{cond}{S} Rn, operand2
应用示例:
CMP R1,#10 ;R1与10比较,设置相关标志位
CMP R1,R2 ;R1与R2比较,设置相关标志位
注意:CMP指令与SUBS指令的区别在于CMP指令不保存运算结果。在进行两个数据的大小判断时,常用CMP指令及相应的条件码来操作。
负数比较指令——CMN
负数比较指令