微控制器寻址方式与指令系统


§3.2指令分类
• 数据传送类 • 算术运算类 • 逻辑操作类 • 控制转移类及设置类
12、、123R[R[、、、R装存,d123d=A=C...源加减乘M载储R12a操xr逻 逻 逻地..r±法法法数 数y作址软 程]源辑 辑 辑]运 运 运据 据=操中 序R与 或 异作算 算 算s 断 转数或移 3、45、、R堆45d..=求比栈34-测 移源..补较操操子 功试 位作作调 能数 用 设置
4、R2=D:[R3 - -] //((R3))=>R2, //(R3)-1=>R3。
5、主要用于堆栈操作
2、寄存器前置增量间接寻址
3、寄存器后置增量间接寻址
4、寄存器后置减量间接寻址
5、寄存器自动增减量间接寻址
五、变址寻址
R1=[BP+IM6] //((BP)+IM6)=>R1
六、PC相对寻址
用于转移指令,(PC)±IM6;IM6<=63
PUSH Rx,Rx to [SP] ▪压入某两个或多个寄存器
PUSH Rx,Ry to [SP] ▪先压栈,SP内容自动减1。 ▪不影响标志位。
例1、执行指令 PUSH R3,PC to [SP]
X
X
高 地
X
X

SP
PC
SR
R5
R4
R3

SP


2、出栈指令
POP Rx,Ry from [SP]
▪ 将以Rs的内容为起始地址的一组存储器中的内容 送到Rx~Ry中。先传送低序号寄存器。
▪ 弹出到单个寄存器 POP Rx,Rx from [SP]
▪ SP内容先自动增量,再弹出。 ▪ 影响标志位N、Z。
例2、执行指令 POP R3,PC from [SP]
高地址
X
X
X
X
PC
SP
PC
PC
SR
SR
SR
JNRA1+S=u[4m] _Loop // 不大于转移
[102]=R…2 …
[102]=R1
一、立即数寻址
寻址方式
二、寄存器寻址 三、直接寻址
1、6位地址直接寻址 2、16位地址直接寻址 3、22位地址直接寻址 四、寄存器间接寻址 1、寄存器间接寻址
123、、、RR2123122、、、RRRR+=位=R1211RRR直[====1012200RR+X+==接XX[11=DD03++22地[X0::55R00[[]2+RXX址54/+/3]/22/06主R零440+位003]+要页00]/立]//用6/1///即位//1/6((于(6(R位(数直RR位3子直33)接立)+)程))接1=地=即=>序>地>址RR数R调址223,。用, 。 //(R3)+1=>R3。
二、 算术运算类指令
• 加法运算 • 减法运算 • 乘法运算 • 求补指令 • 比较指令
Rd=Rx±源操作数[,Carry]
▪MR=Rd*Rs,MR=[Rd]*[Rs] ▪Rd= - 源操作数 ▪CMP Rx,源操作数
内积指令:
1. 符号数内积 MR=[Rd]* [Rs] {,ss} {,n} MR=((Rd))χ((Rs))+ ((Rd+1))χ((Rs+1))+ ((Rd+2))χ((Rs+2))+…… 选项{,ss} ,系统默认值,表示为符号数运算。选项{,n},n=1~16,默认为 1。 MR为R4R3
单例元、中将。1-100存储单元的内容求和,结果放在102
R单1=元0 中。
为RSu2什m=0_L么oRRo11p=+要:0=[0设] 置不同的寻址方式?
RR2+1=+[=+[+1]R1] // (R1)+1 =>R1 ,
R1+=[2]
// (R2)+((R1))=>R2
CRM1P+=R[13,] 100
Rd
目的寄存器或存储器
{}
任选项
Rs
源寄存器或存储器
NZSC SR的标志位
IM6、 IM16
A6、A16
6位、16位立即数
D
非零页数据段寻址
6位、16位存储器地址
ID号 0(00s0s)、us
符有号符号数与无功符能号名数之称间、无符 SP号数与有符号堆数栈之指间的针运计算数关系器
Rx~Ry 序列寄存器,x、y为1~71(00n1n) R1寄存器移位位通数用寄存器
C6M. P循Rx环,源操作数
一、 数据传送类指令
数据装载类 Rd=源操作 //影响N、Z标志。
存储数据类 [RAM地址]=Rs //不影响任何标志。
堆栈操作类
1、压栈指令:
PUSH Rx,Ry to [SP]
▪将Rx~Ry中的数据压入以Rs的内容为起始地址的一组存储器中。高序 号寄存器内容先压入。 ▪压入单个寄存器
(R4R3)=X1*C1+X2*C2+X3*C3+X4*C4
[例3.25]首先在IRAM中定义8个变量。在程序的第一循环阶段, 计算的值为2*5+3*6,即结果为1C;第一循环结束后,由于移位 作用,NO_3的值被NO_2代替,变为0x0002,而NO_2的值不变, 再次循环后的值为2*5+2*6,即结果为0x0016。
[]
寄存器间接寻址
7(111()) PC寄(存R器7)或存储程器序单指元的针数计据数器
指令的格式
指令由操作码字段和操作数字段组成。 操作码字段指示出CPU所要执行的操作,操作 数字段则指出指令执行操作过程中所需要的操 作数。如加法指令中的加数和被加数。
§3.1 寻址方式
例、将1-100存储单元的内容求和,结果放在102
2.无符号数内积 MR=[Rd]* [Rs] ,us {,n}
us必须注明。其它同符号数内积。
例 、MR=[Rd]*[Rs] ,4
当自动功能开放FIR_MOV ON时,允许运算过
程中数据自由移动
Rd
Rd
XX1 X2 X3
Rs
C1 C2 C3 C4
C1 C2 C3 C4
MR
R器4、R3组成的32位结果2寄(存01n0) R2内积运算项数通用寄存器
+、-、*、 加、减、乘、求补 ~
3(011) R3
通用寄存器
4(10F0I)R R4有限冲击响应通算用法寄存器
&、|、^ 逻辑与、或、异或 5(10/1/) BP注(释R5符) 基址指针寄存器
++、-- 指针增量、减量
6(110#) SR算(术R6或)逻辑操程作序符状态寄存器
R5
R5
R5
R4
R4
R4
R3
R3
R3
SP
当执行完出栈
低地址
后,内存是什么状
态?
堆栈应用要注意的问题
由于单片机内存空间狭小,内 存空间的使用要特别小心,要精打 细算,以避免出现下述问题。
• 空间冲突-堆栈空间与其它用户空间相交引起 的冲突。这是用户空间估计不足引起的。
• 堆栈溢出-堆栈使用超出其分配范围,这是堆 栈空间分配太少或子程序嵌套太深引起的。
合集下载

第3章 ARM寻址方式与指令系统

第3章 ARM寻址方式与指令系统

CPSR
SPSR 无 SPSR_abt
CPSR
SPSR_abt SPSR_und SPSR_irq SPSR_fiq
13
一般的通用寄存器
寄存器 寄存器在汇编 类别 中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R13 R14 R13_svc R13_svc R14_svc R13_abt R13_abt R14_abt R15 CPSR 无 SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 14 R13_und R13_und R14_und R13_irq R13_irq R14_irq R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq R13_fiq R14_fiq 未定义 嵌入式系统学科组 中断 快中断
R0(a1)
其中 R0~R7为 R1(a2) R2(a3) 未分组的寄存器,即 R3(a4) 说对于任何处理器模 R4(v1) 式,这些寄存器都对 R5(v2) 应于相同的 R6(v3) 32位物理 通用寄 寄存器。 R7(v4) 存器和
程序计 数器 R8(v5)
R9(SB,v6)
R10(SL,v7) R11(FP,v8) R12(IP)
储器保护 支持硬件协处理器的软件 仿真 未定义指令异常响应时进入此模 式
7
管理 (svc)
中止 (abt) 未定义 (und)
3.1.1 处理器模式

嵌入式系统学科组
ARM微处理器支持7种工作模式; 除用户模式之外的其余6种称为非用户模式,或特权 模式(Privileged Modes); 而特权模式中,除系统模式之外的其余5种又称为异 常模式(Exception Modes),不同的工作模式间可以 相互切换。 处理器的各种工作模式由当前程序状态寄存器CPSR的 低4位M[4:0]决定。

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

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

单片机指令系统-第1讲寻址方式单片机指令系统第 1 讲寻址方式在单片机的世界里,指令系统就像是一套精确的操作指南,而寻址方式则是在这个指南中找到准确操作对象的关键方法。

就好比我们在一个大仓库中寻找特定的物品,需要有明确的方法和路径,不然就会陷入混乱。

今天,咱们就来好好聊聊单片机指令系统中的寻址方式。

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

简单来说,寻址方式就是在单片机的存储空间中找到所需操作数的方式。

操作数就像是我们要处理的“原材料”,而寻址方式就是找到这些“原材料”的途径。

在单片机中,常见的寻址方式有立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址这几种。

咱们先来说说立即寻址。

这种方式就像是手里已经拿着要用的东西,操作数就在指令中直接给出。

比如说“MOV A, 50H”,这里的“50H”就是立即数,单片机一看就知道要把这个数值 50H 放到累加器 A 中,简单直接,一目了然。

接下来是直接寻址。

这就好比是我们知道了物品在仓库中的具体位置,直接去那个位置拿就行。

例如“MOV A, 50H”,这里的“50H”就是一个直接地址,单片机通过这个地址就能找到对应的存储单元,把里面的数据取出来放到累加器 A 中。

再看看寄存器寻址。

这种方式就像是我们把常用的东西放在身边的几个固定盒子里,要用的时候直接从盒子里拿。

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

寄存器间接寻址呢,有点像我们通过一个中间人来找到物品。

比如“MOV A, @R0”,这里是通过寄存器 R0 里存放的地址,再去找到真正的数据,然后把数据送到累加器 A 中。

变址寻址稍微有点复杂,但也不难理解。

可以想象成我们有一个密码本,通过密码本上的规则和给定的基础位置,来找到我们要的数据。

例如“MOVC A, @A +DPTR”,就是根据累加器 A 和数据指针 DPTR的内容来确定最终的地址,从而取出操作数。

第3章 ARM寻址方式与指令系统

第3章 ARM寻址方式与指令系统

MOV R0,R1,LSL #3 移位操作在 ARM指令集中不作为单独的指令使用, ARM指 令集共有5种位移操作。如下所示:
29
寄存器移位寻址

LSL逻辑左移 :Rx,LSL <op1> (Logical Shift Left) LSR逻辑右移 : Rx,LSR <op1> (Logical Shift Right) ASR算术右移 :Rx,ASR <op1> (Arithmetic Shift Right) ROR循环右移 :Rx,ROR <op1> (Rotate Right)
13
V
状态寄存器
标志位 含义 在ARM v5及以上版本的E系列处理器中,用Q标志位指示增强 Q 条件标志位 的DSP运算指令是否发生了溢出。 I F
I=1,表示禁止IRQ中断;否则,表示允许IRQ中断 F=1,表示禁止FIQ中断;否则,表示允许FIQ中断
T
控制位 对于ARM v4 以上版本的T系列处理器,T=0,表示执行ARM指 令,否则,表示执行Thumb指令; 对于ARM v5以上版本的非T系列处理器,T=0,表示指令ARM 指令,否则,表示强制下一条执行的指令产生未定义指令中 断。
负 零 进 溢 数 标 位 出 标 志 标 标 志 志 志
中 断 请 求 禁 用
快 速 中 断 请 求 禁 用
处 理 器 工 作 模 式
12
状态寄存器
标志位 N Z C 含义
当两个补码表示的带符号数运算时,N=1 表示运算的结果为负 数;N=0 表示运算的结果为正数或零; Z=1 表示运算的结果为零;Z=0表示运算的结果不为零; 有3种情况会改变C的值: 加法运算(包括比较指令CMN):当运算结果产生了进位时(无 条件标志位 符号数上溢出), C=1,否则C=0。 减法运算(包括比较指令CMP):当运算时产生了借位(无符号 数下溢出),C=0,否则C=1。 对于包含移位操作的非加/减运算指令,C为移出值的最后一位 对于加/减法运算指令,当操作数和运算结果为二进制的补码表 示的带符号数时,V=1表示符号位溢出。

嵌入式系统第3章ARM寻址方式与指令系统

嵌入式系统第3章ARM寻址方式与指令系统

特权模式
处理器模式
说明
备注
用户 (usr) 正常程序工作模式
不能直接切换到其它模式
系统 (sy(ssy)s)
用于支持操作系统的特权 与用户模式类似,但具有可以直
任务等
接切换到其它模式等特权
快中速断中断(fi(qfi)q) 中外断部中断(i(rirqq)) 管理 (sv(scv)c)
中止 (ab(atb) t)
R13
R14(LR) R14
R14
R15(PC) R15
状态寄 存器
CPSR CPSR
SPSR 无

各模式下实际访问的寄存器
管理管理 中止中止 未定未义定义 中断中断 快中快断中断
R0
R1
R2
R3
R4
R5
R6
R7 R8 R9 R10 R11 R12 R1R31_3s_vscvc R1R31_3a_babt t R1R41_4s_vscvc R1R41_4a_babt t
R12
RR1122__ffiqiq
R13(SP) R13 R13
RR1133__ssvvcc RR1133__aabbtt RR1133__uunndd RR1133__iirrqq RR1133__ffiqiq
R14(LR) R14 R14
RR1144__ssvvcc RR1144__aabbtt RR1144__uunndd RR1144__iirrqq RR1144__ffiqiq
R15(PC) R15
状态寄
CPSR CPSR
存器
SPSR

R15
CPSR SSPPSSRR__savbct SSPPSSRR__aabbtt SSPPSSRR__uunndd SSPPSSRR__iriqrq SSPPSSRR__fifqiq

MSP单片机(精品)

MSP单片机(精品)

单片机的发展趋势
» 单片机发展为嵌入式处理器 单片机位数从4位、8位提高到16位、32位,从单CPU向多CPU发展。32位单片机由 于处理能力和开发方法已经和传统的单片机大相径庭,一般被称为嵌入式处理器, 成为数字系统设计的另外一个分支。
» 集成度进一步提高 单片机内部集成的设备越来越多,包括SRAM、FLASH ROM、E2ROM、AD、DA、PWM、 UART控制器、I2C控制器、 USB控制器、看门狗、上电复位电路、RC振荡器、FPGA 等,真正做到了SOC。
Z80 、MC6800系列等
Z80系列是8051系列流行之前非常流行的单片机,目前几乎没有人使用; 6800系列是Motorola公司80年代末推出的产品,采用RISC结构,成本低廉; 在低端大批量中占有优势。
目前热门的单片机(1)
51增强系列
8051为Intel公司80年代初推出,是目前普及度最广、兼容品种 最多的单片机。标准8051速度较慢,需要12个时钟周期运行一 条指令;目前出现了各大公司都推出了高速的8051兼容内核, 典型的是Dallas公司设计的4指令周期8051内核和Cignal公司研 发的单指令周期8051内核,Cignal公司的增强8051内核运行大 部分指令仅需要一个时钟周期,最快的型号已经达到100Mips 的计算速度。
智能化的仪器仪表:单片机用于包括温度、湿度、流量、流速、电压、 频率、功率、厚度、角度、长度、硬度、元素测定等和各类仪器仪表 中,使仪器仪表数字化、智能化、微型化,功能大大提高。
日常生活中的电器产品:单片机可用于电子秤、录像机、录音机、彩 电、洗衣机、高级电子玩具、冰箱、照相机、家用多功能报警器等。
MSP430系列单片机 原理与应用
2015.03

嵌入式系统(第3章-ARM寻址方式与指令系统-)概要

嵌入式系统(第3章-ARM寻址方式与指令系统-)概要
0用户usr正常程序执行模式不能直接切换到其它模式10000快速中断fiq支持高速数据传输及通道处理fiq异常响应时进入此模式10001外部中断irq用于通用中断处理用于通用中断处理irq异常响应时进入此模式此模式1001010010zhaohwjlueducn管理svc操作系统保护模式系统复位和软件中断响应时进入此模式10011中止abt用于支持虚拟内存和或存储器保护在arm7tdmi没有大用处10111未定义und支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式11011系统sys运行操作系统的特权任务与用户模式类似但具有可以直接切换到其它模式等特权11111andtechnologycomputerscienceaandtechnologycomputersciencea特权模式处理器模式说明备注用户usr正常程序工作模式不能直接切换到其它模式系统sys用于支持操作系统的特权任务等与用户模式类似但具有可以直接切换到其它模式等特权快中断快速中断fiq快中断快速中断fiqfiqfiq支持高速数据传输及通道除用户模式外其它模式均为处理特权模式
储器保护 支持硬件协处理器的软件 仿真 未定义指令异常响应时进入此模 式
Zhaohw@
处理器的工作状态
COMPUTER SCIENCE AND TECHNOLOGY
• 从编程的角度讲,ARM处理器工作在两种状态: ARM状态或Thumb状态。 (1)ARM状态:处理器执行32位的ARM指令集时, 工作在这种状态。 (2)Thumb状态:处理器执行16位的thumb指令集 时,工作在这种状态。 • 状态切换:通过跳转指令实现。
用户模式 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 系统模式 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 CPSR 管理模式 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_svc R14_svc R15 中止模式 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_abt R14_abt R15 未定义指令模式 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_und R14_und R15 外部中断模式 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_irq R14_irq R15 快速中断模式 R0 R1 R2 R3 R4 R5 R6 R7 R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq R14_fiq R15

第04章 寻址方式与指令系统


.lst
库文件 . r43
映像文件
列表文件 object file target file
#include "io430.h" char a,b,c; //定义存储器单元 int main( void ) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P2SEL=0; //置P2为I/O P2SEL2=0; P2OUT=0; //置P2OUT初值 P2DIR=0XFF; //置P2为输出端口 a=b+c; //求和 P2OUT=a; //将结果从P2输出 while(1) { }; //主循环 }
对两个变量求和 C语言程序
main函数反汇编ቤተ መጻሕፍቲ ባይዱ码
程序在存储器中的存放
反汇编上电执行程序代码
Memzero函数代码
程序在存储器中的存放
本课程学习汇编格式指令/程序段的意义:
汇编语言程序反应机器运行的实际过程, 通过了解汇编语言程序段,加深对计算机工作过程的理解。 通过反汇编C语言程序代码,可以从硬件底层更好地理解 C语言程序中的数据类型、数据结构及执行语句的实现。 第2章 了解 单片机的编程结构 第3章 学习单片机C语言程序设计 第4章 了解单片机寻址方式和汇编语言格式的指令系统; 通过反汇编查看C语言程序,从底层了解硬件与程序关系 第5~11章 学习硬件接口并用C语言程序控制硬件接口
第4章 学习要点:
1. 了解MSP430单片机7种寻址方式(实验3任务2)
立即数, 寄存器, 绝对地址,相对地址,寄存器间接,寄存器间接增量,寄存器变址
2. 了解 MSP430单片机常用指令集
MOV, CLR ADD, ADDC, INC, DEC, CMP, TST AND, BIC, BIS, BIT, XOR, INV RRA, RRC, RLA, RLC CLRC, CLRZ, SETC, SETZ JC, JNC, JZ, JNZ, JGE, JL, JMP, BR PUSH, POP(SP堆栈指针寄存器的 作用), CALL, RET, EINT, DINT, RETI(第5章再介绍 )

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

单片机指令系统-第1讲寻址方式单片机指令系统第 1 讲寻址方式在单片机的世界里,指令系统就像是它的“语言规则”,而寻址方式则是这门语言中至关重要的一部分。

简单来说,寻址方式决定了单片机如何找到它需要操作的数据或指令的位置。

让我们先来了解一下什么是寻址。

当单片机执行一条指令时,它需要知道从哪里获取操作数,这个确定操作数位置的过程就是寻址。

就好像你要在书架上找一本书,你得知道它在哪个架子、哪一层,这就是寻址的概念。

常见的寻址方式有很多种,下面我们来一一探讨。

第一种是立即寻址。

在立即寻址方式中,操作数直接包含在指令中。

比如说,指令“MOV A, 50H”,这里的“50H”就是一个立即数,单片机直接使用这个数值进行操作。

这种方式的优点是简单直接,执行速度快,因为操作数就在指令里面,不需要再去别的地方找。

接下来是直接寻址。

直接寻址是指指令中直接给出操作数所在的内部数据存储器地址。

例如,“MOV A, 30H”,这里的“30H”就是内部数据存储器的一个地址,单片机通过这个地址就能找到对应的操作数。

直接寻址方式可以访问片内 RAM 的低 128 个字节和特殊功能寄存器。

然后是寄存器寻址。

这种方式下,操作数存放在寄存器中。

比如“MOV A, R0”,操作数就在寄存器 R0 里面。

由于寄存器的访问速度通常比内存快,所以寄存器寻址方式能够提高指令的执行效率。

寄存器间接寻址也很常见。

在这种方式中,操作数的地址存放在寄存器中。

以“MOV A, @R0”为例,单片机先从寄存器 R0 中取得操作数的地址,然后再根据这个地址去获取操作数。

这种方式可以访问片内RAM 的 00H FFH 地址空间。

变址寻址则稍微复杂一些。

它通过基址寄存器和变址寄存器的内容相加来得到操作数的地址。

比如说,在 8051 单片机中,“MOVC A, @A +DPTR”就是变址寻址的一个例子。

这种方式常用于访问程序存储器中的数据表格。

相对寻址主要用于跳转指令。

第3章ARM微处理器的指令系统1-寻址方式


CMP r3,#0 BEQ skip ADD r0,r1,r2 skip
CMP r3,#0 ADDNE r0,r1,r2
0111
VC
V清零
未溢出
10
Assemble Language of ARM
Cf. p.15
条件码 1000 1001 助记符后缀 HI LS 标志 C置位Z清零 C清零Z置位 N 等于 V Than HI Higher
Unsigned HS Higher or Same N 不等于 LO Lower V Than LS Lower Than or Same
BX
CDP
带状态切换的跳转指令
协处理器数据操作指令
Assemble Language of ARM 4

助记符 CMN CMP EOR LDC LDM LDR MCR 比较反值指令 比较指令 异或指令
指令功能描述
存储器到协处理器的数据传输指令 加载多个寄存器指令 存储器到寄存器的数据传输指令 从ARM寄存器到协处理器寄存器的数据传输指令
Z清零且(N等于V) Z置位或(N不等于V) 忽略
Assemble Language of ARM
1101 1110 1111
LE
带符号数小于或等于 无条件执行 该指令从不执行
11
AL NV
条件执行及标志位
ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。
这样可以提高代码密度,减少分支跳转指令数目,提高性能。

RSB RSC
逻辑或指令
逆向减法指令 带借位的逆向减法指令
Assemble Language of ARM 6

助记符 SBC STC STM STR SUB
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档