ARM汇编 - (3) ARM数据处理指令

本文介绍了ARM的数据处理指令,包括数据传送、运算和比较指令。数据处理指令只能操作寄存器内容,部分指令可加S后缀影响CPSR标志。还阐述了ARM指令集基本格式,以及第2个操作数的不同形式,同时说明了各类指令对标志位的影响。

By:Ailson Jack

Date:2016.04.14

个人博客:www.only2fire.com

本文在我博客的地址是:http://www.only2fire.com/archives/69.html,排版更好,便于学习。

ARM的数据处理指令大致可以分为3类:数据传送指令,运算指令,比较指令。

       数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据传送或算术逻辑运算指令均可选择使用S后缀,以使指令影响CPSR中的标志。

1ARM指令集-基本指令格式

ARM是三地址指令格式,指令的基本格式如下:

<opcode>  {<cond>}  {S}  <Rd> ,<Rn>{,<operand2>}

其中<>号内的项是必须的,{} 号内的项是可选的。各项的说明如下:

opcode:指令助记符;

cond:执行条件;

S:是否影响CPSR寄存器的值;

Rd:目标寄存器;

Rn:第1个操作数的寄存器;

operand2:第2个操作数;

灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式:

1)、#immed_8r——常数表达式:

如:ADD R0, R1, #3 ;R0 = R1 + 3

2)、Rm——寄存器方式:

如:SUB R0, R1, R2 ;R0 = R1 – R2

3)、Rm,shift——寄存器移位方式:

如:ADD R0, R1, R2, LSL, #3 ;R0 = R1 + R2<<3

2、数据传送指令

       ARM的数据传送指令有两条,如下所示:

注:当后缀有S时,这些指令根据结果更新标志N和Z,在计算Operand2时更新标志C,不影响标志V。

3、运算指令

1)、算术运算指令

注:当后缀有S时,这些指令根据结果更新标志N、Z、C、V。

2)、逻辑运算指令

注:当后缀有S时,这些指令根据结果更新标志N和Z,在计算Operand2时更新标志C,不影响标志V。

4、比较指令

注:这些指令直接影响N,Z,C和V标志位(不需要加后缀S)。

       MOV R0, #3

CMN R0, #-2 ;Z=0

CMN R0, #-3 ;Z=1

       CMN可以理解为,判断两个数是否互为相反数。

排版更好的内容见我博客的地址:http://www.only2fire.com/archives/69.html

 注:转载请注明出处,谢谢!^_^

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackailson

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值