ARM处理器指令系统三 数据处理指令总结

数据处理指令大致可分为3类:
1、数据传送指令;
2、算术逻辑运算指令;
3、比较指令。

数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均 可选择使用S后缀,并影响状态标志。


一 数据传送

指令格式 MOV{cond}{S} Rd,operand2

MOV Rd,operand2 数据传送

MOV指令举例如下

MOV R1,#0x10 ;R1=0x10
MOV R0,R1 ;R0=R1
MOVS R3,R1,LSL #2 ;R3=R1<<2,并影响标志位
MOV PC,LR ;PC=LR,子程序返回

指令格式 MVN{cond}{S} Rd,operand2

MVN Rd,operand2 数据非传送

MVN指令举例如下:

MVN R1,#0xFF ;R1=0xFFFFFF00
MVN R1,R2 ;将R2取反,结果存到R1


二算术运算

1、加法运算指令——ADD指令将operand2的值与Rn的值相加,结果保存到Rd寄存器。指令格式如下:
ADD{cond}{S} Rd,Rn,operand2

应用示例:

ADDS R1,R1,#1 ;R1=R1+1,并影响标志位
ADD R1,R1,R2 ;R1=R1+R2

2、减法运算指令——SUB指令用寄存器Rn减去operand2,结果保存到Rd中。指令格式如下:
SUB{cond}{S} Rd,Rn,operand2
应用示例:

SUBS R0,R0,#1 ;R0=R0-1 ,并影响标志位
SUBS R2,R1,R2 ;R2=R1-R2 ,并影响标志位

3、逆向减法运算指令——RSB指令将operand2的值减去Rn,结果保存到Rd中。指令格式如下:
RSB{cond}{S} Rd,Rn,operand2

RSB R3,R1,#0xFF00 ;R3=0xFF00-R1
RSBS R1,R2,R2,LSL #2 ;R1=(R2<<2)-R2=R2×3

4、带进位加法指令——ADC将operand2的值与Rn的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器。指令格式如下:
ADC{cond}{S} Rd,Rn,operand2
应用示例(使用ADC实现64位加法,结果存于R1、R0中):

ADDS R0,R0,R2 ;R0等于低32位相加,并影响标志位
ADC R1,R1,R3 ;R1等于高32位相加,并加上低位进位
5、带进位减法指令——SBC用寄存器Rn减去operand2,再减去CPSR中的C条件标志位的非(即若C标志清零,则结果减去1),结果保存到Rd中。指令格式如下:
SBC{cond}{S} Rd,Rn,operand2
应用示例(使用SBC实现64位减法,结果存于R1、R0中):

SUBS R0,R0,R2 ; 低32位相减,并影响标志位
SBC R1,R1,R3 ;高32位相减,并减去低位借位

6、带进位逆向减法指令——RSC指令用寄存器operand2减去Rn,再减去CPSR中的C条件标志位的非,结果保存到Rd中。指令格式如下:
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值