《单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《单片机指令系统.ppt(79页珍藏版)》请在优知文库上搜索。
1、第 4 章 80C51 的指令系统 第第4章章 80C51指令系统指令系统 教学目标及要求教学目标及要求:1 了解单片机的寻址方式了解单片机的寻址方式2 掌握单片机的各类指令掌握单片机的各类指令主要内容主要内容:1 指令系统简介指令系统简介2 寻址方式寻址方式3 数据传送类指令数据传送类指令4 算术运算类指令算术运算类指令5 逻辑操作类指令逻辑操作类指令6 控制转移类指令控制转移类指令7 位操作类指令位操作类指令教学重点和难点:教学重点和难点:熟悉单片机每条指令对标志的影响,掌握单片机位操作类指熟悉单片机每条指令对标志的影响,掌握单片机位操作类指令的理解与使用。令的理解与使用。第 4 章 80
2、C51 的指令系统 一条汇编语言指令中最多包含 4 个区段, 如下所示: 标号: 操作码 操作数 ;注释 4 个区段之间要用分隔符分开: 标号与操作码之间用“: ”隔开, 操作码与操作数之间用空格隔开, 操作数与注释之间用“;”隔开, 如果操作数有两个以上, 则在操作数之间要用逗号“,”隔开 (乘法指令和除法指令除外 )。 4.1 指令系统简介指令系统简介第 4 章 80C51 的指令系统 1. 单字节指令单字节指令 单字节指令格式由8位二进制编码表示, 例如: CLR AE4H 2. 双字节指令双字节指令 双字节指令格式由两个字节组成, 操作码和操作数, 例如: MOV A, 10H74H
3、10H 3. 三字节指令三字节指令 三字节指令格式中, 第一个字节为操作码, 后两个字节为操作数, 例如: MOV 40H, 30H75H 40H 30H 第 4 章 80C51 的指令系统 4.2 寻址方式寻址方式 寻址方式: 就是寻找操作数地址的方式 在用汇编语言编程时, 数据的存放、传送、 运算都要通过指令来完成。 编程者必须自始至终都要十分清楚操作数的位置, 以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。 第 4 章 80C51 的指令系统 Rn当前选定的寄存器区中的 8 个工作寄存器R0R7, 即n=07。
4、 Ri当前选定的寄存器区中的 2 个寄存器R0、 R1, i=0、1。 direct 8 位内部RAM单元的地址, 它可以是一个内部数据区 RAM单元(00H7FH)或特殊功能寄存器地址(I / O端口、 控制寄存器、 状态寄存器 80H0FFH)。 data指令中的 8 位常数。 data16指令中的 16 位常数。 addr1616 位的目的地址, 用于LJMP#, LCALL指令, 可指向 64 KB程序存储器地址空间。 第 4 章 80C51 的指令系统 addr1111位的目的地址, 用于AJMP, ACALL指令。目的地址必须与下一条指令的第一个字节在同一个 2 KB程序存储器地址
5、空间之内。 rel 8 位带符号的偏移量字节, 用于SJMP和所有条件转移指令中。 偏移量相对于下一条指令的第一个字节计算, 在128+127 范围内取值。 bit内部数据RAM或特殊功能寄存器中的可直接寻址位。 DPTR数据指针, 可用作 16 位的地址寄存器。 第 4 章 80C51 的指令系统 A累加器。 B寄存器, 用于 MUL和 DIV指令中。 C进位标志或进位位。 间接寻址寄存器或基址寄存器的前缀, 如Ri,DPTR。 /位操作数的前缀, 表示对该位取反。 (X) X中的内容。 (X)由 X寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所代替。 第 4 章 80C51 的指令
6、系统 在 MCS -51单片机指令系统中, 有以下 7种寻址方式: (1) 立即寻址; (2) 直接寻址; (3) 寄存器寻址; (4) 寄存器间接寻址; (5) 基址寄存器加变址寄存器间接寻址; (6) 相对寻址; (7) 位寻址。 第 4 章 80C51 的指令系统 1. 立即寻址立即寻址 立即寻址方式是指操作数包含在指令字节中。 跟在指令操作码后面的数就是参加运算的数, 该操作数称为立即数。 立即数有一字节和二字节两种可能, 例如指令: MOV A, 3AH MOV DPTR, 0DFFFH 上述两条指令均为立即寻址方式, 第一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功
7、能是将立即数 0DFFFH送数据指针DPTR中(0DFHDPH, 0FFHDPL)。 第 4 章 80C51 的指令系统 2. 直接寻址直接寻址 在指令中直接给出操作数的地址, 这种寻址方式就属于直接寻址方式。在这种方式中, 指令的操作数部分直接是操作数的地址。 在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H7FH)。 (2) 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。 (3) 位地址空间。 第 4 章 80C51 的指令系统 3. 寄存器寻址寄存器寻址 在该寻址方式中, 参加操作的数存
8、放在寄存器里。寄存器包括8个工作寄存器R0R7, 累加器A, 寄存器B、数据指针DPTR和布尔处理器的位累加器C。 第 4 章 80C51 的指令系统 4. 寄存器间接寻址寄存器间接寻址 在这种寻址方式中, 寄存器的内容为操作数的地址。 寄存器间接寻址只能使用寄存器R0、R1 作为地址指针,寻址内部RAM区的数据; 当访问外部RAM时, 可使用R0、 R1及DPTR作为地址指针。寄存器间接寻址符号为“”, 例如: 第 4 章 80C51 的指令系统 5. 基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址 这种寻址方式用于访问程序存储器中的数据表格, 它以基址寄存器DPTR或PC的内
9、容为基本地址, 加上变址寄存器A的内容作为操作数的地址, 例如: MOVC A, DPTR+A JMP A+DPTR MOVC A, PC+A 第 4 章 80C51 的指令系统 6. 相对寻址相对寻址 在MCS -51 指令系统中设有转移指令, 分为直接转移和相对转移指令, 在相对转移指令中采用相对寻址方式。这种寻址方式是以PC的内容为基本地址, 加上指令中给定的偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数, 可正可负, 其范围为128+127。 JC 03H JC 0FEH 比较: LJMP 0000H 第 4 章 80C51 的指令系统 7. 位寻址位寻址 该种寻址方
10、式中, 操作数是内部RAM单元中某一位的信息。 SETB 40H CLR 40H 比较: MOV A,25H ORL A,#000000001B MOV 25H,A第 4 章 80C51 的指令系统 指令分类指令分类 按指令的功能, MCS -51 指令系统可分为下列 5 类: (1) 数据传送;(2) 算术运算;(3) 逻辑运算;(4) 控制转移。 (5) 位操作;第 4 章 80C51 的指令系统 4.3 数据传送类指令数据传送类指令第 4 章 80C51 的指令系统 第 4 章 80C51 的指令系统 1. 累加器累加器A为目的操作数指令为目的操作数指令 MOV A, R0 ; Rn A
11、 MOV A, direct ; (direct) A MOV A, Ri ; (Ri) A MOV A, data ; data A 这组指令的功能是:把源操作数的内容送入累加器A。例如: MOV A, 10H, 该指令执行时将立即数 10H送入累加器A中。 第 4 章 80C51 的指令系统 例如: (1) MOV A, R0 R0=30H (30H)= 4FH A=? (2) MOV A, 40H MOV A, #40H 第 4 章 80C51 的指令系统 2. 以工作寄存器以工作寄存器Rn为目的操作数为目的操作数 MOV Rn, A ; A Rn MOV Rn, direct ; (d
12、irect) Rn MOV Rn, data ; data Rn 这组指令的功能是: 把源操作数的内容送入当前工作寄存器区的R0R7中的某一个寄存器。指令中Rn在内部数据存储器中的地址由当前的工作寄存器区选择位RS1、RS0 确定, 可以是 00H07H、08H0FH、10H17H、18H1FH。 例如: MOV R0, A, 若当前RS1、RS0 设置为 00 (即工作寄存器 0 区), 执行该指令时,将累加器A中的数据传送至工作寄存器R0(内部RAM 00H)单元中。 第 4 章 80C51 的指令系统 3. 以直接地址为目的操作数以直接地址为目的操作数 MOV direct, A ; A
13、 (direct) MOV direct, Rn ; Rn (direct) MOV direct, direct ; (direct) (direct) MOV direct, Ri ; (Ri) (direct) MOV direct, data ; data (direct) 例如: SUM EQU 20H MOV SUM,A第 4 章 80C51 的指令系统 4. 以间接地址为目的操作数以间接地址为目的操作数 MOV Ri, A ; A (Ri) MOV Ri, direct ; (direct) (Ri) MOV Ri, data ; data (Ri)5. 16位数据传数以间接地址
14、为目的操作数位数据传数以间接地址为目的操作数 MOV DPTR, data16 ; datah DPH, datal DPL第 4 章 80C51 的指令系统 这组指令的功能是:把源操作数的内容送入内部RAM单元或特殊功能寄存器。其中第三条指令和最后一条指令都是三字节指令。第三条指令的功能很强, 能实现内部RAM之间、特殊功能寄存器之间或特殊功能寄存器与内部RAM之间的直接数据传送。最后一条指令是将16位的立即数送入数据指针寄存器DPTR。 第 4 章 80C51 的指令系统 4.3.2 外部数据传送指令外部数据传送指令 MOVX A, DPTR ; (DPTR) A MOVX A, Ri ;
15、 A (DPTR) MOVX DPTR, A ; (Ri) A MOVX Ri, A ; A (Ri)第 4 章 80C51 的指令系统 这组指令是:在累加器A与外部数据存储器RAM单元或I/O口之间进行数据传送, 前两条指令执行时, P3.7 引脚上输出RD有效信号, 用作外部数据存储器的读选通信号; 后两条指令执行时, P3.6 引脚上输出WR有效信号, 用作外部数据存储器的写选通信号。DPTR所包含的 16 位地址信息由 P0 (低 8 位)和P2(高 8 位)输出, 而数据信息由P0 口传送, P0 口作分时复用的总线。由Ri作为间接寻址寄存器时, P0 口上分时输出Ri指定的 8 位
16、地址信息及传输 8 位数据。 第 4 章 80C51 的指令系统 4.3.3 查表指令查表指令 可用来查找存放在外部程序存储器中的常数表格。 MOVC A, A+PC ; PC+1 PC,(A+PC) A MOVC A, A+DPTR ; (A+DPTR) A 第一条指令是以PC作为基址寄存器, 该条查表指令后面的 256 个单元之中A(0255) . ( 不常用!) 第二条指令是以DPTR作为基址寄存器, 表格的大小和位置可以在 64 KB程序存储器中任意安排, 并且一个表格可以为各个程序块所共用。 ( 好,常用!)第 4 章 80C51 的指令系统 例如:1010H: 02H1011H: 04H1012H: 06H1013H: 08HMOV A,#10HMOV DPTR,#1000HMOVC A,A+DPTR1000H: MOV A,#0DH1002H: MOVC A,A+PC第 4 章 80C51 的指令系统 4.3.4 堆栈操作指令堆栈操作指令 PUSH direct ; SP+1 SP, (direct) (SP) POP direct ; (SP) (direct), SP