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

汇编程序在ads1.2中的使用.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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)的图标,也可以看内存。 简单的程序分析 ; 文件名:add.S ; 功能:实现1到100相加 ; 说明:使用ARMulate软件仿真调试

文档评论(0)

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

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

1亿VIP精品文档

相关文档