嵌入式系统讲义3——指令分类与寻址方式

合集下载

嵌入式系统-第3章 ARM9指令系统_new

嵌入式系统-第3章 ARM9指令系统_new

LDM/STM加下列后缀即成为多寄存器寻址指令
➢ IA(Increment After) : 操作完成后地址增 ➢ IB(Increment Before) :操作完成前地址增
➢ DA(Decrement After) :操作完成后地址减
➢ DB(Decrement Before) :操作完成前地址减
LSR操作: LSR(Logical Shift Right) 逻辑右移
格式为: 通用寄存器,LSR 操作数
Logical Shift Right
...0 Destination
CF
LSR可完成对通用寄存器中的内容进行右移的操作,按操作 数所指定的数量向右移位,左端用零来填充,最后一个右移出 的位放在状态寄存器的C位CPSR[29]中,如图3-2所示。其中, 操作数可以是通用寄存器,也可以是立即数(0~31)。
这种移位对有符号数据使用时可以保持符号位不变。
16
3.1.5 寄存器移位寻址
31 30 29
10
C
操作示例: MOV R0, R1, ASR #5 ;将R1中的内容右移5位后传送到R0中,符号位保持不变。 ;最后移出的位同时也送入状态位C中。
17
3.1.5 寄存器移位寻址
Rotate Right through Carry
寄存器寻址 立即寻址 寄存器间接寻址 变址寻址 寄存器移位寻址 多寄存器寻址 堆栈寻址 相对寻址
4
3.1.1 寄存器寻址
寄存器寻址就是利用寄存器中的内容作为操作数,寄 存器本身就是操作数地址。这种寻址方式是各类微处理器 经常采用的一种方式,也是一种执行效率较高的寻址方式。
例如指令:
LDR R0,[R1],#2
;R0←[R1],R1←R1+2 后变址

嵌入式系统汇编语言(3)

嵌入式系统汇编语言(3)
ARM技术讲座
汇编指令及伪指令
ARM处理器寻址方式

寻址方式分类——寄存器寻址
操作数的值在寄存器中,指令中的地址码字段 指出的是寄存器编号,指令执行时直接取出寄存器 值来操作。寄存器寻址指令举例如下: R2 ;将R2的值存入R1 0xAA MOV R1,R2
SUB R0,R1,R2
R1;将R1的值减去R2的值,结果保存到R0 0xAA 0x55 MOV R1,R2
数据处理指令





数据处理指令可分为数据传送指令、算术逻辑运算指令和比较指令等。 数据传送指令用于在寄存器和存储器之间进行数据的双向传输。 算术逻辑运算指令完成常用的算术与逻辑的运算,该类指令不但将运算 结果保存在目的寄存器中,同时更新CPSR 中的相应条件标志位。 比较指令不保存运算结果,只更新CPSR 中相应的条件标志位。 数据处理指令包括: — MOV 数据传送指令 — MVN 数据取反传送指令 — CMP 比较指令 — CMN 反值比较指令 — TST 位测试指令 — TEQ 相等测试指令 — ADD 加法指令 — ADC 带进位加法指令 — SUB 减法指令 — SBC 带借位减法指令 — RSB 逆向减法指令 — RSC 带借位的逆向减法指令 — AND 逻辑与指令 — ORR 逻辑或指令 — EOR 逻辑异或指令 — BIC 位清除指令
!表示在完成数据传送后将更新基址寄存器,更新的方式是每执行完一 次操作,基址寄存器自动加上前变址的字节数。
ARM处理器寻址方式

寻址方式分类——多寄存器寻址
多寄存器寻址一次可传送几个寄存器值,允许 一条指令传送16个寄存器的任何子集或所有寄存器。 多寄存器寻址指令举例如下:0x04 0x4000000C R6 0x04 0x?? LDMIA R1!,{R2-R7,R12} ;将R1指向的单元中的数据读出到 R4 0x03 0x?? 0x03 0x40000008 ;R2~R7、R12中(R1自动加4)

嵌入式体系结构及接口技术:第3章 ARM指令集寻址方式

嵌入式体系结构及接口技术:第3章 ARM指令集寻址方式
寄存器移位方式
操作数为寄存器的数值做相应的移位而 得到。在ARM指令中移位操作包括逻辑左移 、逻辑右移、算术左移、算术右移、循环右 移和带扩展的循环右移。
TM
9
9
ARM7TDMI 内核
ABE A[31:0]
地址寄存器
P C
A
L
A
U
B
B
u
u
s
s
寄存器
乘法器
桶形 移位器
32 位 ALU
地址 自增器
Incrementer
TM
20
20
2.基址加变址寻址 例如:
LDR R0,[R1,#4] LDR R0,[R1,#4]! LDR R0,[R1],#4 LDR R0,[R1,R2]
TM
21
21
字、无符号字节寻址
汇编指令语法格式为:
LDR {<cond>}{B}{T}<Rd>,<addressing_mode> STR {<cond>}{B}{T}<Rd>,<addressing_mode>
TM
14
14
3.2 数据处理指令寻址方式
4)第二操作数为寄存器移位方式,且移位数值放在 寄存器中
汇编语法格式:<Rm>,<shift> <Rs>
可用的移位类型:LSL、LSR、ASR、ROR
例如:ADD R0,R1,R2,ASR 寻址方式
5)第二操作数为寄存器进行RRX移位得到 汇编语法格式:<Rm>,RRX
TM
36
36
半字、有符号字节寻址
偏移量的提供形式 立即数 寄存器

单片机指令系统-第3讲寻址方式

单片机指令系统-第3讲寻址方式

单片机指令系统-第3讲寻址方式单片机指令系统第 3 讲寻址方式在单片机的世界里,指令系统就像是一套精密的规则和指南,而寻址方式则是其中至关重要的一部分。

它决定了单片机如何在其内部的存储空间中找到所需的数据或指令,从而实现各种复杂的功能。

今天,就让我们一起来深入探讨一下单片机指令系统中的寻址方式。

首先,我们来了解一下什么是寻址方式。

简单来说,寻址方式就是单片机在执行指令时寻找操作数的方法。

就好比我们在一个大仓库里找东西,需要有一定的方法和路径才能快速准确地找到目标物品。

在单片机中,操作数可能存放在寄存器、内存单元或者其他特定的位置,而不同的寻址方式就是告诉单片机从哪里去获取这些操作数。

常见的寻址方式有以下几种:立即寻址是比较简单直接的一种方式。

在这种方式下,操作数就直接包含在指令当中。

比如说,指令“MOV A, 50H”,这里的“50H”就是一个立即数,单片机可以直接获取并使用它。

这种方式的优点是指令执行速度快,因为操作数已经在指令中给出,不需要再去其他地方寻找。

直接寻址则是通过指令中给出的直接地址来访问片内 RAM 中的单元。

例如,“MOV A, 30H”,这里的“30H”就是一个直接地址,单片机会根据这个地址找到对应的存储单元,并将其中的数据传送到累加器A 中。

直接寻址方式的优点是直观、简单,但能够访问的地址范围有限,通常只能访问片内 RAM 的低 128 个字节。

寄存器寻址是指操作数存放在寄存器中,指令中直接指定寄存器的名称。

比如,“MOV A, R0”,就是将寄存器 R0 中的内容传送到累加器A 中。

由于寄存器的读写速度通常比内存快,所以这种方式可以提高指令的执行效率。

寄存器间接寻址则是通过寄存器中的内容作为地址来访问片内RAM 单元。

比如,“MOV A, @R0”,这里先读取寄存器 R0 中的值,然后以这个值作为地址,从对应的片内 RAM 单元中取出数据传送到累加器 A 中。

这种方式扩大了可访问的地址范围。

嵌入式开发教程之ARM 指令的寻址方式

嵌入式开发教程之ARM 指令的寻址方式


千锋嵌入式学院 最专业的嵌入式培训机构
相对寻址 目标地址 = pc 当前值 + 指令给出的标 号偏移地址 BL NEXT ;跳转到子程序NEXT 处执行 ...... NEXT ...... MOV PC,LR ;从子程序返回


千锋嵌入式学院 最专业的嵌入式培训机构
基址变址寻址 操作数地址 = 基址寄存器 + 指令 中给出的地址偏移 LDR R0,[R1,#4] ;R0←[R1+4] LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1 +4 LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4 LDR R0,[R1,R2] ;R0←[R1+R2]

பைடு நூலகம்
千锋嵌入式学院 最专业的嵌入式培训机构
arm 微处理器支持这四种类型的堆栈工作方式。 - 满递增堆栈:堆栈指针指向最后压入的数据,且 由低地址向高地址生成。 - 满递减堆栈:堆栈指针指向最后压入的数据,且 由高地址向低地址生成。 - 空递增堆栈:堆栈指针指向下一个将要放入数据 的空位置,且由低地址向高地址生成。 - 空递减堆栈:堆栈指针指向下一个将要放入数据 的空位置,且由高地址向低地址生成。

千锋嵌入式学院 最专业的嵌入式培训机构
操作数在寄存器 ADD R0,R1,R2 ;R0←R1+R2

千锋嵌入式学院 最专业的嵌入式培训机构
寄存器间接寻址操作数的地址在寄存器 ADD R0,R1,[R2] ;R0←R1+[R2] LDR R0 [R1] ;R0←[R1] R0,[R1] R0←[R1] STR R0,[R1] ;[R1]←R0

千锋嵌入式学院 最专业的嵌入式培训机构
多寄存器寻址 类似寄存器寻址,此处是多个寄存 器而已 LDMIA R0 {R1 R2 R3 R4} ;R1←[R0] R0,{R1,R2,R3,R4} R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12]

嵌入式系统第3章

嵌入式系统第3章
第3章arm指令系统与汇编语言程序设计31arm指令系统概述311arm指令系统的特点1所有的运算都在寄存器中进行所有的运算都在寄存器中进行2多数指令可以有条件执行多数指令可以有条件执行3具有批量寄存器数据传送指令具有批量寄存器数据传送指令4支持32位和16位双指令集位双指令集5提供一些数字信号处理指令提供一些数字信号处理指令6具有协处理指令312arm汇编指令的基本格式arm指令的二进制代码的基本格式
(1)字数据加载指令LDR 指令功能:把内存中的字数据传送到目标寄存 器中去。 例:LDR R0,[R1] ; 将R1存放地址的内存字单 元数据传送到R0中 (2)字节数据加载指令LDRB 指令功能:把内存中的字节数据传送到目标寄存 器中去。 例:LDRB R0,[R1];将R1存放地址的内存字节 单元数据传送到R0中
;R0 ←R1+R2
4. 减法指令
(1)SUB 减法指令
例:SUB R0,R1,R2 ; R0 ←R1-R2
(2)SBC 带借位减法指令 例:SBC R0,R1,R2 ; R0 ←R1-R2-!C 例:RSB R0,R1,R2 ; R0 ←R2-R1
(3)RSB 逆向减法指令和逆向带借位减法指令
5. 逻辑运算指令 (1) 逻辑“与”指令AND
第3章 ARM指令系统与汇编语言程序设计 3.1 ARM指令系统概述 3.1.1 ARM指令系统的特点 (1)所有的运算都在寄存器中进行 (2)多数指令可以有条件执行 (3)具有批量寄存器数据传送指令 (4)支持32位和16位双指令集 (5)提供一些数字信号处理指令 (6)具有协处理指令
3.1.2 ARM汇编指令的基本格式
16进制数
2. 寄存器寻址
寄存器寻址——操作数在寄存器中

嵌入式系统与接口技术 第3章 指令系统

嵌入式系统与接口技术 第3章 指令系统
00H~7FH和特殊功能寄存器(地址范围80H~FFH) ✓ 在间接地址中,用R0或R1作为内部RAM的地址指针,可访问内部
RAM的00H~7FH共128个单元。
16
6.堆栈操作指令 内部RAM中设定一个后进先出(LIFO,Last In First
Out)的区域,称为堆栈。在特殊功能寄存器中有一个堆 栈指针SP,指示堆栈的栈顶位置。
第3章 8051指令系统与 编程基础
2
第3章 8051指令系统与编程基础
指令系统概述 指令格式 指令系统的寻址方式 8051指令系统分类介绍 8051指令系统汇总 某些指令的说明 8051汇编语言程序设计基础 8051汇编语言程序设计举例
3
指令系统概述
简明、易掌握、效率较高的指令系统,复杂指令集。 按所占字节分,分三种: (1)单字节指令49条; (2)双字节指令45条; (3)三字节指令17条。 按执行时间来分,分三种: (1)1个机器周期(12个时钟振荡周期)的指令64条; (2)2个机器周期指令45条; (3)4个机器周期——乘、除指令。
【问】当一条指令给定后,如何来确定该指令的寻址方式?
例: MOV A,#40H,属于立即数寻址还是寄存器寻址? ✓ 要看以哪个操作数作为参照系。 ✓ 操作数分为源操作数和目的操作数。对于源操作数“#40H” 是“立即数
寻址”方式,但对目的操作数“A”来说属于“寄存器寻址”方式。 ✓ 一般而言,寻址方式指的是源操作数,所以此例为立即数寻址方式。
MOV direct,Rn ; (Rn)→direct,n =0~7
MOV direct1,direct2 ;(direct2)→direct1
MOV direct,@Ri
; ((Ri))→direct,i =0,1

计算机三级嵌入式知识点讲解

计算机三级嵌入式知识点讲解

一、嵌入式系统开发的基础知识1.嵌入式系统的特点、分类、发展与应用,熟悉嵌入式系统的逻辑组成。

(1)特点:专用性隐蔽性(嵌入式系统是被包装在内部)资源受限(要求小型化、轻型化、低功耗及低成本,因此软硬件资源受到限制)高可靠性(任何误动作都可能会产生致命的后果)软件固化(软件都固化在只读存储器ROM中,用户不能随意更改其程序功能)实时性(2)逻辑组成硬件:1)处理器(运算器、控制器、存储器)目前所有的处理器都是微处理器中央处理器(CPU)和协助处理器(数字信号处理器DSP、图像处理器、通信处理器)2)存储器(随机存储器RAM和只读存储器ROM)RAM分为动态DRAM和静态SRAM两种。

DRAM电路简单、集成度高、功耗小、成本低,但速度稍慢慢;SRAM电路较复杂、集成度低、功耗较大、成本高,但工作速度很快,适合用作指令和数据的高速缓冲存储器RAM当关机或断电时,其中的信息都会消失,属于易失性存储器ROM属于不易失性存储器。

分为电可擦可编程只读存储器(存放固件)和闪速存储器(Flash ROM简称内存)。

内存的工作原理:在低压下,存储的信息可读但不可写,这类似于ROM;在较高的电压下,所存储的信息可以更改和删除,这有类似于RAM。

3)I/O设备与I/O接口4)数据总线软件(3)分类按嵌入式系统的软硬件技术复杂程度进行分类:1)低端系统采用4位或8位单片机,在工控领域和白色家电领域占主导地位,如计算器、遥控器、充电器、空调、传真机、BP机等。

2)中端系统采用8位/16位/32位单片机,主要用于普通手机、摄像机、录像机、电子游戏机等。

3)高端系统采用32位/64位单片机,主要用于智能手机、调制解调器、掌上计算机、路由器、数码相机等。

(4)发展20世纪60年代初,第一个工人的现代嵌入式系统(阿波罗导航计算机)20世纪60年代中期,嵌入式计算机批量生产20世纪70年代,微处理器出现20世纪80年代中期,外围电路的元器件被集成到处理器芯片中,昂贵的模拟电路元件能被数字电路替代20世纪90年代中期SOC出现,集成电路进入超深亚微米乃至纳米加工时代2.嵌入式系统的组成与微电子技术(集成电路、EDA、SoC、IP核等技术的作用和发展)(1)集成电路IC集成电路的制造大约需要几百道工序,工艺复杂。

嵌入式系统第三讲 ARM指令系统

嵌入式系统第三讲 ARM指令系统

ARM处理器指令集概述(-) ARM处理器指令集概述(-) 处理器指令集概述
ARM处理器指令集为加载/存储型 ARM处理器指令集分为ARM指令集(32位编码长度) 和Thumb指令集(16位编码长度)。 Thumb 指 令 集 是 ARM 指 令 集 的 一 个 子 集 , 即 所 有 的 Thumb指令均有相对应的ARM指令。 ARM指令集包括: 1) 跳转指令 2) 数据处理指令 3) 程序状态寄存器处理指令
MOV R0, R0 LSL R1
Rm = 1011 1011 0100 0000...0 R0 =
0000 0010 1110 1ቤተ መጻሕፍቲ ባይዱ01...0
CLZ R1, R0
R1 = 0x6
乘法指令
ARM处理器的普通乘法指令共6条: 32位的运算结果 64 64位运算结果 乘法类指令的所有操作数和结果必须为通用寄存 器 且不能是立即数或者寄存器的移位结果 结果寄存器与操作数1不能相同; r15不能作为操作数寄存器或结果寄存器。
指令名 ADD SUB RSB ADC SBC RSC AND ORR EOR BIC MOV MVN CMP CMN TST TEQ
指令含义 相加 相减 反向相减 带进位加 带借位减 反向带借位减 位与 位或 位异或 位清零 传送 传送非 比较 负向比较 测试 测试相等
操作 Rd=Rn+op2 Rd=Rn-op2 Rd=op2-Rn Rd=Rn+op2+C Rd=Rn-op2+C-1 Rd=op2-Rn+C-1 Rd=Rn AND op2 Rd=Rn OR op2 Rd=Rn EOR op2 Rd=Rn AND NOT op2 Rd=op2 Rd=NOT op2 Rn-op2 Rd=op2-Rn Rn AND op2 Rn EOR op2

单片机与嵌入式系统原理第三章

单片机与嵌入式系统原理第三章

(7F02H)=2DH
(7F03H)=38H
(7F04H)=40H
4.定义字伪指令
格式: DW Y1,Y2,…高地址单元!!!
第三章 MCS-51指令系统
3-1 指令格式
二、 伪指令 汇编时不产生机器码
5.定义空间伪指令:DS 表达式
例3-6
ORG
0F00H
MOV bit, C ;bit←(C) 其中一个操作数必须为位累加器C(即PSW中的Cy)。
例:将位地址20H中的内容传送到位地址30H中:
MOV C,20H
MOV 30H,C
0
错:MOV 30H,20H
;此为字节传送指令
第三章 MCS-51指令系统
3. 外部传送指令 实现片外数据存储器和A累加器之间的数据传送。
指令格式:MOVX 目的操作数,源操作数
寻址方式:片外数据存储器用寄存器间址方式。 1).DPTR作16位数据指针,寻址64KB片外RAM空间
MOVX A,@DPTR ;A←((DPTR)) MOVX @DPTR,A ;(DPTR)←(A) 2).Ri作8位数据指针,寻址256B片外RAM空间 MOVX A,@Ri ;A←((Ri)) MOVX @Ri,A ;(Ri)←(A)
操作数:指令操作的对象,可以是数据、地址、寄存器名及 约定符号。
注释行:说明指令在程序中的作用。
操作码和操作数是指令主体。
第三章 MCS-51指令系统
3-1 指令格式
一、 汇编语言指令格式
注意以下一些常用符号:
#data 立即数
direct 直接地址
@Ri
以Ri里面的内容为物理地址的存储单元(i=0、1)
6.等值伪指令:EQU 数据或汇编符

嵌入式系统开发与应用教程 第三讲

嵌入式系统开发与应用教程 第三讲
当堆栈指针指向最后压入堆栈的数据时,称为满 堆栈(Full Stack),而当堆栈指针指向下一个将要 放入数据的空位置时,称为空堆栈(Empty Stac k)。
即访问存储器时,存储器的地址向高地址方向生 长,称为递增堆栈(ascending stack)。 存储器的 地址向低地址方向生长,称为递减堆栈(descend23in g stack)。
ARM指令系统支持如下几种常见的寻址方式:
立即寻址
寄存器寻址
寄存器间接寻址
基址加偏址寻址
堆栈寻址
块拷贝寻址
相对寻址
11
立即寻址
立即寻址也叫立即数寻址,这是一种特殊的寻址方 式,操作数本身就在指令中给出,只要取出指令也就取 到了操作数,这个操作数被称为立即数,对应的寻址方 式也就叫做立即寻址。例如以下指令:
3
一、 ARM指令集概述
•ARM指令集是32位的,ARM汇编程序的 启动都是从ARM指令集开始。所有的ARM 指令集都可以是有条件执行的。本节从以 下三个方面介绍:
指令分类及指令格式 指令集编码 条件执行
4
指令分类及指令格式
ARM指令集可以分为六大类,分别为数据处理指令、Load/Store指令、跳转指令、程序状态寄 存器处理指令、协处理器指令和异常产生指令。
寄存器寻址就是利用寄存器中的数值作为操作数,这 种寻址方式是各类微处理器经常采用的一种方式,也 是一种执行效率较高的寻址方式。以下指令:
ADD R0,R1,R2
/*R0←R1+R2*/
该指令的执行效果是将寄存器R1和R2的内容相加,其 结果存放在寄存器R0中。
15
寄存器寻址
第二操作数为寄存器型的移位操作 在ARM指令的数据处理指令中参与操作的第二操作数为
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TM

嵌入式系统原理
20
20
堆栈寻址
ARM微处理器指令的寻址方式

根据堆栈的生成方式,又可以分为递增堆栈( Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址向高地址生成时, 称为递增堆栈,当堆栈由高地址向低地址生成 时,称为递减堆栈。
嵌入式系统原理
TM
21
指令的条件域表-1
ARM微处理器指令的条件域
条件码
0000 0001 0010 0011
后缀
EQ NE CS CC
标志
Z置位 Z清零 C置位 C清零 相等
含义
不相等 无符号数大于或等 于 无符号数小于
0100
0101 0110 0111
嵌入式系统原理
MI
PL VS VC
N置位
N清零 V置位 V清零
TM
嵌入式系统原理
18
18
相对寻址
ARM微处理器指令的寻址方式

与基址变址寻址方式相类似,相对寻址以程序计数器PC的当 前值为基地址,指令中的地址标号作为偏移量,将两者相加 之后得到操作数的有效地址。以下程序段完成子程序的调用 和返回,跳转指令BL采用了相对寻址方式: BL NEXT …… NEXT …… MOV PC,LR ;从子程序返回 ;跳转到子程序NEXT处执行
BLX
BX
嵌入式系统原理
带返回和状态切换的跳转指令
带状态切换的跳转指令
TM
3
3
ARM微处理器指令表-2
ARM微处理器指令的分类 助记符 CDP 指令功能描述 协处理器数据操作指令
CMN
CMP
比较反值指令
比较指令
EOR
LDC LDM LDR MCR
嵌入式系统原理
异或指令
存储器到协处理器的数据传输指令 加载多个寄存器指令 存储器到寄存器的数据传输指令 ARM寄存器到协处理器寄存器数据传输
/*R0←[R1]*/
/*[R1]←R0*/
R1,R1,[R2] ;将寄存器R1的值和R2指定的存储单元的内容交
0x40000000
0xAA

R2 0x40000000 在第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一 R0 0xAA 0x55 个操作数后与R1相加,结果存入寄存器R0中;
第二条指令将以R1的值为地址的存储器中的数据传送到R0中。 第三条指令将R0的值传送到以R1的值为地址的存储器中。
嵌入式系统原理
TM
LDR
R0,[R2]
16
16
基址变址寻址
ARM微处理器指令的寻址方式

基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令 中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式 常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下 几种形式,如下所示: LDR R0,[R1,#0x0c] LDR R0,[R1,#4]! ;R0←[R1+4] ;R0←[R1+4]、R1←R1+4
嵌入式系统原理
TMΒιβλιοθήκη 1919堆栈寻址
ARM微处理器指令的寻址方式

堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个 称作堆栈指针的专用寄存器指示当前的操作 位置,堆栈指针总是指向栈顶。 当堆栈指针指向最后压入堆栈的数据时,称 为满堆栈(Full Stack),而当堆栈指针指向 下一个将要放入数据的空位置时,称为空堆 栈(Empty Stack)。
R0,R0,#0x3f R0 0xFF00 0x55 MOV R0,#0xFF000 ;将立即数0xFF000 装入R0 MOV R0,#0xFF00 在以上指令中,第二个源操作数即为立即数,要求以“#” 为前缀,对于以十六进制表示的立即数,还要求在“#”后 加上“0x”。
嵌入式系统原理
TM
ADD
21
堆栈寻址
ARM微处理器指令的寻址方式 高地址
递增堆栈 递减堆栈
堆栈压栈 SP栈顶
0x12345678 栈底
栈区
向上 增长
堆栈存 储区
向下 增长
栈区
栈底
栈顶SP
0x12345678
TM
低地址
嵌入式系统原理
堆栈压栈
22
22
堆栈寻址
ARM微处理器指令的寻址方式
堆栈指针指向最后压入的堆栈的有效数据项, 称为满堆栈;堆栈指针指向下一个待压入数据 的空位置,称为空堆栈。
嵌入式系统原理
MOV
; 然 后
R0,R2,LSL #3
15
TM
15
寄存器间接寻址
ARM微处理器指令的寻址方式
寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存
放在存储器中。例如以下指令: ADD R0,R1,[R2] /*R0←R1+[R2]*/
LDR
STR SWP
R0,[R2]
R0,[R1]
TM
负数
正数或零 溢出 未溢出
10
10
指令的条件域表-2
ARM微处理器指令的条件域 条件码 1001 1010 1011 1100 后缀 LS GE LT GT 标志 C清零Z置位 N等于V N不等于V Z清零且(N 等于V) Z置位或(N 不等于V) 忽略
TM
含义 无符号数小于或等 于 带符号数大于或等 于 带符号数小于 带符号数大于
嵌入式系统原理
TM
24
24
块拷贝寻址
ARM微处理器指令的寻址方式

多寄存器传送指令用于将一块数据从存储器 的某一个位置拷贝到另一个位置。如:
STMIA R0!,{R1-R7};将R1~R7的数据保存到存储器中; 存储指针R0在保存第一个值之后向上增长 STMIB R0!,{R1-R7};将R1~R7的数据保存到存储器中; 存储指针R0在保存第一个值之前向上增长
在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取得操作 LDR R0,[R1,#0x0C] 数存入寄存器R0中,然后,R1的内容自增4个字节。



在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作数的有效 地址,从而取得操作数存入寄存器R0中。
TM
嵌入式系统原理
17
17
多寄存器寻址
压栈 SP栈顶 SP栈顶 0x12345678 0x12345678 SP栈顶 SP栈顶 压栈 0x12345678
满堆栈 栈底 栈底
空堆栈
嵌入式系统原理
TM
23
23
堆栈寻址
ARM微处理器指令的寻址方式

这样就有四种类型的堆栈工作方式



满递增堆栈:堆栈指针指向最后压入的数据,且由低地 址向高地址生成。指令如LDMFA、STMFA等; 满递减堆栈:堆栈指针指向最后压入的数据,且由高地 址向低地址生成。指令如LDMFD、STMFD等; 空递增堆栈:堆栈指针指向下一个将要放入数据的空位 置,且由低地址向高地址生成。指令如LDMEA、STMEA等 ; 空递减堆栈:堆栈指针指向下一个将要放入数据的空位 置,且由高地址向低地址生成指令如LDMED、STMED等。
/*R0←R0+1*/ 从代码中获得数据 /*R0←R0+0x3f*/
14
14

寻址方式分类——寄存器移位寻址
ARM微处理器指令的寻址方式 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个 操作数是寄存器移位方式时,第2个寄存器操作数在与第1个 操作数结合之前,选择进行移位操作。寄存器移位寻址指令 举例如下: R0,R2,LSL #3 ;R2的值左移3位,结果 ;放入R0,即是R0=R2×8 逻辑左移3位 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位, R2 0x01 0x08 和R1相 “与”操作,结果放入R1 R0 0x08 0x55 MOV
TM
4
4
ARM微处理器指令表-3
ARM微处理器指令的分类
助记符
MLA MOV MRC MRS MSR MUL MLA MVN
嵌入式系统原理
指令功能描述
乘加运算指令 数据传送指令 协处理器寄存器到ARM寄存器数据传输 传送CPSR或SPSR的内容到通用寄存器 传送通用寄存器到CPSR或SPSR的指令 32位乘法指令 32位乘加指令 数据取反传送指令

ARM微处理器的指令集可以分为六大类 :

跳转指令 数据处理指令 程序状态寄存器(PSR)处理指令 加载/存储指令 协处理器指令和异常产生指令 异常中断产生指令
TM
嵌入式系统原理
2
2
ARM微处理器指令表-1
ARM微处理器指令的分类 助记符 ADC ADD AND B BIC BL 指令功能描述 带进位加法指令 加法指令 逻辑与指令 跳转指令 位清零指令 带返回的跳转指令
LDR R0,[R1] ,#4
LDR R0,[R1,R2]

;R0←[R1]、R1←R1+4
0x4000000C
;R0←[R1+R2]
0xAA
将R3+0x0C作 在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取 R1 0x40000000 得操作数存入寄存器R0中。 为地址装载数 R0 0xAA 0x55 在第二条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取 据 得操作数存入寄存器R0中,然后,R1的内容自增4个字节。
1101 1110
嵌入式系统原理
LE AL
带符号数小于或等 于 无条件执行
11
11
ARM指令的寻址方式
相关文档
最新文档