汇编指令-CMP、TEQ(5)

 cmp:(compare)指令进行比较两个操作数的大小 

格式: cmp oprd1,oprd2

比较oprd1和oprd2操作数,然后通过助记符来实现想要的判断。

teq: (test equal)测试相等,该指令通常用于比较操作数1和操作数2是否相等。

格式: teq oprd1,oprd2
TEQ指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新CPSR中条件标志位的值。该指令通常用于比较操作数1和操作数2是否相等。(EOR指令也是实现异或运算,只是不更新CPSR)

 cmp和teq助记符如下

 

助记符

含    义

EQ

相等equal

NE

不相等not equal

CS

无符号数大于或等于Carry Set

CC

无符号数小于

MI

负数minus

PL

正数或零plus

VS

溢出

VC

没有溢出

HI

无符号数大于high

LS

无符号数小于或等于less

GE

带符号数大于或等于

LT

带符号数小于less than

GT

带符号数大于great than

LE

带符号数小于或等于

AL

无条件执行all

 

cmp使用实例实例1:

CMP  R0, R1  ;                                        R0与R1比较,做R0-R1的操作

ADDHI  R0, R0, #1  ;                               若R0 > R1, HI为真,则R0 = R0 + 1

ADDLS  R1, R1, #1  ;                              若R0 <= R1, LS为真,则R1 = R1 + 1

cmp使用实例实例2:

adr r0, _start  
ldr r1, _TEXT_BASE 
cmp r0, r1                                                           r0与r1比较,做r0-r1的操作
blne cpu_init_crit                                                若ne(r0地址与r1地址不相等)为真,执行bl cpu_init_crit  跳转    

     

teq使用实例实例1:

teq r0, r1                                                               R0与R1是否相等               
ADDeq  R0, R0, #1  ;                                          若R0 == R1, eq为真,则R1 = R1 + 1

                

原文地址:https://www.cnblogs.com/lifexy/p/7183676.html