2011微处理器系统结构与嵌入式系统设计(李广军)-CH8.pptVIP

2011微处理器系统结构与嵌入式系统设计(李广军)-CH8.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
伪指令 在ARM汇编指令中,有一类特殊的指令没有对应的指令编码。在汇编时根据情况会解释为相应的ARM、Thumb-2或Thumb-2之前的Thumb指令的组合。这类指令被ARM公司称为“伪指令”。 需要特别注意的是,这几条指令和第9章中介绍的伪指令虽然形式上类似,但作用却大不相同。第9章中介绍的伪指令用于指导汇编器完成相应的汇编工作,符合通常意义上对伪指令的定义,而本节所介绍的这几条伪指令的作用和正常的ARM汇编指令类似,设计这几条伪指令的目的主要是使用一条指令替代多条指令的组合,方便程序员完成汇编程序设计工作,其作用类似于80x86处理器的宏指令。 伪指令 ADR/ADRL 将相对于程序或相对于寄存器的地址载入寄存器中(中等范围,与位置无关)。 指令书写格式:ADR(ADRL)[cond] Rd, label …… MOV R0, #0x18 ; 给R0赋值用于查表 ADR R3, JumpTable ; 装载跳转表的首地址 LDR PC, [R3,R0,LSL#2] ; 查表,将查到的地址赋给PC JumpTable …… 伪指令 LDR 将32位常数或地址载入寄存器(无范围限制,但与位置相关) 指令书写格式:LDR[cond][.W] Rd, =expr/=label_expr expr取值为一个数值常数 如果expr的值位于范围内,则汇编器将会生成一个MOV或MVN指令 如果expr的值不在MOV或MVN指令的范围内,则汇编器会将常数放入文字池中,并会生成一个相对于程序的LDR指令,该指令可从文字池中读取此常数 指令举例 LDR R3,=0xFF0 ; 把立即数0xFF0赋值给R3 LDR R2,=place ; 把标号place对应的地址赋值给R2 伪指令 MOV32 将32位常数或地址载入寄存器(无范围限制,但与位置相关) 仅可用于ARMv6T2及更高版本 指令书写格式:MOV32[cond][.W] Rd, =expr expr可以是symbol(程序区域中的标号)、constant(任何32位常数)或symbol+constant(一个加上32位常数的标号)。 伪指令 UND 生成无体系结构定义的指令 指令书写格式:UND[cond][.W] #expr 执行未定义指令会引发未定义指令异常。程序员可以利用指令异常完成相应的异常处理。 存储器访问指令 ARM处理器是典型的RISC处理器,对存储器的访问只能使用加载/存储指令实现。 ARM的存储空间及I/O空间统一编址,因此对外围I/O及程序数据的访问均需通过加载/存储指令进行。 一、单数据操作指令LDR/STR 用于对访问内存变量、内存缓冲区数据、查表、控制外围部件等。若使用LDR指令加载数据到PC寄存器,则实现程序跳转。 二、批量数据操作指令LDM/STM(考试重点内容之一) 主要用于现场保护、数据复制、常数传递等。 三、数据交换指令SWP 单寄存器存取指令 指 令 格 式 说 明 操 作 LDR {cond} Rd,addressing 加载字数据 Rd←[addressing] 注意addressing的寻址方式及索引方式 LDR{cond}T Rd,addressing 以用户模式加载字数据 LDR{cond}BT Rd, addressing 以用户模式加载无符号字节 LDR{cond}B Rd,addressing 加载无符号字节数据 LDR{cond}H Rd, addressing 加载无符号半字数据 LDR{cond}SB Rd, addressing 加载有符号字节数据 LDR{cond}SH Rd, addressing 加载有符号半字数据 LDR{cond}D Rd, addressing 加载双字数据 STR{cond} Rd, addressing 存储字数据 [addressing]←Rd 注意addressing的寻址方式及索引方式 STR{cond}T Rd,addressing 以用户模式存储字数据 STR{cond}B Rd,addressing 存储字节数据 STR{cond}BT Rd,addressing 以用户模式存储字节数据 STR{cond}H Rd,addressing 存储半字数据 STR{cond}D Rd,addressing 存储双字数据 符号数加载时用符号扩展到32位,否则用零扩展到32位; 单寄存器存取指令的寻址方式 基址寄存器(任一通用寄存器)+地址偏移量 立即数:

文档评论(0)

cai + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档