《单片机原理及其接口技术》(第2版)清华大学出版社 中国矿业大学 信电学院第3章MCS-51的指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
3.1.2
机器码与汇编语言指令
CPU只能直接执行机器码(即二进码)指令!任何其 他计算机(CPU)语言必须转换(翻译)成机器码指令,才 能被CPU执行 汇编语言指令是机器码指令的符号表示。 机器码(即二进码)指令 例如: 7425H E525H → → 汇编语言指令 MOV A,#25H ADD A,25H
A6/A7 Addr; (Ri)←(Addr) 2T i=0/1 85 Addr2 Addr1;(Addr1)←(Addr2) 2T
18
3、寄存器寻址数据传送:3条 指令表示 MOV MOV MOV A,Rn Rn,A Addr,Rn 机器代码 E8/EF F8/FF 88/8F Addr 功能 A ← Rn Rn ← A (Addr)←Rn 所需时间 ;1T n=0~7 ;1T ;2T
注意:CPU的汇编语言指令是由CPU的设计师确定 的,与计算机软件工程师无关!
4
3.1.2 机器码与汇编语言指令
计算机软件设计师根据CPU的汇编语言指令来了解 CPU的特性与功能,并为该种CPU设计软件系统(如 监控程序、操作系统、语言系统、应用软件系统等) 计算机高级语言: 面向算法,与具体CPU无直接联系,易于移植。 常用的计算机高级语言有: BASIC、PASCAL、Fortran、 C,C++、 VB、VC、Delphi 、 JAVA等。
5
用助记符表示的指令叫汇编语言指令。 汇编语言指令的格式:
操作码 目的操作数,源操作数
例如: MOV A,#00H
操作码:规定指令实现的操作,由2~5个易于理解的英 文缩写字母表示。如:MOV,MOVC,ADD,SUBB,MUL,DIV 等。 操作数:指出参与操作的数据来源和操作结果的存放目 的单元 操作数可以是一个实际的数,也可以是一个数的存放地 址
寄存器寻址 寄存器间接寻 址 变址寻址 相对寻址 位寻址
15
3.3
MCS-51的指令系统:共111条指令
3.3.1 数据传送类指令:共28条 一、 数据传送路径 分片内数据传送MOV、片外数据传送MOVX、程序指令读 取MOVC、堆栈操作及数据交换XCH/XCHD 5类。 二、片内数据传送指令: 15条 基本格式: MOV <dest>, <src>
20
错! 错!
改为 改为
MOV MOV
R0,02H A,#0F3H
三、片外数据传送指令: 7条
21
1、数据指针赋值: 指令表示 MOV DPTR,#DATA16
1条 机器代码 90 DATA H-L 功能 DPTR←DATA16 所需时间 2T
2、片外ROM数据传送指令:2条 指令表示 MOVC A,@A+DPTR ; 机器代码 93 功能 A←(A+DPTR) 所需时间 ;2T
16
17
1、立即数传送:
指令表示 MOV A,#DATA MOV Rn,#DATA MOV @Ri,#DATA
4条
机器代码 74 DATA, 功能 A ← DATA 所需时间 1T 1T n=0~7 1T i=0/1 2T 所需时间 1T 1T 2T n=0~7 2T
78/7F DATA, Rn ← DATA 76/77 DATA, (Ri)← DATA
6、相对寻址: 例如 6008H ← JZ 08H 50##H ← JNC NEXT B955##H ← CJNE R1,#55H,QUIT 特点:在当前指令所在地址的基础上,加上相对偏移地址值 之值,作为转移的目标地址。
(a)指令JZ 08H寻址示意图;
(b)指令JZ F4H寻址示意图
13
7、位寻址: 例如
6
程序: 使计算机完成某种预定任务的指令(或语句)的集合。 软件: 规定计算机完成功能操作的程序(或指令)的总和。 寻址:在全部程序/数据存贮空间中找到操作数。 CPU从内存中取得指令和操作数的方式叫寻址方式。 一种CPU的寻址方式越多,则表明该CPU工作将越灵活、 方便。但较多的寻址方式会使CPU内部结构与电路越复杂。
26
例: PUSH A POP 88H
( 或PUSH √ √ √ Ⅹ
ACC
)
√
PUSH 0F0H PUSH IE POP R0
2、入栈过程:先处理SP值再存数。 即在CPU内部先自动将SP加1,再将以Addr为地址的存储单元中 的数据送到以变动后的SP值为地址的堆栈(存储单元)中。 3、出栈过程:先取数再减SP值。 即从以SP为地址的堆栈(存储单元)中取出数据存入以Addr为 地址的存储单元中,然后再自动将SP值减1。
C208H ← CLR 08H D290H ← SETB P1.0 特点:位地址中确定了被操作的二进数。
14
3.2.3 寻址方式对应的寻址空间
寻址方式 立即寻址 直接寻址 程序存储器ROM 片内RAM低128Byte 特殊功能寄存器SFR 工作寄存器R0~R7,A,B,DPTR 片内RAM低128Byte[@R0,@R1,SP],片外RAM[@R0, @R1,@DPTR] 程序存储器[@A+PC, @A+DPTR] 程序存储器256Byte范围(PC+偏移量) 位地址空间;即片内RAM20H~2FH单元的各个位,地址能被8 整除的11个特殊功能寄存器的各个位,共216Bit. 寻址空间
功能 A A A Rn (Addr) (Ri)
所需时间 1T 1T 1T 1T
XCHD A,@Ri
半字节交换是指:2个操作数的低4位进行交换,高4位不变 例: MOV MOV MOV XCH XCHD A,#38H R0,#40H 40H,#6FH A,@R0 A,@R0 ;A=38H ;R0=40H ;(40H)=6FH ;A=6FH, (40H)=38H ;A=68H, (40H)=3FH
7
例如: Intel 8086 CPU 有6种寻指方式, 133条指令; 包括8080/8085的全部指令. Zilog公司的著名的Z80 CPU有10种寻指方式, 158条指令。 MCS-51单片机有7种寻指方式,111条指令。 这些CPU都具有超过100条以上的指令, CPU内部结 构都相当的复杂,故它们被称为“复杂指令集计算 机”( CISC,Complex Instruction Set Computer). 但是,属于RISC结构的AVR MEGA 单片机,也有 12/15种寻指方式,89/118/130条指令。
4、寄存器间址数据传送:3条 指令表示 MOV MOV MOV A,@Ri @Ri,A Addr,@Ri 机器代码 E6/E7 F6/F7 86/87 Addr 功能 A←(Ri) (Ri)←A (Addr)←(Ri) 所需时间 ;1T i=0/1 ;1T ;2T
19
5、指令使用注意事项与应用举例
该指令也称为查表指令。 MOVC A,@A+PC ; 83 A←(A+PC) ;2T
这2条指令使用变指寻址。 执行过程是: 将A之值与DPTR(或PC)之值相加,再以此相加之和作为地址, 从程序存储器的这个单元取出1B 数据,送到A中。
22
3、片外RAM数据传送指令:4条 指令表示 MOVX A,@DPTR MOVX @DPTR,A 机器代码 E0H F0H 功能 A←(DPTR) (DPTR) ← A 所需时间 2T 2T
25
五 堆栈操作指令:2条 堆栈操作指令 将数据存入堆栈,叫入栈,使用指令: 指令表示 PUSH Addr 指令表示 POP Addr 机器代码 ;C0 Addr 机器代码 ;D0 Addr 所需时间 ;2T 所需时间 ;2T
将数据从堆栈取出,叫出栈, 使用指令:
注意:PUSH/POP指令中的Addr可以是直接地址值,也 可以是SFR中的寄存器名称,但不能使用通用寄存器 名(如R0~R7)。
1、SFR只能直接寻址; 2、间址寄存器只能用R0/R1; 3、数据或地址若以A-F起头,则前面须加“0”; 4、Rn之间的数据传送不能用寄存器寻址方式; 5、源寄存器或源地址单元中的数据传送后,源数据并不会消失! 例如: MOV MOV MOV MOV MOV MOV R0,R2 A,#F3H R3,#22H @R3,A R1,#88H @R1,A 错! 改为 错! 改为 MOV MOV MOV @R1,A R1,#78H @R1,A
MOV Addr,#DATA 75 Addr Data,(Addr)←DATA 2、直接寻址数据传送: 5条 指令表示 机器代码 功能 MOV A,Addr MOV Addr,A MOV Rn,Addr MOV Addr,Rn MOV @Ri,Addr MOV Addr1,Addr2 E5 Addr; F5 Addr; A8/AF Addr; 88/8F Addr; A←(Addr) (Addr)← A Rn←(Addr) (Addr)← Rn
10
4、寄存器间址: 例如
E6H ← MOV A,@R0 F0H ← MOVX @DPTR,A 特点:用特定的寄存器之值来确定操作数所在的存储单元的地址
11
5、变址寻址: 例如 F0H ← MOVC A, @A+DPTR 特点:用变址寄存器与累加器A值之和来确定操作数所在的 存储单元的地址。
12
微机原理及应用
第三章 MCS-51的指令系统
1
3.1 CPU指令概述
3.1.1 指令与指令系统 指令:规定CPU执行某种确定功能的操作的基本命令。 本质上是二进制代码(机器码) ,其长度为一个字节 或多个字节 。 不同的CPU有不同的指令集合(系统)! 机器码指令:以二进制编码表示的CPU工作命令。 机器码指令的长度可以是单字节、双字节或三字节等。 ● 指令系统:一种CPU所能识别(执行)的全部指令的集 合,由CPU的设计师确定。
数据交换指令用来实现片内 RAM两个存储单元中数据的交 换。即: 在X存储单元中的数据移到Y存 储单元中,而Y存储单元中的 数据移到X存储单元中. 这2个存储单元中的数据进行 了交换。(Exchang)
24
指令表示 XCH XCH XCH A,Rn A,Addr A,@Ri
机器代码 ;C8/CF ;C5/Addr ;C6/C7 ;D6/D7
8
3.2 MCS-51的指令类型与寻指方式
3.2.1 MCS-51的指令类型: MCS-51共有111条指令,可分为5种指令类型: 1、数据传送类: 28条 2、算术运算类: 24条 3、逻辑运算类: 25条 4、控制与转移类:17条 5、位操作类: 17条 其中: 单字节指令:49条; 双字节指令:45条; 三字节指令:17条。 单机器周期(单T)指令:64条;双T指令: 45条; 4T 指令:2条。
9
如:MOV A,#2Fra Baidu bibliotekH 如:ADD A,R0 如:ANL A,#23H 如:DJNZ R1,LOOP 如:JNB P1.0,QUIT
3.2.2 MCS-51的寻指方式:7种
1、立即寻址: 例如 7402H ← MOV A,#02H 24FCH ← ADD A ,#0FCH 特点:操作数出现在指令中。 2、直接寻址: 例如 E570H ← MOV A,70H A835H ← MOV R0,35H 特点:指令中给出操作数所在的直接地址。 3、寄存器寻址:例如 E8H ← MOV A,R0 F9H ← MOV R1,A 特点:操作数包含在指令中给出的寄存器中。
以上2条指令可访问片外RAM全部的64KB空间 MOVX A,@Ri MOVX @Ri,A E2/E3 F2/F3 A ←(Ri) , (Ri)← A 2T i=0/1 2T
以上2条指令可访问片外RAM最低地址空间中的256B,即: 可访问片外RAM 0000H~00FFH地址空间
23
四、数据交换指令:4条
2
3.1 CPU指令概述
● 每种CPU都有自己的指令系统,不同的CPU有自己不同的指令 系统。 不同CPU指令系统的不同处在于: ▼ 机器码的定义不同; ▼ 助记符的表示方法不同; ▼ 对机器码的译码、执行方法也不同。 例如:同样是把1B数据23H送到A寄存器的操作,对MCS-51系列 单片机来说,指令是: MOV A,#23H, 但对于8086CPU来说,指令是:MOV 而对Z80 CPU来说,指令是: LD 而对AVR CPU来说,指令是: LDI (或:LDI AL,23H A,23H R16,0x23 R16,$23)
3.1.2
机器码与汇编语言指令
CPU只能直接执行机器码(即二进码)指令!任何其 他计算机(CPU)语言必须转换(翻译)成机器码指令,才 能被CPU执行 汇编语言指令是机器码指令的符号表示。 机器码(即二进码)指令 例如: 7425H E525H → → 汇编语言指令 MOV A,#25H ADD A,25H
A6/A7 Addr; (Ri)←(Addr) 2T i=0/1 85 Addr2 Addr1;(Addr1)←(Addr2) 2T
18
3、寄存器寻址数据传送:3条 指令表示 MOV MOV MOV A,Rn Rn,A Addr,Rn 机器代码 E8/EF F8/FF 88/8F Addr 功能 A ← Rn Rn ← A (Addr)←Rn 所需时间 ;1T n=0~7 ;1T ;2T
注意:CPU的汇编语言指令是由CPU的设计师确定 的,与计算机软件工程师无关!
4
3.1.2 机器码与汇编语言指令
计算机软件设计师根据CPU的汇编语言指令来了解 CPU的特性与功能,并为该种CPU设计软件系统(如 监控程序、操作系统、语言系统、应用软件系统等) 计算机高级语言: 面向算法,与具体CPU无直接联系,易于移植。 常用的计算机高级语言有: BASIC、PASCAL、Fortran、 C,C++、 VB、VC、Delphi 、 JAVA等。
5
用助记符表示的指令叫汇编语言指令。 汇编语言指令的格式:
操作码 目的操作数,源操作数
例如: MOV A,#00H
操作码:规定指令实现的操作,由2~5个易于理解的英 文缩写字母表示。如:MOV,MOVC,ADD,SUBB,MUL,DIV 等。 操作数:指出参与操作的数据来源和操作结果的存放目 的单元 操作数可以是一个实际的数,也可以是一个数的存放地 址
寄存器寻址 寄存器间接寻 址 变址寻址 相对寻址 位寻址
15
3.3
MCS-51的指令系统:共111条指令
3.3.1 数据传送类指令:共28条 一、 数据传送路径 分片内数据传送MOV、片外数据传送MOVX、程序指令读 取MOVC、堆栈操作及数据交换XCH/XCHD 5类。 二、片内数据传送指令: 15条 基本格式: MOV <dest>, <src>
20
错! 错!
改为 改为
MOV MOV
R0,02H A,#0F3H
三、片外数据传送指令: 7条
21
1、数据指针赋值: 指令表示 MOV DPTR,#DATA16
1条 机器代码 90 DATA H-L 功能 DPTR←DATA16 所需时间 2T
2、片外ROM数据传送指令:2条 指令表示 MOVC A,@A+DPTR ; 机器代码 93 功能 A←(A+DPTR) 所需时间 ;2T
16
17
1、立即数传送:
指令表示 MOV A,#DATA MOV Rn,#DATA MOV @Ri,#DATA
4条
机器代码 74 DATA, 功能 A ← DATA 所需时间 1T 1T n=0~7 1T i=0/1 2T 所需时间 1T 1T 2T n=0~7 2T
78/7F DATA, Rn ← DATA 76/77 DATA, (Ri)← DATA
6、相对寻址: 例如 6008H ← JZ 08H 50##H ← JNC NEXT B955##H ← CJNE R1,#55H,QUIT 特点:在当前指令所在地址的基础上,加上相对偏移地址值 之值,作为转移的目标地址。
(a)指令JZ 08H寻址示意图;
(b)指令JZ F4H寻址示意图
13
7、位寻址: 例如
6
程序: 使计算机完成某种预定任务的指令(或语句)的集合。 软件: 规定计算机完成功能操作的程序(或指令)的总和。 寻址:在全部程序/数据存贮空间中找到操作数。 CPU从内存中取得指令和操作数的方式叫寻址方式。 一种CPU的寻址方式越多,则表明该CPU工作将越灵活、 方便。但较多的寻址方式会使CPU内部结构与电路越复杂。
26
例: PUSH A POP 88H
( 或PUSH √ √ √ Ⅹ
ACC
)
√
PUSH 0F0H PUSH IE POP R0
2、入栈过程:先处理SP值再存数。 即在CPU内部先自动将SP加1,再将以Addr为地址的存储单元中 的数据送到以变动后的SP值为地址的堆栈(存储单元)中。 3、出栈过程:先取数再减SP值。 即从以SP为地址的堆栈(存储单元)中取出数据存入以Addr为 地址的存储单元中,然后再自动将SP值减1。
C208H ← CLR 08H D290H ← SETB P1.0 特点:位地址中确定了被操作的二进数。
14
3.2.3 寻址方式对应的寻址空间
寻址方式 立即寻址 直接寻址 程序存储器ROM 片内RAM低128Byte 特殊功能寄存器SFR 工作寄存器R0~R7,A,B,DPTR 片内RAM低128Byte[@R0,@R1,SP],片外RAM[@R0, @R1,@DPTR] 程序存储器[@A+PC, @A+DPTR] 程序存储器256Byte范围(PC+偏移量) 位地址空间;即片内RAM20H~2FH单元的各个位,地址能被8 整除的11个特殊功能寄存器的各个位,共216Bit. 寻址空间
功能 A A A Rn (Addr) (Ri)
所需时间 1T 1T 1T 1T
XCHD A,@Ri
半字节交换是指:2个操作数的低4位进行交换,高4位不变 例: MOV MOV MOV XCH XCHD A,#38H R0,#40H 40H,#6FH A,@R0 A,@R0 ;A=38H ;R0=40H ;(40H)=6FH ;A=6FH, (40H)=38H ;A=68H, (40H)=3FH
7
例如: Intel 8086 CPU 有6种寻指方式, 133条指令; 包括8080/8085的全部指令. Zilog公司的著名的Z80 CPU有10种寻指方式, 158条指令。 MCS-51单片机有7种寻指方式,111条指令。 这些CPU都具有超过100条以上的指令, CPU内部结 构都相当的复杂,故它们被称为“复杂指令集计算 机”( CISC,Complex Instruction Set Computer). 但是,属于RISC结构的AVR MEGA 单片机,也有 12/15种寻指方式,89/118/130条指令。
4、寄存器间址数据传送:3条 指令表示 MOV MOV MOV A,@Ri @Ri,A Addr,@Ri 机器代码 E6/E7 F6/F7 86/87 Addr 功能 A←(Ri) (Ri)←A (Addr)←(Ri) 所需时间 ;1T i=0/1 ;1T ;2T
19
5、指令使用注意事项与应用举例
该指令也称为查表指令。 MOVC A,@A+PC ; 83 A←(A+PC) ;2T
这2条指令使用变指寻址。 执行过程是: 将A之值与DPTR(或PC)之值相加,再以此相加之和作为地址, 从程序存储器的这个单元取出1B 数据,送到A中。
22
3、片外RAM数据传送指令:4条 指令表示 MOVX A,@DPTR MOVX @DPTR,A 机器代码 E0H F0H 功能 A←(DPTR) (DPTR) ← A 所需时间 2T 2T
25
五 堆栈操作指令:2条 堆栈操作指令 将数据存入堆栈,叫入栈,使用指令: 指令表示 PUSH Addr 指令表示 POP Addr 机器代码 ;C0 Addr 机器代码 ;D0 Addr 所需时间 ;2T 所需时间 ;2T
将数据从堆栈取出,叫出栈, 使用指令:
注意:PUSH/POP指令中的Addr可以是直接地址值,也 可以是SFR中的寄存器名称,但不能使用通用寄存器 名(如R0~R7)。
1、SFR只能直接寻址; 2、间址寄存器只能用R0/R1; 3、数据或地址若以A-F起头,则前面须加“0”; 4、Rn之间的数据传送不能用寄存器寻址方式; 5、源寄存器或源地址单元中的数据传送后,源数据并不会消失! 例如: MOV MOV MOV MOV MOV MOV R0,R2 A,#F3H R3,#22H @R3,A R1,#88H @R1,A 错! 改为 错! 改为 MOV MOV MOV @R1,A R1,#78H @R1,A
MOV Addr,#DATA 75 Addr Data,(Addr)←DATA 2、直接寻址数据传送: 5条 指令表示 机器代码 功能 MOV A,Addr MOV Addr,A MOV Rn,Addr MOV Addr,Rn MOV @Ri,Addr MOV Addr1,Addr2 E5 Addr; F5 Addr; A8/AF Addr; 88/8F Addr; A←(Addr) (Addr)← A Rn←(Addr) (Addr)← Rn
10
4、寄存器间址: 例如
E6H ← MOV A,@R0 F0H ← MOVX @DPTR,A 特点:用特定的寄存器之值来确定操作数所在的存储单元的地址
11
5、变址寻址: 例如 F0H ← MOVC A, @A+DPTR 特点:用变址寄存器与累加器A值之和来确定操作数所在的 存储单元的地址。
12
微机原理及应用
第三章 MCS-51的指令系统
1
3.1 CPU指令概述
3.1.1 指令与指令系统 指令:规定CPU执行某种确定功能的操作的基本命令。 本质上是二进制代码(机器码) ,其长度为一个字节 或多个字节 。 不同的CPU有不同的指令集合(系统)! 机器码指令:以二进制编码表示的CPU工作命令。 机器码指令的长度可以是单字节、双字节或三字节等。 ● 指令系统:一种CPU所能识别(执行)的全部指令的集 合,由CPU的设计师确定。
数据交换指令用来实现片内 RAM两个存储单元中数据的交 换。即: 在X存储单元中的数据移到Y存 储单元中,而Y存储单元中的 数据移到X存储单元中. 这2个存储单元中的数据进行 了交换。(Exchang)
24
指令表示 XCH XCH XCH A,Rn A,Addr A,@Ri
机器代码 ;C8/CF ;C5/Addr ;C6/C7 ;D6/D7
8
3.2 MCS-51的指令类型与寻指方式
3.2.1 MCS-51的指令类型: MCS-51共有111条指令,可分为5种指令类型: 1、数据传送类: 28条 2、算术运算类: 24条 3、逻辑运算类: 25条 4、控制与转移类:17条 5、位操作类: 17条 其中: 单字节指令:49条; 双字节指令:45条; 三字节指令:17条。 单机器周期(单T)指令:64条;双T指令: 45条; 4T 指令:2条。
9
如:MOV A,#2Fra Baidu bibliotekH 如:ADD A,R0 如:ANL A,#23H 如:DJNZ R1,LOOP 如:JNB P1.0,QUIT
3.2.2 MCS-51的寻指方式:7种
1、立即寻址: 例如 7402H ← MOV A,#02H 24FCH ← ADD A ,#0FCH 特点:操作数出现在指令中。 2、直接寻址: 例如 E570H ← MOV A,70H A835H ← MOV R0,35H 特点:指令中给出操作数所在的直接地址。 3、寄存器寻址:例如 E8H ← MOV A,R0 F9H ← MOV R1,A 特点:操作数包含在指令中给出的寄存器中。
以上2条指令可访问片外RAM全部的64KB空间 MOVX A,@Ri MOVX @Ri,A E2/E3 F2/F3 A ←(Ri) , (Ri)← A 2T i=0/1 2T
以上2条指令可访问片外RAM最低地址空间中的256B,即: 可访问片外RAM 0000H~00FFH地址空间
23
四、数据交换指令:4条
2
3.1 CPU指令概述
● 每种CPU都有自己的指令系统,不同的CPU有自己不同的指令 系统。 不同CPU指令系统的不同处在于: ▼ 机器码的定义不同; ▼ 助记符的表示方法不同; ▼ 对机器码的译码、执行方法也不同。 例如:同样是把1B数据23H送到A寄存器的操作,对MCS-51系列 单片机来说,指令是: MOV A,#23H, 但对于8086CPU来说,指令是:MOV 而对Z80 CPU来说,指令是: LD 而对AVR CPU来说,指令是: LDI (或:LDI AL,23H A,23H R16,0x23 R16,$23)