单片机原理及其接口技术第3章指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.十六位数据传送指令(1条) 6.查表指令(2条) 7.累加器A与片外RAM传送指令(4条) 8.栈操作指令(二条) 9.交换指令(4条)
Back
1.以累加器A为目的操作数的指令 (4条,即4种寻址方式)
汇编指令格式 MOV A,Rn; 机器码格式 1110 1rrr (Rn) 操作 A 注释
MOV Rn,direct;
1010 1rrr direct
(direct)
Rn
MOV Rn,#data;
0111 1rrr data
#data
Rn
Back
直接寻址和立这组指令的功 能是把源操作数所指定的内容送 到当前工作寄存器组R0~R7中的某 个寄存器。源操作数有寄存器寻 址,即数寻址三种方式。
BACK
§3.3
MCS-51 指令系统
概述: MCS-51 指令系统由 111 条指令组成。 其中,单字节指令 49 条,双字节指令 45 条, 三字节指令 17 条。 从指令执行时间看,单周期指令 64 条,双周期 45 条,只有乘、除指令为 4 个周期。
BACK
MCS-51指令系统可分为五大类
Back
Rn,
3 、以直接地址为目的操作数的指令(5条)
汇编指令格式 MOV direct,A
;
机器码格式 1111 0101 direct
操作 (A)
direct
MOV
direct,Rn;
1000 1rrr direct
(Rn)
direct
注释 将累加器 A 中内容传 送到直接地址 direct 所指出的片内存储单 元中。 将工作寄存器 Rn(即 R0-R7) 中内容传送到 直接地址 direct 所 指出的片内存储单元 中
这组指令的功能是把源操作数 所指定的内容送入由直接地址 direct 所指出的片内存储单元中。 源操作数有 寄存器寻 址,直接寻 址,寄存器间接寻址和立即寻址等 方式。
Back
4 、以间接地址为目的操作数的指令(3条)
汇编指令格式 MOV @Ri, A ; 机器码格式 1111 011i 操作 (A) (Ri) 注释 将累加器 A 中内容传送 到间接寻址(Ri 为 R0 或 R1)所得的片内 RAM 单元中。 将直接寻址所得的片内 RAM 单元内容或特殊功 能寄存器中的内容传送 到间接寻址(Ri 为 R0 或 R1)所得的片内 RAM 单元中 将立即数传送到间接寻 址(Ri 为 R0 或 R1)所 得的片内 RAM 单元中
BACK
6、相对寻址
例如: ROM中地址2000H开始机器码 8054H 汇编:SJMP rel 其中:80H是操作码,54H是偏移量rel 执行后,PC=2000h+2+54H
BACK
7、位寻址
位寻址:采用位寻址方式的指令的操作数是8
位二进制数中的某一位,指令中给出的是位地 址。位地址在指令中用bit表示。 例如:CLR bit; 位地址的两种表示方法:直接使用位地址,如 D3H;直接用寄存器名字加位数,如PSW.3。 位寻址区域:片内RAM的20H-2FH的16个单元 中的128位;字节地址能被8整除的SFR。
BACK
符号注释
Rn(n=0-7):当前选中的工作寄存器组R0-R7。 Ri(I=0,1):作为地址指针的两个工作寄存器R0,R1。 #data:8位立即数。 #data16:16位立即数。 direct:8位片内RAM单元(包括SFR)的直接地址。 addr11:11位目的地址,用于ACALL和AJMP指令中。 addr16:16位目的地址。用于LCALL和LJMP指令中。 rel:补码表示的8位地址偏移量。范围:-128-+127D。 bit:片内RAM或SFR的直接寻址位地址。 @:间接寄存器的符号。 /:位操作指令中对该位先取反再参与操作,不影响原值。 (×):×中的内容。 ((×)):×指出的地址单元中的内容。 →:指令操作流程方向。
4、寄存器间接寻址
寄存器间接寻址:操作数的地址ቤተ መጻሕፍቲ ባይዱ先存放在某个寄
存器中,寄存器间接寻址是把指定寄存器的内容作为 地址,由该地址所指定的单元内容作为操作数。
8051规定R0或R1为间接寻址寄存器,它可寻址内部
地址RAM低位的128B单元内容。还可采用DPTR作为 间接寻址寄存器,寻址外部数据存储器的64KB空间。
Back
MOV direct, direct;
1000 0101 源 direct 目的 direct
(源 direct) 目的 direct
MOV direct,@Ri ;
1000 011i direct
((Ri))
direct
MOV direct,#data;
0111 0101 direct data
0111 0100 data
#data
A
将间接寻址(Ri 为 R0 或 R1)所得的片内 RAM 单元内容或特殊功能积 存器中的内容传送到累 加器 A 中 将立即数传送到累加器 A中
例:
MOV MOV MOV MOV A,#30H A, 30H A,@R1 A,R1 ;(A)=30H ;(A)=11H ;(A)=11H ;(A)=30H
DPTR内容与A的内容之 和为程序存储器地址
ROM
DPTR
02F1H A
A 11H
①
+
0302H 1EH
②
1EH
程序存储器内容送A
BACK
6、相对寻址 相对寻址:是以当前的PC值加上指令中规定
的偏移量rel而形成实际的转移地址。
相对寻址只出现在相对转移指令中。 当前的PC值是指执行完相对指令后的PC 值;相对转移指令操作码所在地址称为 源地址;转移后的地址称为目的地址。 目的地址=源地址+相对转移指令字节数 +rel rel为补码表示的有符号数。
§3.1.2
8051汇编语言指令格式
操作码
指令格式
[目的操作数][,源操作数][;注释]
汇编语言指令对应的二进制代码格式
单字节指令 双字节指令 三字节指令
BACK
单字节指令
1、指令码中隐含着对某一种寄存器的操 作 如:指令“INC DPTR”的指令代码格式为: A3H=1 0 1 0 0 0 1 1 2、由指令中的rrr三位的不同编码指定某 一寄存器 如:指令“MOV A,Rn”的指令代码格式 为:1 1 1 0 1 r r r
BACK
双字节指令
用一个字节表示操作码,另一个字节表 示操作数或操作数所在的地址。
格式为:
操作码 ADD A #6B 立即数或地址 24 6B
BACK
三字节指令
一个字节操作码,两个字节操作数。
格式为:
操作码 MOV 40H 41H
立即数或地址
立即数或地址
85H 40H 41H
BACK
§3.2
寻址方式
一、什么是寻址方式:如何找到存放操作数
的地址,把操作数提取出来的方法。
二、寻址方式的种类: 三、寻址空间及符号注释:
BACK
二、寻址方式的种类:
1、寄存器寻址 2、直接寻址 3、立即数寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址
BACK
1、寄存器寻址 寄存器寻址:由指令指出寄存器组R0~R7
[1] [2] [3] [4] [5] 数据传送指令:28条 算术运算指令:24条 逻辑运算及移位指令:25条 控制转移指令:17条 位操作指令(布尔操作):17条
Back
§3.3.1 数据传送指令
1.以累加器A为目的操作数的指令 (4条,即4种寻址方式) 2.以寄存器Rn为目的操作数的指令(3条) 3.以直接地址为目的操作数的指令(5条) 4.以间接地址为目的操作数的指令(3条)
#data
direct
将直接地址源 direct 所指出的片内存储单 元中内容传送到直接 地址目的 direct 所 指出的片内存储单元 中 将间接寻址 (Ri 为 R0 或 R1) 所得 的片 内 RAM 单元内容传送到 直接地址 direct 所 指出的片内存储单元 中 将立即数传送到直接 地址 direct 所指出 的片内存储单元中
BACK
三、寻址空间及符号注释
1、寻址空间:见表3-2。 2、符号注释:
BACK
表3-2 操作数寻址方式和有关空间
寻址方式 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 程序存储器 ROM 片内 RAM 低 128B、特殊功能寄存器 工作寄存器 R0-R7、A、B、C、DPTR 片内 RAM 低 128B、片外 RAM 程序存储器(@A+PC,@A+DPTR) 程序存储器 256B 范围(PC+偏移量) 片内 RAM 的 20H-2FH 字节地址、部分 SFR 寻址空间
例如
BACK
例如:将片内RAM 65H单元内容47H送A,可执
行指令“MOV A,@R0”。其中R0内容为65H。 如图所示:
以指令中所指定 的R0内容(65H) ① 为指针
数据存储器
R0
65H
地址
┋
② A 47H
将片内RAM 65H 单元内容47H送A
65H ┋
47H
BACK
5、变址寻址(基址寄存器+变址寄存器间接寻址)
中的某一个或其他寄存器(A,B,DPTR等)的内 容作为操作数。
例如:MOV A,R0;(R0)→A MOV P1,A;(A)→P1口 ADD A,R0;(A)+(R0)→A
BACK
2、直接寻址
直接寻址方式:在指令中直接给出操作数所在存储
单元的地址。指令中操作数部分是操作数所在地址。
直接寻址方式可访问片内RAM的128个单元以及所有 的SFR。对于SFR,既可以使用它们的地址,也可以 使用它们的名字。
分为机器语言、汇编语言和高级语言。
机器语言:用二进制编码表示每条指令,是计算机
能直接识别和执行的语言。
把10放到累加器A中
01110100 00001010
BACK
把10放到累加器A中
01110100 00001010
Mov A, #0AH 汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的。
第三章 指令系统及程序设计举例
§3.1 §3.2 §3.3 §3.4 汇编语言 寻址方式 8051指令系统 程序设计举例
Exit
§3.1
§3.1.1 §3.1.2
汇编语言
指令和程序设计语言 指令格式
BACK
§3.1.1 指令和程序设计语言
指令:是CPU根据人的意图来执行某种操作的命令。 程序设计语言:是实现人机交换信息的基本工具,
将 工 作 寄 存 器 Rn ( 即 R0~R7)内容传送到累加 器A中 将直接寻址所得的片内 RAM 单元内容或特殊功 能寄存器中的内容传送 到累加器 A 中
MOV A,direct;
1110 0101 direct
(direct)
A
Back
MOV A,@Ri;
1110 011i
((Ri))
A
MOV A,#data;
如:(A)=78H,(R5)=47H,(70H)=F2H, 执行指令: MOV R5,A ;(A) R5, (R5)=78H MOV R5,70H ;(70H) R5, (R5)=F2H MOV R5,#A3H; A3H R5, (R5)=A3H 注意,在8051指令系统中没有“MOV Rn”传送指令。
例如:MOV A,3AH;(3A) →A
MOV A,P1;(P1口) →A 或: MOV A,90H; 90H是P1口的地址
BACK
3、立即数寻址
立即数寻址:指令操作码后面紧跟的是一字节
或两字节操作数,用“#”号表示,以区别直 接地址。 例如:
MOV A,#3AH;3AH→A MOV A,3AH;(3AH)→A ;直接寻址 MOV DPTR,#2000H;2000H→DPTR ;(DPH)=20H ;(DPL)=00H BACK
MOV MOV MOV MOV
A,#30H A, 30H A,@R1 A,R1
;(A)=30H ;(A)=11H ;(A)=11H ;(A)=30H
Back
2 、以寄存器Rn为目的操作数的指令(3条)
汇编指令格式 MOV Rn,A ; 机器码格式 1111 1rrr 操作 A Rn 注释 将累加器 A 中内容传 送到 工作寄存 器 Rn (即 R0-R7)中 将直接寻址所得的片 内 RAM 单元内容或特 殊功能寄存器中的内 容传送到工作寄存器 Rn(即 R0-R7)中 将立即数传送到工作 寄存器 Rn(即 R0-R7) 中
变址寻址:以某个寄存器的内容为基地址,
在这个基地址的基础上加上地址偏移量形成真 正的操作数地址。 8051中采用DPTR或PC为变址寄存器,A的内容 为地址偏移量。 变址寻址只能访问程序存储器,访问范围为 64KB。
例如
BACK
例如:MOVC A,@A+DPTR;((A)+(DPTR))→A 如图所示