第4章 ARM7TDMI(-S)指令系统汇.ppt

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

4.1 ARM指令系统概述 ARM指令集与Thumb指令集的关系 4.2 ARM处理器寻址方式 寻址方式分类 4.2.1 寄存器寻址 4.2.2 立即寻址 4.2.3 寄存器移位寻址 4.2.4 寄存器间接寻址 4.2.5 基址寻址 4.2.6 多寄存器寻址 4.2.7 堆栈寻址 堆栈寻址 堆栈寻址 堆栈寻址 4.2.8 块拷贝寻址 4.2.9 相对寻址 * 通信工程教研室 4.1 ARM指令概述 4.2 处理器寻址方式 4.3 ARM指令集 4.4 Thumb指令集 第4章 ARM7TDMI(-S)指令系统 指令系统是指特定计算机处理器上可执行的指令集合。 ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。 ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集。 * ARM指令集效率高,但是代码密度低; * Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集; * 所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能; * ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。 Thumb指令集具有灵活、小巧的特点 ARM指令集支持ARM核所有的特性,具有高效、快速的特点 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。 1.寄存器寻址; 2.立即寻址; 3.寄存器移位寻址; 4.寄存器间接寻址; 5.基址寻址; 6.多寄存器寻址; 7.堆栈寻址; 8.块拷贝寻址; 9.相对寻址。 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 0xAA 0x55 R2 R1 MOV R1,R2 0xAA 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下: SUBS R0,R0,#1 ;R0减1,结果放入R0,并且影响标志位 MOV R0,#0xFF000 ;将立即数0xFF000装入R0寄存器 0x55 R0 MOV R0,#0xFF00 程序存储 MOV R0,#0xFF00 0xFF00 从代码中获得数据 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下: MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0, ;即是R0=R2×8 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“与”操作,结果放入R1 0x55 R0 R2 0x01 MOV R0,R2,LSL #3 0x08 0x08 逻辑左移3位 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下: LDR R1,[R2] ;将R2指向的存储单元的数据读出 ;保存在R1中 SWP R1,R1,[R2] ;将寄存器R1的值和R2指定的存储 ;单元的内容交换 0x55 R0 R2 00xAA 0LDR R0,[R2] 0xAA 基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下: LDR R2,[R3,#0x0C] ;读取R3+0x0C地址上的存储单元 ;的内容,放入R2 STR R1,[R0,#-4]! ;先R0=R0-4,然后把R1的值寄存 ;到保存到R0指定的存储单元 0x55 R2 R3 00xAA 0x4000000C LDR R2,[R3,#0x0C] 0xAA 将R3+0x0C作为地址装载数据 多寄存器寻址一次可传送几个寄存器值,允许一条指令传送

文档评论(0)

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

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

1亿VIP精品文档

相关文档