汇编程序在ADS1.2中的使用.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM指令集1 跳转指令 指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令:— B 跳转指令— BL 带返回的跳转指令— BLX 带返回和状态切换的跳转指令— BX 带状态切换的跳转指令2 数据处理指令 — MOV 数据传送指令 — MVN 数据取反传送指令 — CMP 比较指令 — CMN 反值比较指令 — TST 位测试指令 — TEQ 相等测试指令 — ADD 加法指令 — ADC 带进位加法指令 — SUB 减法指令 — SBC 带借位减法指令 — RSB 逆向减法指令 — RSC 带借位的逆向减法指令 — AND 逻辑与指令 — ORR 逻辑或指令 — EOR 逻辑异或指令 — BIC 位清除指令3 乘法指令与乘加指令乘法指令与乘加指令共有以下6条:— MUL 32位乘法指令— MLA 32位乘加指令— SMULL 64位有符号数乘法指令— SMLAL 64位有符号数乘加指令— UMULL 64位无符号数乘法指令— UMLAL 64位无符号数乘加指令4 程序状态寄存器访问指令— MRS 程序状态寄存器到通用寄存器的数据传送指令— MSR 通用寄存器到程序状态寄存器的数据传送指令5 加载/存储指令— LDR 字数据加载指令— LDRB 字节数据加载指令— LDRH 半字数据加载指令— STR 字数据存储指令— STRB 字节数据存储指令— STRH 半字数据存储指令6 批量数据加载/存储指令— LDM 批量数据加载指令— STM 批量数据存储指令7 数据交换指令— SWP 字数据交换指令— SWPB 字节数据交换指令8 移位指令(操作)— LSL 逻辑左移— ASL 算术左移— LSR 逻辑右移— ASR 算术右移— ROR 循环右移---RRX 带扩展的循环右移ARM汇编语言编程的重点 1、ARM数据处理操作包括:简单的寄存器操作 立即数操作寄存器移位操作 其中32位立即数在32位指令中的编码以及ARM特有的寄存器移位操作是数据处理方面的难点。2、设置条件码设置条件码 ARM的任何数据处理指令都能通过增加“S”操作码来设置条件码(N,Z,C和V)。 条件执行 ARM指令集不同寻常的特征是每条指令(除了某些v5T指令)都可以是条件执行的。 条件转移 在程序中可以通过条件码的使用让微处理器决定是否进行转移,还可用来控制循环的退出。3、汇编语言子程序调用及返回 子程序的调用在ARM汇编语言中,子程序调用是通过BL指令来完成的。BL指令的语法格式如下:BL subname其中,subname是被调用的子程序的名称。子程序的返回在返回调用子程序时,转移链接指令保存到LR寄存器(r14)中的值需要拷贝回程序寄存器PC(r15)。 4、跳转表思想在程序设计中,有时为使程序完成一定的功能,需要调用一系列子程序中的一个,而决定究竟调用哪一个由程序的计算值确定。跳转表是解决该问题的有效方案。跳转表是利用程序计数器PC在通用寄存器文件中的可见性来实现的5、ARM与Thumb之间的状态转换及函数的相调用ARM/Thumb之间的状态切换是通过一条专用的转移交换指令BX来实现的。BX利用Rn寄存器中目的地址值的最后一位来判断跳转后的状态。当最后一位为0时,表示转移到ARM状态;当最后一位为1时,表示转移到Thumb状态ARM与Thumb间的状态转换及函数的相调用在同一状态下的子程序调用,通常只需要一条指令实现调用: BL function 实现返回也只需要从LR恢复PC即可: MOV PC,LR 在不同状态下的子程序调用中,就需要进行状态之间的切换,需要考虑到以下几点:需要由BX来切换状态,因为BL不能完成状态切换。 需要在BX之前先保存好LR,BX不能自动保存返回地址到LR。 需要 用“BX LR”来返回,不能使用“MOV PC,LR”,返回时要仔细考虑保存在LR中最低位的内容是否正确。调试环境 AXD,选择Option中的Configure Target,出现的选项中,选择ARMUL。这时在AXD左边就会出现ARM7TMDI,可直接右键点击ARM7TMDI,Loading Image后选择文件。或者点File中的Loading Image导入.asf文件。 调试时,在AXD中,我们需要看寄存器的值的话,就可以点击上面有r(register)的图标,也可以看内存。简单的程序分析 AREA addxyz,CODE,READONLY ENTRY CODE32start mov r0,#1 mov r1,#0 b loop loop add r1,r1,r0 add r0,r0,#1 cmp r0,#100 BLS loop mov r2,r1stop mov r0

文档评论(0)

158****9949 + 关注
官方认证
文档贡献者

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

认证主体成都林辰禄信息科技有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510104MA64LRAJ9H

1亿VIP精品文档

相关文档