文档详情

ARM指令系统,ARM处理器寻址方式,指令集介绍.pdf

发布:2017-06-01约5.85万字共119页下载文档
文本预览下载声明
3章 ARM指令系统 谷芯微 技术贡献 网址:www.threeway.cc 面对复杂多变的ARM汇编指令表,本章 重点介绍实用价值大、有一定难度且理解起来 容易出错的指令,以点带面达到全面掌握ARM 汇编指令的目的。 3章 目录 q1. ARM处理器寻址方式 q2. 指令集介绍 q3. 课后练习 3.1 ARM处理器寻址方式 ARM处理器是基于精简指令集计算机(RISC) 原理设计的,指令集和相关译码机制较为简单。 ARM9TDMI (-S)具有32位ARM指令集和16位Thumb指令 集,ARM指令集效率高,但是代码密度较低;而Thumb 指令集具有较高的代码密度,并且保持ARM的大多数性 能上的优势,它是ARM指令集的子集。所有的ARM指令 都是可以有条件执行的,而Thumb指令仅有一条指令 (分支指令B)具备条件执行功能。ARM程序和Thumb程 序可相互调用,相互之间的状态切换开销几乎为零。 说明:本章中的ARM9TDMI (-S)表示ARM9TDMI或 ARM9TDMI-S。 寻址方式是根据指令中给出的地址码字段来 实现寻找真实操作数地址的方式。ARM处理器具有8种 基本寻址方式。 3.1.1 寄存器寻址 寄存器寻址是指操作数的值在寄存器中,指令中的 地址码字段指出的是寄存器编号,指令执行时直接取出 寄存器值来操作。 应用示例: MOV R1, R2 ;将R2 的值存入R1 SUB R0, R1, R2 ;将R1 的值减去R2的值,结果保存到R0 3.1.2 立即寻址 立即寻址指令中的操作码字段后面的地址码部 分即是操作数本身,也就是说,数据就包含在指令当中 ,取出指令也就取出了可以立即使用的操作数 (这样的 数称为立即数)。 应用示例: SUBS R0, R0, # 1 R0减1,结果放入R0,并且影响标志位 MOV R0, #0xFF000 ;将立即数0xFF000装入R0寄存器 3.1.3 寄存器移位寻址(1) 寄存器移位寻址是ARM指令集特有的寻址方式 。当 2个操作数是寄存器移位方式时, 2个寄存器操 作数在与 1个操作数结合之前,选择进行移位操作。 应用示例: MOV R0, R2, LSL #3 R2的值左移3位,结果放入R0,即R0=R2 x 8 ANDS R1, R1, R2, LSL R3 R2的值左移R3位,然后和R1相“与”操作,结果放入R1 可采用的移位操作如下: ■ LSL:逻辑左移 (Logical Shift Left),寄存器 中字的低端空出的位补0; ■ LSR:逻辑右移 (Logical Shift Right),寄存 器中字的高端空出的位补0; ■ ASR:算术右移 (Arithmetic Shift Right),移 位过程中保持符号位不变,若源操作数为正数,则字的 高端空出的位补0,否则补1; 3.1.3 寄存器移位寻址(2 ) ■ ROR:循环右移 (ROtate Right),由字的低 移 出的位填入字的高端空出的位; ■ RRX:带扩展的循环右移 (Rotate Right eXtended by 1 place),操作数右移1位,高端空出的 位用原C标志值填充。 各种移位操作如图3.1所示。 图3.1 移位操作示意图 0 0 (a) LSL移位操作 (b) LSR移位操作 (c) ASR移位操作 (d) ROR移位操作 C (e) RRX移位操作 3.1.4 寄存器间接寻址 寄存器间接寻址指令中的地址码给出的
显示全部
相似文档