- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案
文档
四、ARM7指令集(只看了ARM指令)
(一)说明
1.处理器指令都是助记符,代表了一串二进制代码。
2.指令LDMIA R5, {R2,R7,R8} ;是多寄存器寻址方式,意思是把R5中的数据作为地址,把这个地址的数据赋给R2,把R5的下一个地址的数据赋给R7,在把下一个地址的数据赋给R8,是一条无条件执行指令。
3.ARM指令特点:
4.指令可选后缀
(1)S后缀
(2)!后缀
!后缀的含义:在指令的地址表达式中含有!后缀时,指令执行后,基址寄存器中的地址将发生变化,变化结果为:
基址寄存器中的地址值(指令执行后)=指令执行前的值+地址偏移量
举例:LDMIA R3,[R0,#04]! ;R3←[R0+#04],使用!后缀
B后缀
(4)T后缀
T后缀是一个很特殊的可选后缀,含义:指令在特权模式下对存储器的访问,将被存储器看成是用户模式的访问。
(5)条件后缀
在CPSR镇南关存放这条件标志位,他们反映了指令执行结果的某些特征,如两个数据比较结果是否相等,相加是否溢出等,在判断时,都要用到这些条件标志位,条件标志位往往引起程序分支。
例:
(二)指令集
ARM数据传送指令(存储器访问指令)
以ARM为核的单片机结构中,所有的外围模块(片内)都和存储单元一样,是ARM的不同地址单元,无论这些模块的功能如何(通信,输入输出,定时器,存储器等),也无论这些模块的位置在片内还是片外,ARM处理器都把它们视为外部存储器。其操作和对存储器操作是相同的。
ARM处理器的数据传送指令只针对存储器,所以也可叫存储器访问指令。
把寄存器到存储器传送叫存储,把数据从存储器到寄存器的传送叫加载,ARM只有两种数据传送:存储和加载。
举例:
其中LDR指令是把数据从外部存储器传送到内部寄存器的指令, 也叫加载指令; STR指令是把数据从内部寄存器传送到外部存储器的指令,也称为存
使用语句标号,使用语句标号是寻址是一种简单有效的寻址方法,注意PC作用
(1)从寄存器到存储器的情况,一个字节的传送只能传送最低一个字节,如果要存储其他字节就需要移位操作,但是寄存器是32位结构,所以实际上有32位数据进入数据总线,只是把最低字节拷贝4次,这样四个字节都是一样的。在进行字节传送时,要弄清楚存储器是否有单字节接受能力。
(2)从存储器到寄存器的加载过程
从存储器读出数据时,也是32位数据,ARM处理器执行指令时,把所选择的传送字节放在低8位,其余的用0填充。
大端方式和小端方式
注意:
(1) 指令的代码代表的是此助记符所表达的二进制是什么,了解这些有助于汇编调试。
(2) 数据传送指令基本的就是LDR和STR然后再加上后缀后会衍生出很多。在相对寻址中的相对偏移时,如STR R4,SRART 含义就是把R4中的数据存储到标号指向的地址单元中去,如果标号是程序所使用的一个标号,那么此语句的含义就是修改标号所指向的程序,是无法执行的指令,因此,在使用相对偏移存储指令时,一要注意语句标号不能指向程序存储器的程序存储区,要指向程序存储器的数据存储区和数据存储器的数据存储区。二是所指向的区域是可修改的,如用户模式下,有些存储区是不能访问或是只读的。
(3) 对语句LDR R4,START+0X4000,是一条错误的指令,因为程序相对偏移规定不得超过±4096字节。
分支指令
1.分支指令B和分支连接指令BL
程序简单跳转使用分支指令B;在需要保存跳转地址时,使用分支链接指令BL。
指令格式:
B[Cond] 偏移表达式
BL[Cond] 偏移表达式
说明:
其中[Cond]是可选条件后缀,使用不受到限制。
跳转的范围是±32M地址
在执行跳转指令时,处理器并不保存状态寄存器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(只是在寄存器之间传和前面一种指令有区别)P1
文档评论(0)