ARM9寻址方式及指令集介绍
ARM9寻址方式及指令集介绍
第3章 ARM指令系统硅谷芯微 技术贡献 网址:http://www.77cn.com.cn
ARM9寻址方式及指令集介绍
面对复杂多变的ARM汇编指令表,本章重 点介绍实用价值大、有一定难度且理解起来容 易出错的指令,以点带面达到全面掌握ARM汇 编指令的目的。
ARM9寻址方式及指令集介绍
第3章 目录 1. ARM处理器寻址方式 2. 指令集介绍 3. 课后练习
ARM9寻址方式及指令集介绍
3.1 ARM处理器寻址方式ARM处理器是基于精简指令集计算机(RISC) 原理设计的,指令集和相关译码机制较为简单。 ARM9TDMI(-S)具有32位ARM指令集和16位Thumb 指令集,ARM指令集效率高,但是代码密度较低;而 Thumb指令集具有较高的代码密度,并且保持ARM的 大多数性能上的优势,它是ARM指令集的子集。所有 的ARM指令都是可以有条件执行的,而Thumb指令仅 有一条指令(分支指令B)具备条件执行功能。ARM 程序和Thumb程序可相互调用,相互之间的状态切换 开销几乎为零。
ARM9寻址方式及指令集介绍
说明:本章中的ARM9TDMI(-S)表示ARM9TDMI或 ARM9TDMI-S。
寻址方式是根据指令中给出的地址码字段来实现 寻找真实操作数地址的方式。ARM处理器具有8种基 本寻址方式。
ARM9寻址方式及指令集介绍
3.1.1 寄存器寻址寄存器寻址是指操作数的值在寄存器中,指令中的 地址码字段指出的是寄存器编号,指令执行时直接取出 寄存器值来操作。 应用示例:MOV SUB R1, R2 R0, R1, R2 ; 将 R2的 值 存 入 R1 ; 将 R1的 值 减 去 R2的 值 , 结 果 保 存 到 R0
ARM9寻址方式及指令集介绍
3.1.2 立即寻址立即寻址指令中的操作码字段后面的地址码部分即 是操作数本身,也就是说,数据就包含在指令当中,取 出指令也就取出了可以立即使用的操作数(这样的数称 为立即数)。 应用示例:SUBS MOV R0, R0, #1 R0, #0xFF000 ; R0减 1, 结 果 放 入 R0, 并 且 影 响 标 志 位 ; 将 立 即 数 0xFF000装 入 R0寄 存 器
ARM9寻址方式及指令集介绍
3.1.3 寄存器移位寻址(1)寄存器移位寻址是ARM指令集特有的寻址方式。 当第2个操作数是寄存器移位方式时,第2个寄存器操作 数在与第1个操作数结合之前,选择进行移位操作。 应用示例:MOV ANDS R0, R2, LSL #3 R1, R1, R2, LSL R3 ; R2的 值 左 移 3位 , 结 果 放 入 R0, 即 R0=R2 x 8 ; R2的 值 左 移 R3位 , 然 后 和 R1相 “与 ”操 作 , 结 果 放 入 R1
可采用的移位操作如下: ■ LSL:逻辑左移(Logical Shift Left),寄存器中字的 低端空出的位补0; ■ LSR:逻辑右移(Logical Shift Right),寄存器中字 的高端空出的位补0; ■ ASR:算术右移(Arithmetic Shift Right),移位过 程中保持符号位不变,若源操作数为正数,则字的高端 空出的位补0,否则补1;
ARM9寻址方式及指令集介绍
3.1.3 寄存器移位寻址(2)■ ROR:循环右移(ROtate Right),由字的低端移 出的位填入字的高端空出的位; ■ RRX:带扩展的循环右移(Rotate Right eXtended
by 1 place),操作数右移1位,高端空出的位用原C标 志值填充。 各种移位操作如图3.1所示。 图3.1 移位操作示意图0 (a) LSL移 位 操 作 0 (b) LSR移 位 操 作 (d) ROR移 位 操 作
(c) ASR移 位 操 作
C
(e) RRX移 位 操 作
ARM9寻址方式及指令集介绍
3.1.4 寄存器间接寻址寄存器间接寻址指令中的地址码给出的是一个通用 寄存器的编号,所需的操作数保存在寄存器指定地址的 存储单元中,即寄存器为操作数的地址指针。 应用示例:LDR SWP R1, [R2] R1, R1, [R2] ; 将 R2指 向 的 存 储 单 元 的 数 据 读 出 , 保 存 在 R1中 ; 将 寄 存 器 R1的 值 和 R2指 定 的 存 储 单 元 的 内 容 进 行 交 换
ARM9寻址方式及指令集介绍
3.1.5 基址寻址基址寻址就是将基址寄存器的内容与指令中给出的 偏移量相加,形成操作数的有效地址。基址寻址用于访 问基址附近的存储单元,常用于查表、数组操作、功能 部件寄存器访问等。应用示例:LDR STR LDR R2, [R3, #0x0C] R1, [R0, # -4]! R1, [R0, R3, LSL #1] ; 读 取 R3+0x0C地 址 上 的 存 储 单 元 的 内 容 , 存 入 R2 ; 先 R0=R0-4, 然 后 把 R1的 值 保 存 到 R0指 令 的 存 储 单 元 ; 将 R0+R3 x 2地 址 上 的 存 储 单 元 的 内 容 读 出 , 存 入 R1
ARM9寻址方式及指令集介绍
3.1.6 多寄存器寻址多寄存器寻址是指一次可传送几个寄存器值,允许 一条指令传送16个寄存器的任何子集或所有寄存器。
应用示例:LDMIA STMIA R1!, {R2-R7, R12} R0!, {R2-R7, R12} ; 将 R1指 向 的 单 元 中 的 数 据 读 出 到 R2~R7、 R12中 ; ( R1自 动 加 1) ; 将 R2~R7、 R12的 值 保 存 到 R0指 向 的 存 储 单 元 中 ; ( R0自 动 加 1)
ARM9寻址方式及指令集介绍
3.1.7 堆栈寻址(1)在2.5.1小节的“堆栈指针(SP)”中介绍了堆栈的 定义和作用,接下来讲述堆栈在ARM9中的特性。 前面讲过对堆栈操作都是通过堆栈指针(SP)来进 行的,随着堆栈内容的增减,堆栈指针也做相应的移动 。那么有个问题,当写入数据时堆栈指针是如何变化的 呢? 堆栈指针的移动方向称之为“堆栈的生长方向”, ARM9可以支持2种,如图3.2所示。 ■ 向上生长:在向堆栈写入数据后,堆栈指针的值变 大,也就是向高地址方向生长,称之为递增堆栈; ■ 向下生长:在向堆栈写入数据后,堆栈指针的值变 小,也就是向低地址方向生长,称之为递减堆栈。
ARM9寻址方式及指令集介绍
3.1.7 堆栈寻址(2)图3.2 堆栈的生长方向ARM9内 核 R0 R1 0x00 0x01…
指针移 存储器 动方向 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x??
存储器 地址 0x1028 0x1024 0x1020 0x101C 0x1018 0x1014 0x1010 0x100C 0x1008 0x1004 0x1000 栈 顶 ARM9内 核 R0 R1 0x00 0x01…
堆栈数 据区
地址 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x1028 0x1024 0x1020 0x101C 0x1018 0x1014 0x1010 0x100C 0x1008 0x1004 0x1000 栈 底
SP 0
x1024 内部寄存器 堆栈数 据区
SP 0x1024 内部寄存器 栈 底 指针移 动方向
栈 顶
(a) 向 上 生 长
(b) 向 下 生 长
ARM9寻址方式及指令集介绍
3.1.7 堆栈寻址(3)除了要考虑堆栈指针的增长方向之外,还要考虑堆 栈指针指向的存储单元是否已经保存有堆栈数据,或者 说在入栈时是否可以直接向堆栈指针指向的存储单元写 入数据。 ARM9支持2种情况,分别为“满堆栈”和“空堆 栈”,如图3.3所示。 ■ 满堆栈:堆栈指针指向最后压入的有效数据项,称 为满堆栈。这种堆栈的入栈操作要先调整指针再写入数 据。 ■ 空堆栈:堆栈指针指向下一个待压入数据的空位臵 ,称为空堆栈。这种堆栈的入栈操作要先写入数据再调 整指针。
ARM9寻址方式及指令集介绍
3.1.7 堆栈寻址(4)图3.3 堆栈的满空特性指向的存储 单元为空 存储器 地址 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x?? 0x1028 0x1024 0x1020 0x101C 0x1018 0x1014 0x1010 0x100C 0x1008 0x1004 0x1000 栈 顶 ARM9内 核 R0 R1 0x00 0x01…
存储器 ARM9内 核 R0 R1 0x00 0x01…
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




