- 1、本文档共275页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 28 肾上腺皮质激素类药物 PPT.pptx
- 2型糖尿病发病机制PPT.ppt
- 2型糖尿病与代谢综合征PPT.ppt
- 2、维生素d缺乏性佝偻病 PPT.ppt
- 201张商务PPT背景图片PPT.ppt
- 2平面任意力系1 PPT.ppt
- 2患教-低血糖 PPT.ppt
- 2版病理生理学绪论98694 PPT.ppt
- 2章花卉的生长与发育 PPT.ppt
- 2电气控制基本电路-电机启动控制电路 PPT.ppt
- 互联网对初中学生学习行为的影响教学研究课题报告.docx
- 初中英语写作教学中的合作学习探讨教学研究课题报告.docx
- 教师信念与课堂实践的关系研究教学研究开题报告教学研究课题报告.docx
- 高中教育中课程思政的实施路径研究教学研究课题报告.docx
- 小学语文阅读能力培养的有效策略研究教学研究课题报告.docx
- 家庭作业对中学生学业成就的影响研究教学研究课题报告.docx
- 各学段英语学习策略的对比与反思教学研究课题报告.docx
- 移动学习对初中生学习兴趣影响分析教学研究课题报告.docx
- 高中阶段学科交叉教学的实施研究教学研究课题报告.docx
- 多元评价体系在课堂教学中的应用效果教学研究课题报告.docx
文档评论(0)