必须知道的ARM指令集 - 图文(2)

2020-03-27 02:11

1.ARM 数据处理指令 数据处理指令大致可分为3类:

数据传送指令,算术逻辑运算指令,比较指令

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

MOV指令将立即数或寄存器传送到目标寄存器(Rd),可用于移位运算等操作。指令格式如下: MOV{cond}{S} 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指令将8位图立即数或寄存器(operand2)按位取反后传送到目标寄存器(Rd),因为其具有取反功能,所以可以装载范围更广的立即数。指令格式如下: MVN{cond}{S} Rd,operand2 MVN指令举例如下:

MVN R1,#0xFF ;R1=0xFFFFFF00

MVN R1,R2 ;将R2取反,结果存到R1 (2)算术运算

其中,红线框内的必须掌握。

A、加法运算指令——ADD指令将operand2的值与Rn的值相加,结果保存到Rd寄存器。

指令格式如下: ADD{cond}{S} Rd,Rn,operand2 应用示例:

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

B.减法运算指令——SUB指令用寄存器Rn减去operand2,结果保存到Rd中。

指令格式如下: SUB{cond}{S} Rd,Rn,operand2 应用示例:

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

C.逆向减法运算指令——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

D. 带进位加法指令——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位相加,并加上低位进位

E.带进位减法指令——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位相减,并减去低位借位

F. 带进位逆向减法指令——RSC指令用寄存器operand2减去Rn,再减去CPSR中的C条件标志位,结果保存到Rd中。 指令格式如下: RSC{cond}{S} Rd,Rn,operand2 应用示例(使用RSC指令实现求64位数值的负数 ):

RSBS R2,R0,#0 RSC R3,R1,#0 (3)逻辑运算指令

A. 逻辑与操作指令——AND指令将operand2的值与寄存器Rn的值按位作逻辑“与”操作,结果保存到Rd中。

指令格式如下: AND{cond}{S} Rd,Rn,operand2

应用示例:

ANDS R0,R0,#0x01 ;R0=R0&0x01,取出最低位数据 AND R2,R1,R3 ;R2=R1&R3

B. 逻辑或操作指令——ORR指令将operand2的值与寄存器Rn的值按位作逻辑“或”操作,结果保存到Rd中。

指令格式如下: ORR{cond}{S} Rd,Rn, operand2 应用示例:

ORR R0,R0,#0x0F ;将R0的低4位置1 MOV R1,R2,LSR #24 ;使用ORR指令将R2的高8位 ORR R3,R1,R3,LSL #8 ;数据移入到R3低8位中

C.逻辑异或操作指令——EOR指令将operand2的值与寄存器Rn的值按位作逻辑“异或”操作,结果保存到Rd中。

指令格式如下: EOR{cond}{S} Rd,Rn, operand2 应用示例:

EOR R1,R1,#0x0F ;将R1的低4位取反 EOR R2,R1,R0 ;R2=R1^R0

EORS R0,R5,#0x01 ; 将R5和0x01进行逻辑异或,;结果保存到R0,并影响标志位

D.位清除指令——BIC指令将寄存器Rn的值与operand2的值的反码按位作逻辑“与”操作,结果保存到Rd中。

指令格式如下: BIC{cond}{S} Rd,Rn, operand2 应用示例:

BIC R1,R1,#0x0F ;将R1的低4位清零,其它位不变

BIC R1,R2,R3 ;将R3的反码和R2相逻辑“与”,;结果保存到R1中 (4)比较指令

A.比较指令——CMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。


必须知道的ARM指令集 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:cvs的功能介绍

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: