ARM 汇编比较指令

编程入门 行业动态 更新时间:2024-10-26 11:12:52

ARM 汇编比较<a href=https://www.elefans.com/category/jswz/34/1769074.html style=指令"/>

ARM 汇编比较指令

比较指令用来比较两个数大小,或者是否相等,比较指令的运算结果会影响CPSR寄存器的N\Z\C、V标识位,具体的标志位可以参考前面的CPSR寄存器介绍,比较指令的格式如下/

CMP {cond} Rn, operand2 比较两个数大小

CMN {cond}Rn, operand2 取负比较

 比较指令的使用示例及说明如下。

CMP R1, #10

CMP R1,R2

CMP R0, #1

   比较指令的运行结果Z=1时,表示运算结果为0,两个数相乘,N=1表示运算结果为负,N=0 表示运算结果为非负,即运算结果为正或者为零。

 3.2.6 条件执行指令

为了提高代码密度,减少ARM指令的数量, 几乎所有的ARM指令都可以根据CPSR寄存器中的标识为,通过指令组合实现条件执行,如无条件跳转指令B,我们呢可以在后面加上条件码组成BEQ,BNE组合指令,BEQ指令表示两个数比较,结果相等时跳转;BNE指令则表示结果不想等时跳转,CPSR寄存器中的标识位根据需要可以任意搭配成不同的条件码,和ARM指令一起组合使用,ARM指令的条件码如表3-3所示。

表  3-3 ARM指令的条件码

条件码

CPSR 标识位

说明

条件码

CPSR标志位

说明

EQ

Z=1

相等

HI

C置位,Z清零

无符号数大于

NE

Z=0

不相等

LS

C清零,Z置位

有符号数小于或等于

CS/HS

C=1

无符号数大于或等于

GE

N=V

有符号数大于或等于

CC/LO

C=0

无符号数小于

LT

N!=V

有符号数小于

MI

N置位

负数

GT

Z清零,N=V

有符号数大于

PL

N清零

整数或零

LE

Z置位,N!=V

有符号数小于或等于

VS

V置位

溢出

AL

忽略

无条件执行

VC

V清零

未溢出

NV

忽略

从不执行

   条件执行经常出现在跳转或循环的程序结构中。如下面的汇编程序,通过循环结构,我们可以实现数据块搬运功能,我们可以将无条件跳转指令B和条件码NE组合在一起使用。构成一个循环程序结构。

AREA COPY,CODE,READONLY

     Entry

START

     LDR R0, =SRC

     LDR R1, =DST

     MOV  R2, #10

LOOP

    LDR R3,[R0] #4

    STR R3, [R1], #4

    SUBS R2, R2, #1

    BNE  LOOP 

AREA COPYDATA, DATA, READWRITE

SRC DCD 1,2,3,4,5,6,7,8,9,0

DST DCD 0,0,0,0,0,0,0,,0,0,0,0

END

更多推荐

ARM 汇编比较指令

本文发布于:2023-11-15 20:22:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1605761.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:指令   ARM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!