网站大量收购独家精品文档,联系QQ:2885784924

[工学]第三章-ARM汇编.ppt

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

第一章 微型计算机的基础知识 嵌入式系统(ARM)汇编语言 ARM指令集 1. ARM指令概要 ARM系统开发中为什么需要汇编? ARM汇编的重要与不重要 很多系统设计中不需要关注汇编指令集 ARM系统中汇编是必不可少的 初始化和中断代码 指令集调试 系统性能优化 ARM系统中C编译器无法产生所有的汇编指令 1. ARM指令概要 ARM指令编码格式 基本格式: cond:条件码 1. ARM指令概要 ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。 这样可以提高代码密度,减少分支跳转指令数目,提高性能。 CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip 默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。 CMP不需要增加 “S”就可改变相应的标志位。 loop ... ... SUBS r1,r1,#1 BNE loop 1. ARM指令概要 1. ARM指令概要 ARM指令基本语法格式举例 ARM指令集——数据处理指令基本语法格式: ARM是三地址指令格式,指令的基本格式如下: opcode {cond} {S} Rd ,Rn{,operand2} 其中号内的项是必须的,{}号内的项是可选的。 1. ARM指令概要 ARM指令分类 2.分支跳转指令 程序设计分类 2.分支跳转指令 顺序程序:是最简单的程序,它的执行顺序和程序中指令的排列顺序完全一致。 分支程序:执行顺序和指令存储顺序失去了完全的一致性。把不同的处理方法编制成各自的处理程序,运行时由计算机根据不同的条件自动做出选择判别,绕过某些指令,仅执行相应的处理程序段。 循环程序:重复地执行某些指令。“先执行,后判断”;“先判断,后执行”两种。 子程序:不同的程序中或同一个程序中的不同位置常常用到功能完全一致的程序段。这种被独立出来的程序段被称为子程序。 2.分支跳转指令 在ARM中实现程序跳转的方法 使用分支指令直接跳转 直接向PC寄存器赋值实现跳转 2.分支跳转指令 Branch : B{cond} label Branch with Link : BL{cond} subroutine_label 处理器把偏移量左移两位,进行符号扩展后再与PC相加 跳转范围:± 32 Mbyte 如何执行长跳转? 2.分支跳转指令 分支指令 B 操作伪代码与示例 B{cond} if ConditionPassed(cond) then if L == 1 then LR = address of the instruction after the branch instruction PC = PC + (SignExtend(signed_immed_24) 2) 示例: B SKIP ; 跳转到SKIP标号处 B 0x1234 ; 跳转到绝对地址0x1234处 CMP R0, R1 BNE LOOP ; 条件跳转到LOOP (不相等时B指令被执行) 2.分支跳转指令 分支指令 BL 示例 使用BL指令调用 TEST子函数后 LR = ? PC = ? TEST函数如何返回? 2.分支跳转指令 单分支 CMP R1, #0x01 BNE DONE ... ... ... ... ... ... DONE ... ... ... 2.分支跳转指令 计数循环 1. 增量计数 MOV R1, #0 LOOP CMP R1, #5 BGE DONE ... ... ADD R1, R1, #1 B LOOP DONE ... ... 2.分支跳转指令 控制循环 1. 先判断,再执行 LOOP CMP R1, #0 BEQ DONE ... ... ... ... B LOOP DONE ... ... 2.分支跳转指令 子程序 MOV R1, #1 MOV R2, #2 BL FUNC MOV R3, #3 2.分支跳转指令 子程序 MOV R1, #1 MOV R2, #2 BL

文档评论(0)

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

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

1亿VIP精品文档

相关文档