第3章ARM微处理器指令系统与编程示例汇编.ppt

第3章ARM微处理器指令系统与编程示例汇编.ppt

  1. 1、本文档共137页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM伪指令——大范围的地址读取 ... LDR R0,=Delay ... Delay MOV R0,r14 ... 应用示例(源程序): ... 0x60 LDR R0,0xb4 ... 0x64 MOV R0, LR ... 0xb4 DCD 0x64 编译后的反汇编代码: LDR伪指令被汇编成一条LDR指令,并在文字池中定义了一个常量,该常量为Delay标号的地址 使用伪指令将程序标号Delay的地址存入R0 必须小于4KB 必须加入”=” 3.2 指令集介绍 ARM伪指令——空操作伪指令 NOP伪指令在汇编时将会被代替成ARM中的空操作,比如可能是“MOV R0,R0”指令等。NOP可用于延时操作。 指令格式: “NOP” NOP 思考与练习 ? 1.请使用NOP伪指令、比较指令、条件跳转指令等完成一个软件延时子程序,延时长度由R0寄存器的数值控制? 思考与练习 ? 1.请使用NOP伪指令、比较指令、条件跳转指令等完成一个软件延时子程序,延时长度由R0寄存器的数值控制? Delay NOP ;空操作 NOP NOP SUBS R0,R0,#1 ;循环次数减一 BNE Delay ;如果循环未结束,跳转Delay继续 MOV PC,LR ;子程序返回 1. ARM处理器的寻址方式 ——共有9种寻址方式; 2. ARM指令的特点 ——可条件执行、可选择影响标志位、具有非常灵活的第二操作数; 3. ARM指令的种类,它能完成哪些功能 ——共有6类指令,可以完成存储器访问、数据运算、程序跳转、以及帮助编程的伪指令等。 本章阶段总结 第3章 目录 1.ARM处理器寻址方式 2.指令集介绍 ARM指令集 Thumb指令集 3.2 指令集介绍 Thumb指令 Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出的,具有16位的代码密度。Thumb指令体系不完整,只支持通用功能。必要时仍需要使用ARM指令,如进入异常时。 简单的Thumb程序 ; 功能:使用BX指令切换处理器状态 AREA Example8,CODE,READONLY ENTRY CODE32 ARM_CODE ADR R0,THUMB_CODE+1 BX R0 ; 跳转并切换处理器状态 ? CODE16 THUMB_CODE MOV R0,#10 ; R0 = 10 MOV R1,#20 ; R1 = 20 ADD R0,R1 ; R0 = R0+R1 B . END 在Thumb程序段之前要用CODE16声明。 3.2 指令集介绍 Thumb指令集与ARM指令集的相似处 Thumb指令的格式与使用方式与ARM指令集类似,它也具有以下种类的指令: 存储器访问指令 数据处理指令 分支指令 杂项指令 伪指令 3.2 指令集介绍 Thumb指令集与ARM指令集的区别 Thumb指令集较ARM指令集有如下限制: 只有B指令可以条件执行,其它指令都不能条件执行; 分支指令的跳转范围有更多限制; 数据处理指令的操作结果必须放入其中一个; 单寄存器访问指令,只能操作R0~R7; LDM和STM指令可以对R0~R7的任何子集进行操作; 3.2 指令集介绍 ARM指令集—— B指令为简单的跳转指令,不附带其它功能。跳转范围限制在当前指令的±32M字节地址内(ARM指令为字对齐,最低2位地址固定为0)。 程序代码 B main xx main 分支指令 “B” BL Label 程序代码 BL Label xxx xxx Label xxx MOV PC,LR Addr1 Addr2 xxx xxx LR PC ARM指令——分支指令 带链接的分支指令——BL指令除了具有跳转功能,还能在跳转之前将下一条指令的地址拷贝到R14(即LR) 链接寄存器中,它适用于子程序调用。跳转范围限制在当前指令的±32M字节地址内。指令格式如下: Addr1 Label Addr2 Addr2 1.当程序执行到BL跳转指令时,硬件将下一条指令的地址Addr2装入LR寄存器,并把跳转地址装入程序计数器(PC) 2. 程序跳转到目标地址Label继续执行,当子程序执行结

文档评论(0)

花仙子 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档