ARM指令集学习总结材料.docx
- 文档编号:5858054
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:17
- 大小:1.75MB
ARM指令集学习总结材料.docx
《ARM指令集学习总结材料.docx》由会员分享,可在线阅读,更多相关《ARM指令集学习总结材料.docx(17页珍藏版)》请在冰豆网上搜索。
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位嵌入式系统入门)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 指令 学习 总结 材料