ARM嵌入式技术原理与应用PPT.ppt

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

第六章 ARM指令系统 (2)LDM/STM—多寄存器加载/存储指令: 指令格式:LDM{cond}模式 Rn{!}, reglist{^} STM{cond}模式 Rn{!}, reglist{^} 指令功能:多寄存器加载/存储指令可以实现在一组寄存器和一块连续的 内存单元之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。 允许一条指令传送16个寄存器的任何子集或所有寄存器。 指令说明:LDM和STM的主要用途是现场保护、数据复制、参数传送等。其 指令格式如图所示。 第六章 ARM指令系统 图中“模式”有如下8种(前面4种用于数据块的传输,后面4种是堆栈 操作): ① IA:每次传送后地址加4; ② IB:每次传送前地址加4; ③ DA:每次传送后地址减4; ④ DB:每次传送前地址减4; ⑤ FD:满递减堆栈; ⑥ ED:空递减堆栈; ⑦ FA:满递增堆栈; ⑧ EA:空递增堆栈。 注意事项: ① 指令格式中的Rn寄存器为基址寄存器,它保存了所要操作存储单元的起始地址,从该地址开始的一段连续的地址空间都是要进行读/写的存储单元。Rn不允许为R15(PC)。 第六章 ARM指令系统 ② Rn的内容是一个指针,在指令执行前它指向起始地址,在指令执行结束后有两种选择:一种是保持Rn的内容前后不变化,其中,Rn无“!”后缀,如图(b)所示;另一种是让Rn指向操作结束的地址,后缀“!”就是用于该功能的控制,如果加上“!”后缀,表示最后的地址写回到Rn中,如图(c)所示。 程序示例: 带“!”后缀的LDM指令 第六章 ARM指令系统 6.2.5 基址寻址 基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成 操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表 、数组操作、功能部件寄存器访问等。 应用示例: 6.2.6 多寄存器寻址 多寄存器寻址是指一次可传送几个寄存器值,允许一条指令传送16个 寄存器的任何子集或所有寄存器。 应用示例: 第六章 ARM指令系统 6.2.7 堆栈寻址 堆栈指针的移动方向称之为“堆栈的生长方向” ,ARM9可以支持2种 ,如图所示。 ■ 向上生长:在向堆栈写入数据后,堆栈指针的值变大,也就是向高地址方向生长,称之为递增堆栈; ■ 向下生长:在向堆栈写入数据后,堆栈指针的值变小,也就是向低地址方向生长,称之为递减堆栈。 第六章 ARM指令系统 除了要考虑堆栈指针的增长方向之外,还要考虑堆栈指针指向的存储 单元是否已经保存有堆栈数据,或者说在入栈时是否可以直接向堆栈指针 指向的存储单元写入数据。 ARM9支持2种情况,分别为“满堆栈”和“空堆栈”,如图所示。 ■ 满堆栈:堆栈指针指向最后压入的有效数据项,称为满堆栈。这种堆栈的入栈操作要先调整指针再写入数据。 ■ 空堆栈:堆栈指针指向下一个待压入数据的空位置,称为空堆栈。这种堆栈的入栈操作要先写入数据再调整指针。 第六章 ARM指令系统 综合前面的堆栈生长方向和堆栈的满空特性,可以得到4种堆栈类型 ,分别为: ■ 满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有有效数据项的最高地址。如指令LDMFA、STMFA等。 ■ 空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空位置。如指令LDMEA、 STMEA等。 ■ 满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有有效数据项的最低地址。如指令LDMFD、STMFD等。 ■ 空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空位置。如指令LDMED、 STMED等。 应用示例: 第六章 ARM指令系统 6.2.8 相对寻址 相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指 令中的地址码字段做为偏移量,两者相加后得到的地址即为操作数的有 效地址。 应用示例: 第六章 ARM指令系统 6.3 ARM指令分类 ARM微处理器的指令集可以分为6大类:①跳转指令 ②数据处理指令 ③加载/存储指令④杂项指令⑤伪指令⑥协处理器指令和异常产生指令 6.3.1 ARM跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现 程序流程的跳转: ■ 使用专门的跳转指令 ■ 直接向程序计数器PC写入跳转地址值。 四种跳转指令 ■ B跳转指令(前后32MB的地址空间)。B指令编码中的跳转地址值是相 对当前PC值的一个偏移量,经编译器计算得到跳转的绝对地址。 指令格式: B{cond} label 指令编码格式: 第六章 ARM指令系统 ■ signed_immed_24:24

文档评论(0)

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

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

1亿VIP精品文档

相关文档