- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
08-常用ARM指令
ARM指令集 课程目的 熟悉ARM的常用指令 掌握ARM常用指令的编写方法 读懂ARM各类指令 课程内容 跳转指令 数据处理指令 乘法指令 状态寄存器访问指令 Load/Store内存访问指令 移位指令 协处理器指令 课程内容 跳转指令 数据处理指令 乘法指令 状态寄存器访问指令 Load/Store内存访问指令 移位指令 协处理器指令 跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转: —直接向程序计数器PC写入跳转地址值 通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转 在跳转之前结合使用 MOV r10,PC 等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用 —使用专门的跳转指令 B、BL、BLX 等 跳转指令 ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令: — B 跳转指令 — BL 带返回的跳转指令 — BLX 带返回和状态切换的跳转指令 — BX 带状态切换的跳转指令 跳转指令 1、B指令 格式: B{条件} 目标地址 B指令是最简单的跳转指令。一旦遇到一个B指令,ARM 处理器将立即跳转到给定的目标地址,从那里继续执行 注意存储在跳转指令中的实际值是相对当前PC值的一个偏移量,而不是一个绝对地址 例: B Label ;程序无条件跳转到标号Label处执行 CMP R1,#0 BEQ Label ;当CPSR寄存器中的Z条件码置位时,程序跳转到标号Label处执行 跳转指令 2、BL指令 格式: BL{条件} 目标地址 BL在跳转之前,会在寄存器R14中保存PC的当前内容,然后再跳转到相应的标号处执行 可以通过将R14的内容重新加载到PC中,来返回到跳转指令之后的那个指令处执行 例: BL Label …… label: …… mov pc r14 跳转指令 3、 BX指令 格式: BX{条件} 目标地址 带状态切换的跳转指令,跳转到指令中所指定的目标地址处执行。目标地址处的指令既可以是ARM指令,也可以是Thumb指令 4、BLX指令 格式: BLX 目标地址 BLX指令从ARM指令集跳转到指令中所指定的目标地址,并将处理器的工作状态由ARM状态切换到Thumb状态,该指令同时将PC的当前内容保存到寄存器R14中 子程序的返回可以通过将寄存器R14值复制到PC中来完成 课程内容 跳转指令 数据处理指令 乘法指令 状态寄存器访问指令 Load/Store内存访问指令 移位指令 协处理器指令 数据处理指令 数据处理指令根据指令实现处理功能可分为以下五类: 数据传送指令 比较指令 测试指令 算术运算指令 逻辑运算指令 数据传送指令 数据处理指令包括: — MOV 数据传送指令 — MVN 数据取反传送指令 — CMP 比较指令 — CMN 反值比较指令 — TST 位测试指令 — TEQ 相等测试指令 — ADD 加法指令 — ADC 带进位加法指令 — SUB 减法指令 — SBC 带借位减法指令 — RSB 逆向减法指令 — RSC 带借位的逆向减法指令 — AND 逻辑与指令 — ORR 逻辑或指令 — EOR 逻辑异或指令 — BIC 位清除指令 数据传送指令 1、MOV指令 MOV指令的格式为:MOV{条件}{S} 目的寄存器,源操作数 MOV指令可完成从另一个寄存器、被移位的寄存器或将一个立即数加载到目的寄存器。其中S选项决定指令的操作是否影响CPSR中条件标志位的值 例: MOV R1,R0 ;将寄存器R0的值传送到寄存器R1 MOVEQ PC,R14 ;根据Z标志位,决定是否将R14的值传送到PC MOVS R1,R0,LSL#3 ;将寄存器R0的值左移3位后传送到R1 ,并影响标志位 2、MVN指令 MVN指令的格式为: MVN{条件}{S} 目的寄存器,源操作数 与MOV指令不同之处是在传送之前按位被取反了,即把一个被取反的值传送到目的寄存器中 MVN R0,#0 ;将立即数0取反传送到寄存器R0中,完成后R0=-1 3、CMP指令 CMP指令的格式为:CMP{条件} 操作数1,操作数2 CMP指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新CPSR中条件标志位的值。该指令进行一次减法运算,但不存储结果,只更改条件标志位 CMP R1
原创力文档


文档评论(0)