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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ 将以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
2.无符号数内积 MR=[Rd]* [Rs] ,us {,n}
us必须注明。其它同符号数内积。
例 、MR=[Rd]*[Rs] ,4
当自动功能开放FIR_MOV ON时,允许运算过
程中数据自由移动
Rd
Rd
X1 X2 X3 X4
Rs
X0 X1 X2 X3
Rs
C1 C2 C3 C4
C1 C2 C3 C4
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
R5
R5
R5
R4
R4
R4
R3
R3
R3
SP
当执行完出栈
低地址
后,内存是什么状
态?
堆栈应用要注意的问题
由于单片机内存空间狭小,内 存空间的使用要特别小心,要精打 细算,以避免出现下述问题。
• 空间冲突-堆栈空间与其它用户空间相交引起 的冲突。这是用户空间估计不足引起的。
• 堆栈溢出-堆栈使用超出其分配范围,这是堆 栈空间分配太少或子程序嵌套太深引起的。
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的内容为起始地址的一组存储器中。高序 号寄存器内容先压入。 ▪压入单个寄存器
[]
寄存器间接寻址
7(111()) PC寄(存R器7)或存储程器序单指元的针数计据数器
指令的格式
指令由操作码字段和操作数字段组成。 操作码字段指示出CPU所要执行的操作,操作 数字段则指出指令执行操作过程中所需要的操 作数。如加法指令中的加数和被加数。
§3.1 寻址方式
例、将1-100存储单元的内容求和,结果放在102
单例元、中将。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
§3.2指令分类
• 数据传送类 • 算术运算类 • 逻辑操作类 • 控制转移类及设置类
12、、123R[R[、、、R装存,d123d=A=C...源加减乘M载储R12a操xr逻 逻 逻地..r±法法法数 数y作址软 程]源辑 辑 辑]运 运 运据 据=操中 序R与 或 异作算 算 算s 断 转数或移 3、45、、R堆45d..=求比栈34-测 移源..补较操操子 功试 位作作调 能数 用 设置
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]
(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。
MR
R器4、R3组成的32位结果2寄(存01n0) R2内积运算项数通用寄存器
+、-、*、 加、减、乘、求补 ~
3(011) R3
通用寄存器
4(10F0I)R R4有限冲击响应通算用法寄存器
&、|、^ 逻辑与、或、异或 5(10/1/) BP注(释R5符) 基址指针寄存器
++、-- 指针增量、减量
6(110#) SR算(术R6或)逻辑操程作序符状态寄存器
二、 算术运算类指令
• 加法运算 • 减法运算 • 乘法运算 • 求补指令 • 比较指令
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
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。
相关文档
最新文档