第4章ARM处理器指令概述汇.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章ARM处理器指令概述汇

第4章ARM处理器指令概述 本章重点 常用ARM指令 ARM汇编程序编程实例 汇编与C语言混合编程 ADS集成开发环境 本章内容 4.1 ARM 微处理器的指令的分类与格式 4.2 ARM 指令的寻址方式 4.3 常用ARM指令 4.4 汇编语言的程序结构及在ADS环境下调试 4.5 汇编语言与 C/C++的混合编程 4.1 ARM 微处理器的指令的分类与格式 ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。 ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。 4.2 ARM 指令的寻址方式 所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下几种常见的寻址方式。 4.2.1 立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下 指令: ADD R0,R0,#1 ;R0←R0+1 ADD R0,R0,#0x3f ;R0←R0+0x3f 在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”或“”。 4.2 ARM 指令的寻址方式 4.2.2 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令: ADD R0,R1,R2 ;R0←R1+R2 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。 4.2.3 寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令: ADD R0,R1,[R2] ;R0←R1+[R2] LDR R0,[R1] ;R0←[R1] STR R0,[R1] ;[R1]←R0 在第一条指令中,以寄存器 R2 的值作为操作数的地址,在存储器中取得一个操作数后与 R1 相加,结果存入寄存器 R0 中。 第二条指令将以 R1 的值为地址的存储器中的数据传送到 R0 中。 第三条指令将 R0 的值传送到以 R1 的值为地址的存储器中。 4.2 ARM 指令的寻址方式 4.2.4 基址变址寻址 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示: LDR R0,[R1,#4] ;R0←[R1+4] LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4 LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4 LDR R0,[R1,R2] ;R0←[R1+R2] 在第一条指令中,将寄存器 R1 的内容加上 4 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。 在第二条指令中,将寄存器 R1 的内容加上 4 形成操作数的有效地址,从而取得操作数存入寄存器 R0 中,然后,R1 的内容自增 4 个字节。 在第三条指令中,以寄存器 R1 的内容作为操作数的有效地址,从而取得操作数存入寄存器 R0中,然后,R1 的内容自增 4 个字节。 在第四条指令中,将寄存器 R1 的内容加上寄存器 R2 的内容形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。 4.2 ARM 指令的寻址方式 4.2.5 多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多 16 个通用寄存器的值。以下指令: LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0+4] ;R3←[R0+8

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档