ARM指令集学习总结材料.docx

上传人:b****6 文档编号:5858054 上传时间:2023-01-01 格式:DOCX 页数:17 大小:1.75MB
下载 相关 举报
ARM指令集学习总结材料.docx_第1页
第1页 / 共17页
ARM指令集学习总结材料.docx_第2页
第2页 / 共17页
ARM指令集学习总结材料.docx_第3页
第3页 / 共17页
ARM指令集学习总结材料.docx_第4页
第4页 / 共17页
ARM指令集学习总结材料.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

ARM指令集学习总结材料.docx

《ARM指令集学习总结材料.docx》由会员分享,可在线阅读,更多相关《ARM指令集学习总结材料.docx(17页珍藏版)》请在冰豆网上搜索。

ARM指令集学习总结材料.docx

ARM指令集学习总结材料

四、ARM7指令集(只看了ARM指令)

(一)说明

1.处理器指令都是助记符,代表了一串二进制代码。

2.指令LDMIAR5,{R2,R7,R8};是多寄存器寻址方式,意思是把R5中的数据作为地址,把这个地址的数据赋给R2,把R5的下一个地址的数据赋给R7,在把下一个地址的数据赋给R8,是一条无条件执行指令。

3.ARM指令特点:

4.指令可选后缀

(1)S后缀

(2)!

后缀

后缀的含义:

在指令的地址表达式中含有!

后缀时,指令执行后,基址寄存器中的地址将发生变化,变化结果为:

基址寄存器中的地址值(指令执行后)=指令执行前的值+地址偏移量

举例:

LDMIAR3,[R0,#04]!

;R3←[R0+#04],使用!

后缀

(1)B后缀

(4)T后缀

T后缀是一个很特殊的可选后缀,含义:

指令在特权模式下对存储器的访问,将被存储器看成是用户模式的访问。

(5)条件后缀

在CPSR镇南关存放这条件标志位,他们反映了指令执行结果的某些特征,如两个数据比较结果是否相等,相加是否溢出等,在判断时,都要用到这些条件标志位,条件标志位往往引起程序分支。

例:

 

(二)指令集

ARM数据传送指令(存储器访问指令)

以ARM为核的单片机结构中,所有的外围模块(片内)都和存储单元一样,是ARM的不同地址单元,无论这些模块的功能如何(通信,输入输出,定时器,存储器等),也无论这些模块的位置在片内还是片外,ARM处理器都把它们视为外部存储器。

其操作和对存储器操作是相同的。

ARM处理器的数据传送指令只针对存储器,所以也可叫存储器访问指令。

把寄存器到存储器传送叫存储,把数据从存储器到寄存器的传送叫加载,ARM只有两种数据传送:

存储和加载。

举例:

其中LDR指令是把数据从外部存储器传送到内部寄存器的指令,也叫加载指令;STR指令是把数据从内部寄存器传送到外部存储器的指令,也称为存

使用语句标号,使用语句标号是寻址是一种简单有效的寻址方法,注意PC作用

(1)从寄存器到存储器的情况,一个字节的传送只能传送最低一个字节,如果要存储其他字节就需要移位操作,但是寄存器是32位结构,所以实际上有32位数据进入数据总线,只是把最低字节拷贝4次,这样四个字节都是一样的。

在进行字节传送时,要弄清楚存储器是否有单字节接受能力。

(2)从存储器到寄存器的加载过程

从存储器读出数据时,也是32位数据,ARM处理器执行指令时,把所选择的传送字节放在低8位,其余的用0填充。

(2)大端方式和小端方式

注意:

(1)指令的代码代表的是此助记符所表达的二进制是什么,了解这些有助于汇编调试。

(2)数据传送指令基本的就是LDR和STR然后再加上后缀后会衍生出很多。

在相对寻址中的相对偏移时,如STRR4,SRART含义就是把R4中的数据存储到标号指向的地址单元中去,如果标号是程序所使用的一个标号,那么此语句的含义就是修改标号所指向的程序,是无法执行的指令,因此,在使用相对偏移存储指令时,一要注意语句标号不能指向程序存储器的程序存储区,要指向程序存储器的数据存储区和数据存储器的数据存储区。

二是所指向的区域是可修改的,如用户模式下,有些存储区是不能访问或是只读的。

(3)对语句LDRR4,START+0X4000,是一条错误的指令,因为程序相对偏移规定不得超过±4096字节。

分支指令

1.分支指令B和分支连接指令BL

程序简单跳转使用分支指令B;在需要保存跳转地址时,使用分支链接指令BL。

指令格式:

B[Cond]偏移表达式

BL[Cond]偏移表达式

说明:

(1)其中[Cond]是可选条件后缀,使用不受到限制。

(2)跳转的范围是±32M地址

(3)在执行跳转指令时,处理器并不保存状态寄存器CPSR。

2.分支和交换指令BX

在ARM指令集和THUMB指令集之间进行程序跳转时,,使用分支和交换指令BX。

指令格式:

BX[Cond]Rn

 

ARM数据处理指令

1.注意

(1)ARM处理器的数据处理指令和外部存储器无关,而只涉及寄存器和立即数,也就是说数据处理指令是内部寄存器之间实现的的。

(2)前面的所有外部存储器的寻址方式,都不适用。

(3)一般采用寄存器寻址

(4)其中的数据传送指令只是内部寄存器之间的数据传送。

(5)数据处理指令和数据传送指令不同,数据处理指令大部分都会影响条件标志。

 

数控位移位方式,就是使用数值常量控制移位位数,另一种就是寄存器控位移位方式,就是使用一个寄存器控制移位位数。

注意第二操作数规范是一个8位的无符号数值常量,用0填充到32位后,循环右移偶次后得到的32位数值,例如下:

2.ARM数据处理指令详述

(1)数据传送指令MOV和MVN(只是在寄存器之间传和前面一种指令有区别)P116

(2)加法指令ADD、减法指令SUB、反减法指令RSB、带进位加法指令ADC、带借位减法指令SBC、带借位反减法指令RSC

P118

其中指令SUBNES就使用了后缀NE和后缀S,注意第二操作数规范并且必须要有第二操作数。

(4)比较和测试指令CMP、CMN、TEQ、和TST

P120

注意没有目标寄存器,在这些指令中不需要S后缀,也会刷新程序标志位,不保存比较结果。

(5)逻辑与指令AND、逻辑或指令ORR。

逻辑异或指令EOR和位清除指令BIC

P123

注意在ARM汇编中,16进制用#0x做前缀,如#0x00FF是一个16进制数,二进制数使用#2_做前缀,如#2_00110011是一个二进制数。

(6)程序转态寄存器传送指令MRS和MSR

P127

注意在用户模式下不可以改变CPSR中的控制位[7:

0],如果是MRSR0,CPSR中不用指定位域;但是MSRSPSR(CPSR),R4这个就是错误的,没有指定位域。

(7)乘法指令MUL和乘加指令MLA

P129

(8)无符号长乘法指令UMULL和长乘加指令UMLAL,带符号长乘法指令SMULL和长乘加指令SMLAL

P131

ARM指令集中和协处理器有关的指令

1.协处理器不能独立工作的芯片,必须和CPU一起工作,用来弥补处理器不能做复杂运算的缺点。

2.ARM有专门的指令实现对协处理器的操作。

(1)协处理器数据操作指令CDP

P133

(1)协处理器数据传送指令LDC和STC

P134

(2)协处理器寄存器传送指令MRC和MCR

P136

ARM指令集中的软件中断指令

1.ARM指令集中软件中断指令是唯一一条不使用寄存器的ARM指令吗,也是一条可以条件执行的指令。

2.指令介绍

(1)软件中断指令SWI(重要)

P138(当需要软件中断时,执行软件中断指令)

ARM指令在用户迷失中受到很大的局限,有一些资源不能够访问,在需要访问这些资源时,并且要使用软件控制,那么唯一方法就是使用软件中断指令。

举例:

SWI0xFF00

SWI0

作0,此时参数是0.

 

参考资料:

(从51到ARM32位嵌入式系统入门)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1