教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

ARM9寻址方式及指令集介绍

来源:网络收集 时间:2026-09-07
导读: ARM9寻址方式及指令集介绍 第3章 ARM指令系统硅谷芯微 技术贡献 网址:http://www.77cn.com.cn ARM9寻址方式及指令集介绍 面对复杂多变的ARM汇编指令表,本章重 点介绍实用价值大、有一定难度且理解起来容 易出错的指令,以点带面达到全面掌握ARM汇 编指令的

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…

指向 …… 此处隐藏:2403字,全部文档内容请下载后查看。喜欢就下载吧 ……

ARM9寻址方式及指令集介绍.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1891493.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)