Download presentation
Presentation is loading. Please wait.
Published byHartanti Hermanto Modified 5年之前
1
第3章 MCS-51单片机指令系统 3.1 指令概述 3.2 寻址方式 3.3 MCS-51系列单片机的指令系统
2
3.1 指令概述 指令的定义 指令的组成 指令的表示方法 返回子目录
3
指令的定义 1、指令:是人们向计算机发的一种命令;一条指令对应着一 种操作。 2、指令系统:CPU所能执行的全部指令的集合。 CPU能够执行多少条指令是由CPU的内部结构决定的。 不同的CPU,其指令系统不同。 返回
4
指令的组成 指令由操作码和操作数组成。 操作数是指参与运算的数。操作数及操作对象可以是一个数,也可以是数所在的地方。 操作码决定CPU执行何种操作。 REG或MEM 返回
5
3.1.3 指令的表示方法 返回 指令在机器中必须以机器码(二进制码)的形式出现。 人们在书写指令时,可以有二种方法:
指令的表示方法 指令在机器中必须以机器码(二进制码)的形式出现。 人们在书写指令时,可以有二种方法: 1 、在计算机发展的初期,人们用机器码书写指令,这一阶段成为机器语言阶段。 优点:用机器码书写的程序,计算机可以直接识别和运行。 缺点:书写时容易,不容易记忆。 2、为了克服机器语言的缺点,人们用符号书写指令: 指令由操作码和操作数组成。 这一阶段成为汇编语言阶段. 优点:容易理解和记忆。 缺点:计算机不能直接识别和运行。 汇编语言程序必须转换成机器语言程序,转换方法有二种: 手工转换: 查表 符号指令---机器码指令---Mem 汇编程序: 符号指令----机器----机器码指令---Mem 用助记符(指令功能的英文缩写)书写。 操作数用规定的符号书写。 返回
6
3.2 寻址方式 寻址方式的定义 MCS51单片机的寻址方式 返回子目录 习 题
7
3.2.1 寻址方式的定义 指令由操作码和操作数组成。 指出操作数所在地方的方式就是寻址方式。 返回 操作码决定CPU执行何中操作。
寻址方式的定义 指令由操作码和操作数组成。 指出操作数所在地方的方式就是寻址方式。 操作码决定CPU执行何中操作。 操作数就是操作对象。无论何种指令其操作的对象都是数据。 数据在指令中有2种表示方法: 1、数本身 2、数所在的地方(REG,MEM中)。 返回
8
3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、 REG寻址 5 、变址寻址 6、相对寻址 7 、位寻址 返回
9
3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、变址寻址 5 、REG寻址 6、相对寻址 7 、位寻址 ROM 74H 05H 05H 1、 操作数包含在指令字节中。 紧跟在操作码后面,存放于ROM中 。 例:MOV A,#05H ;(74H 05H) 2、跟在指令操作码后面的数就是参加运算的数, 称该操作数为立即数。 SFR A FFH FFH 返回
10
每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。
3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、变址寻址 5 、REG寻址 6、相对寻址 7 、位寻址 ROM E5H 32H 1、在指令中直接给出操作数的地址, 这种寻址方式就属于直接寻址方式。在这种方式中, 指令的操作数部分直接是操作数的地址。 例:MOV A,32H ;(E5H,32H) 2、在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 2种存储器空间: (1) RAM的低 128 个字节单元(00H~7FH)。 (2) 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。 RAM FFH 32H 06H 06H SFR A FAH FFH 返回
11
每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。
3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、变址寻址 5 、REG寻址 6、相对寻址 7 、位寻址 ROM E6H RAM FFH 1、在这种寻址方式中, 寄存器的内容为操作数的地址。 例:MOV R0 ;(E6H) 2、寄存器间接寻址只能使用寄存器R0、R1 作为地址指针,寻址内部RAM区的数据; 当访问外部RAM时, 可使用R0、 R1及DPTR作为地址指针。 40H 22H 22H R0 40H SFR A FAH FFH 返回
12
每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。
3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、 REG寻址 5 、变址寻址 6、相对寻址 7 、位寻址 ROM EFH RAM FFH 22H 1、在该寻址方式中, 参加操作的数存放在寄存器里。 例:MOV A,R7 ;(EFH) 2、寄存器包括8个工作寄存器R0~R7, 累加器A, 寄存器B、数据指针DPTR。 R7 40H 40H SFR A FAH FFH 返回
13
3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、 REG寻址 5 、变址寻址 6、相对寻址 7 、位寻址 这种寻址方式用于访问程序存储器中的数据表格, 它以基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器A的内容作为操作数的地。 例: MOVC MOVC PC+A 返回
14
每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。
3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、 REG寻址 5 、变址寻址 6、相对寻址 7 、位寻址 在MCS -51 指令系统中设有转移指令, 分为直接转移和相对转移指令, 在相对转移指令中采用相对寻址方式。这种寻址方式是以PC的内容为基本地址, 加上指令中给定的偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。 例:JNB ACC.7,UP 返回
15
1、该种寻址方式中, 操作数是内部RAM单元中某一位的信息。
例:MOV C,02H ;(92H,20H) 2、仅出现在对位进行操作的指令中。 3、位所在地址的表示方法: ① 直接用8位二进制数表示 ② 单元地址.位数 3.2.2 MCS51单片机的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。 MCS51单片机有7种寻址方式。 1、立即寻址 2、直接寻址 3 、REG间址 4、 REG寻址 5 、变址寻址 6、相对寻址 7 、位寻址 ROM 92H 20H RAM FFH 20 1 02H 40H SFR PSW FFH 返回
16
习题与思考: 1、 什么是寻址方式?8051有几种寻址方式?是哪几种?对特殊功能寄存器应该使用什么寻址方式?对128B的RAM可以使用哪几种寻址方式? 2、 下列各条指令其源操作数的寻址方式是什么? (1)MOV A,#48H (2)ADD A,60H (3)ANL (4)XCHD (5)MOVX (6)MOV A,R0 (7)MOVC 返回
17
3.3 MCS-51系列单片机的指令系统 3.3.2 算术运算类 3.3.3 逻辑运算及移位类 3.3.4 位操作类 3.3.5 控制转移类
要求掌握: 指令的书写格式;指令的功能;指令对标志位的影响。 数据传送类 算术运算类 逻辑运算及移位类 位操作类 控制转移类 返回子目录
18
3.3.1 数据传送类 数据传送类指令可以实现片内RAM之间;A与片外RAM及ROM之间的数据传送,不影响标志位。 A XXXX XXXX
数据传送类 数据传送类指令可以实现片内RAM之间;A与片外RAM及ROM之间的数据传送,不影响标志位。 FFFFH 0000H FFFFH 0000H FFH 80H A XXXX 7FH 00H XXXX XX XX 真正RAM 和 SFR 外RAM ROM
19
3.3.1 数据传送类 2、A与外RAM和ROM之间的数据传送 3、堆栈操作 4、交换 5、16位操作指令 1、片内RAM之间的数据传送
数据传送类 1、片内RAM之间的数据传送 2、A与外RAM和ROM之间的数据传送 3、堆栈操作 4、交换 5、16位操作指令 习 题 返回
20
1、 片内RAM之间的数据传送 1) MOV #data8 2) MOV direct, 3) MOV direct 4) MOV A, 5) MOV A 返回
21
1、 片内RAM之间的数据传送 1) MOV #data8 2) MOV direct, 3) MOV direct 4) MOV A, 5) MOV A MOV A, #data8 MOV Rn, #data8 MOV direct, #data8 MOV @Ri, #data8 返回
22
1、 片内RAM之间的数据传送 1) MOV #data8 2) MOV direct, 3) MOV direct 4) MOV A, 5) MOV A MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, @Ri 返回
23
1、 片内RAM之间的数据传送 1) MOV #data8 2) MOV direct, 3) MOV direct 4) MOV A, 5) MOV A MOV A, direct MOV Rn , direct MOV direct, direct MOV @Ri, direct 返回
24
1、 片内RAM之间的数据传送 1) MOV #data8 2) MOV direct, 3) MOV direct 4) MOV A, 5) MOV A MOV A, Rn MOV A, @Ri 返回
25
1、 片内RAM之间的数据传送 1) MOV #data8 2) MOV direct, 3) MOV direct 4) MOV A, 5) MOV A MOV Rn, A MOV @Ri, A 返回
26
2、 A与外RAM和ROM之间的数据传送 1) ROM的数据送A MOVC A, @A+PC MOVC 2) A与外RAM之间的数据传送 MOVX A, @DPTR MOVX A, @Ri MOVX @DPTR,A MOVX @Ri, A 返回
27
3、堆栈操作 1) PUSH direct 2) POP direct 返回
28
4、交换 1)、XCH XCH A,Rn XCH A,direct XCH 2) XCHD SWAP A 返回
29
5、16位数据传送 MOV DPTR , #data16 ROM ROM 87H 90H 12H 45H 12H 06H 06H
例 MOV DPTR , #1206H SFR DPH 40H DPL 43H R1 44H 返回
30
3.3.2 算术运算类 对操作数运行+、-、×、÷ 运算;绝大多数指令影响标志位。 参与运算的一个数一定在A中,运算结果也存于A中。
算术运算类 对操作数运行+、-、×、÷ 运算;绝大多数指令影响标志位。 参与运算的一个数一定在A中,运算结果也存于A中。 1、加法运算 2、减法运算 3、乘法运算 4、除法运算 5、BCD码调整指令 习 题 返回
31
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , 3) INC 不影响标志位 返回
32
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn 2) DEC A\direct\@Ri\Rn 不影响标志位
返回
33
3、乘法运算 MUL AB 1、将累加器A的内容与寄存器B的内容相乘, 乘积的低 8 位存放在累加器A中, 高 8 位存放于寄存器B中。
2、对标志位的影响: Cy=0 P 由A中1的个数决定 如果乘积超过0FFH, 则溢出标志OV置“1”, 否则清“0”。 (若B=0,则OV=0 ;若 B不等于0 ,则OV=1) 返回
34
4、除法运算 DIV AB 1、将累加器 A中的内容除以寄存器 B中的8位无符 号整数, 所得商的整数部分存放在累加器A中, 余数部分存放在寄存器 B中。 2、对标志位的影响: Cy=0 P 由A中1的个数决定 若原来 B中的内容为 0, 则执行该指令后 A与 B中的内容不定, 并将溢出标志OV置“1”。 (若B=0,则OV=0 ;若 B不等于0 ,则OV=1 ) 返回
35
5、BCD码调整指令 DA A 这条指令对累加器A参与的BCD码加法运算所获得的 8 位结果进行十进制调整, 使累加器A中的内容调整为二位压缩型 BCD码的数。 使用时必须注意, 它只能跟在加法指令之后, 不能对减法指令的结果进行调整, 且其结果不影响溢出标志位。 执行该指令时, 判断 A中的低 4 位是否大于 9 和辅助进位标志 AC是否为“1”, 若两者有一个条件满足, 则低 4 位加 6 操作; 同样, A中的高 4 位大于 9 或进位标志 Cy为“1”两者有一个条件满足时, 高 4 位加 6 操作。 返回
36
3.3.3 逻辑运算与移位类 对操作数运行逻辑 运算;绝大多数指令不影响标志位。 1、逻辑与运算 2、逻辑或运算 3、逻辑异或运算
逻辑运算与移位类 对操作数运行逻辑 运算;绝大多数指令不影响标志位。 1、逻辑与运算 2、逻辑或运算 3、逻辑异或运算 4、逻辑非运算 5、移位 习 题 返回
37
1、逻辑与运算 1) ANL A , 2) ANL direct , #data8\A 2、逻辑或运算 1) ORL A , 2) ORL direct , #data8\A 3、逻辑异或运算 1) XRL A , 2) XRL direct , #data8\A 4、逻辑非运算 1) CPL A 2) CLR A 返回
38
5、移位运算 对累加器A的内容进行移位操作。除了带进位标志位的移位指令外,其它都不影响Cy, AC, OV等标志。 1) RL A 2) RR A 3) RLC A 4) RRC A 返回
39
3.3.4 位操作类 1、在单片机中有的存储单元只能按字节操作,有的既可以按字节操作,又可以按位操作。
位操作类 1、在单片机中有的存储单元只能按字节操作,有的既可以按字节操作,又可以按位操作。 2、可以按位操作的区域是: 20H--2FH单元,一些SFG,如A,PSW,B,P0,P1,P2,P3,IP,IE,TCON,SCON。 3、每一位都有自己的位地址,位地址一的表示方法如下: 1) 20H--2FH单元: 直接用8位二进制数表示 由低到高,位地址依次为 00H—7FH 单元地址.位码 2) A,P0,P1,P2,P3,B: SFG名字.位码 3) PSW,IP,IE,TCON,SCON: 位名
40
3.3.4 位操作类 1、位传送 MOV C,bit MOV bit,C 2、位置位/复位 CLR C CLR bit SETB bit
位操作类 1、位传送 MOV C,bit MOV bit,C 2、位置位/复位 CLR C CLR bit SETB bit SETB C 3、位运算 ANL C,bit/ bit取反 ORL C,bit/ bit取反 CPL C CPL bit 习 题 返回
41
3.3.5 控制转移类 ROM 0000H 74H PC 00H 04H 80H FEH 功能:修改PC的值,实现程序的转移。 原因:
控制转移类 功能:修改PC的值,实现程序的转移。 原因: 1、程序是按着顺序在RON中存放的。 如:MOV A,#00H INC A SJMP $ 2、CPU执行程序时总是到PC所指示的 ROM单元去取指令并执行之。 3、PC具有自动加1功能,因此一般情况下CPU按顺序执行指令。 4、实际编程时,会遇到如下情况: 1) 反复执行某段程序 2)根据条件决定执行哪段程序 此时就要修改PC的值,以实现程序的转移。即用到转移指令。 ROM 0000H 74H PC 00H 04H 80H FEH
42
控制转移类 1、转移类 1)、无条件转移指令 2)、条件转移指令 2、调用/返回类 1)、调用指令 2)、返回指令 习 题 返回
43
1) MOV A\Rn\direct\@Ri, #data8
MOV A, #data8 MOV Rn, #data8 MOV direct, #data8 MOV @Ri, #data8 #data——指令中的 8 位常数。 例:MOV A,#33H (74H 33H) ROM 74H 33H 33H SFR A FFH FFH 返回
44
1) MOV A\Rn\direct\@Ri, #data8
MOV A, #data8 MOV Rn, #data8 MOV direct, #data8 MOV @Ri, #data8 ROM 7DH Rn——当前选定的寄存器区中的 8 个工作寄存器R0~R7, 即n=0~7。 例:MOV R5,#45H (7DH 45H) 45H 45H SFR A 33H FFH RAM FFH 22H R5 40H 返回
45
1) MOV A\Rn\direct\@Ri, #data8 MOV A, #data8 MOV Rn, #data8
MOV direct, #data8 MOV @Ri, #data8 ROM ROM 75H 75H 40H 81H 05H 05H 60H 60H direct—— 用8 位二进制数表示的内部RAM单元的地址, 它可以是一个内部数据区 RAM单元(00H~7FH)或特殊功能寄存器地址(I / O端口、 控制寄存器、 状态寄存器 80H~0FFH)。 例:MOV 40H, #05H (75H 40H 05H) MOV SP, #60H (75H 81H 60H) SFR SFR SP 33H SP 33H FFH FFH RAM RAM FFH FFH 40H 22H 40H 22H R5 40H R5 40H 返回
46
1) MOV A\Rn\direct\@Ri, #data8
MOV A, #data8 MOV Rn, #data8 MOV direct, #data8 MOV @Ri, #data8 ROM 60H FFH SFR Ri——当前选定的寄存器区中的 2 个寄存器R0、 R1, i=0、1。 例:MOV (E6H) A 33H FFH RAM FFH 40H 22H 22H R0 40H 返回
47
2)、MOV direct, A\Rn\direct\@Ri
MOV direct, Rn MOV direct, direct MOV direct, @Ri ROM 例:MOV 40H, A ; (F5H 40H ) F5H 40H FFH SFR A 27H 27H FFH RAM FFH 40H 33H R5 40H 返回
48
2)、MOV direct, A\Rn\direct\@Ri
MOV direct, Rn MOV direct, direct MOV direct, @Ri ROM 8EH 例:MOV 50H, R6 ; (8EH 50H ) 50H FFH SFR A 33H FFH RAM FFH 50H 27H R6 40H 40H 返回
49
2)、MOV direct, A\Rn\direct\@Ri
MOV direct, Rn MOV direct, direct MOV direct, @Ri ROM 85H 50H 30H 例:MOV 50H, 30H (85H 50H 30H) SFR A 33H FFH RAM FFH 50H 27H 30H 40H 40H 返回
50
2)、MOV direct, A\Rn\direct\@Ri
MOV direct, Rn MOV direct, direct MOV direct, @Ri ROM 87H 45H FFH RAM 例:MOV (87H 45H ) 45H 33H FFH FFH 30H 27H 27H R1 30H 返回
51
3)、MOV A\Rn\direct\@Ri ,direct
MOV A, direct MOV Rn , direct MOV direct, direct MOV @Ri, direct ROM 例:MOV A ,40H ; (E5H 40H ) E5H 40H FFH SFR A 33H FFH RAM FFH 40H 27H 27H R5 40H 返回
52
3)、MOV A\Rn\direct\@Ri ,direct
MOV A, direct MOV Rn , direct MOV direct, direct MOV @Ri, direct ROM ACH 50H 例:MOV R4,50H ; (ACH 50H ) FFH SFR A 33H FFH RAM FFH 50H 40H 40H R4 27H 返回
53
3)、MOV A\Rn\direct\@Ri ,direct
MOV A, direct MOV Rn , direct MOV direct, direct MOV @Ri, direct ROM 85H 50H 30H 例: MOV 50H, 30H (85H 50H 30H) SFR A 33H FFH RAM FFH 50H 27H 30H 40H 40H 返回
54
3)、MOV A\Rn\direct\@Ri ,direct
MOV A, direct MOV Rn , direct MOV direct, direct MOV @Ri, direct ROM A7H 45H FFH RAM ,45H (A7H 45H ) 45H 33H 33H FFH FFH 30H 27H R1 30H 返回
55
4)、 MOV A, Rn MOV A, @Ri MOV Rn, A MOV @Ri, A 例:MOV A ,R3 ; (EBH ) ROM EBH FFH FFH SFR A 33H FFH RAM FFH R3 27H 27H R0 40H 返回
56
4)、 MOV A, Rn MOV A, @Ri MOV Rn, A MOV @Ri, A 例:MOV (E6H ) ROM E6H FFH FFH SFR A 33H FFH RAM FFH 38H 27H 27H R0 38H 返回
57
5)、 MOV Rn, A MOV @Ri, A 例:MOV R2, A ;(FAH ) ROM ROM FAH 87H FFH 45H FFH FFH SFR A 27H 27H FFH RAM FFH 40H 40H R2 33H 返回
58
5)、 MOV Rn, A MOV @Ri, A 例:MOV @R1 ,A (F7H ) ROM F7H FFH FFH SFR A 33H 33H FFH RAM FFH 30H 27H R1 30H 返回
59
2、 A与外RAM和ROM之间的数据传送 1) ROM的数据送A MOVC A, @A+PC MOVC 2) A与外RAM之间的数据传送 MOVX A, @DPTR MOVX A, @Ri MOVX @DPTR,A MOVX @Ri, A ROM 93H FFH 206AH 89H 89H FFH 以DPTR作为基址寄存器, 累加器A的内容作为无符号数与DPTR内容相加, 得到一个 16 位的地址, 并把该地址指出的ROM单元中的内容送到累加器A。 SFR A 33H DPH 20H DPL 37H 返回
60
2、 A与外RAM和ROM之间的数据传送 1) ROM的数据送A MOVC A, @A+PC MOVC 2) A与外RAM之间的数据传送 MOVX A, @DPTR MOVX A, @Ri MOVX @DPTR,A MOVX @Ri, A ROM 93H FFH 外RAM 2001H 89H 89H FFH 把DPTR中的内容作为地址, 并把该地址指出的外RAM单元的内容送到累加器A。 SFR A 33H DPH 20H DPL 01H 返回
61
2、 A与外RAM和ROM之间的数据传送 1) ROM的数据送A MOVC A, @A+PC MOVC 2) A与外RAM之间的数据传送 MOVX A, @DPTR MOVX A, @Ri MOVX @DPTR,A MOVX @Ri, A ROM 93H FFH 外RAM 把DPTR中的内容作为地址, 并把累加器A的内容送到该地址指出的外RAM单元。 2001H 89H 2002H FFH SFR A ABH ABH DPH 20H DPL 02H 返回
62
3、堆栈操作 1) PUSH direct 2) POP direct ROM ROM 87H C0H 40H 45H 1、在MCS -51 单片机的内部RAM中, 可以设定一个先进后出的区域, 称其为堆栈。 2、在特殊功能寄存器中有一个堆栈指针SP, 它指出栈顶的位置。 3、 进栈指令的功能是: 首先将堆栈指针SP的内容加1, 然后将直接地址所指出的内容送入SP指出的内部RAM单元。 例 PUSH 40H(C0H) FFH FFH SFR SP 50H 51H FFH RAM 51H 40H 50H FFH 40H 33H 33H 返回
63
3、堆栈操作 1) PUSH direct 2) POP direct ROM ROM D0H 87H 40H 45H FFH FFH 出栈指令的功能是: 将SP所指出的内部RAM单元的内容送入由直接地址所指出的字节单元, 接着将堆栈指针SP的内容减 1。 例 POP 40H(D0H) SFR SP 50H 51H FFH RAM 51H FFH FFH 50H 40H 40H 33H 返回
64
4、交换 1)、XCH XCH A,Rn XCH A,direct XCH 2) XCHD ROM ROM 87H CFH 45H FFH FFH FFH 将累加器A的内容和Rn中的内容相互交换。 例 XCH A,R7 ( CFH) SFR A 51H 51H FFH RAM 51H 40H 50H FFH FFH R7 33H 33H 返回
65
4、交换 1)、XCH XCH A,Rn XCH A,direct XCH 2) XCHD ROM ROM 87H C5H 45H 32H FFH FFH 将累加器A的内容和direct所指示的单元中的内容相互交换。 例 XCH A,32H (C5H 32H) SFR A CDH CDH FFH RAM 51H 40H 50H FFH FFH 32H F2H F2H 返回
66
4、交换 1)、XCH XCH A,Rn XCH A,direct XCH 2) XCHD ROM ROM 87H C7H 45H FFH FFH FFH SFR 将累加器A的内容和RAM单元中的内容相互交换。 RAM单元的地址采用寄存器间接寻址方式给出。 例 XCH A CDH CDH FFH RAM 45H 40H 44H B6H B6H R1 44H 返回
67
4、交换 1)、XCH XCH A,Rn XCH A,direct XCH 2) XCHD ROM ROM D7H 87H 45H FFH FFH FFH SFR A C H D D FFH 将累加器A的内容和RAM单元中的内容相互交换。 RAM单元的地址采用寄存器间接寻址方式给出。 例 XCHD RAM 45H 40H 44H 4 H 2 2 R1 44H 返回
68
4、交换 1)、XCH XCH A,Rn XCH A,direct XCH 2) XCHD SWAP A ROM ROM 87H C4H 45H FFH FFH FFH SFR A H C D FFH 将累加器A的高 4 位与低 4 位之间进行交换。 返回
69
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn ADD A ,#30H ADD A ,30H
ADD A ADD A ,R5 返回
70
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn ADD A ,#30H ROM ROM 24H 87H
FFH FFH SFR A CDH CDH + FFH FDH 返回
71
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn ADD A ,30H ROM ROM 24H 87H 3 0H
FFH FFH RAM 31H 40H 30H B6H B6H R1 44H SFR A 2DH 2DH + FFH F3H 返回
72
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn ADD A ,@R0 ROM ROM 24H 87H 3 0H
FFH FFH RAM 45H 40H 44H B6H B6H R0 44H SFR A 2DH 2DH + FFH F3H 返回
73
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn ADD A ,R5 ROM ROM 24H 87H 3 0H
FFH FFH RAM 45H 40H 44H 44H R5 B6H B6H SFR A 2DH 2DH + FFH F3H 返回
74
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , ADDC A ,#30H ADDC A ,35H ADDC A ADDC A ,R4 返回
75
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , ROM ROM 34H 87H ADDC A ,#30H 3 0H 3 0H FFH FFH SFR A CDH CDH + FFH FFH FDH PSW 1 1 + FFH FEH 返回
76
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , ROM ROM 87H 24H 3 0H 3 0H ADDC A ,35H FFH FFH RAM 35H 30H 30H 34H B6H B6H SFR A CDH CDH + FFH FFH FDH PSW 1 1 + FFH FEH 返回
77
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , ROM ROM 87H 24H 3 0H 3 0H ADDC A RAM 35H 30H 30H 34H B6H B6H R0 35H SFR A CDH CDH + FFH FFH FDH PSW 1 1 + FFH FEH 返回
78
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , ADDC A , R0 RAM ROM ROM 35H 35H 87H 24H 34H B6H B6H 3 0H 3 0H R0 30H 30H SFR A CDH CDH + FFH FFH FDH PSW 1 1 + FFH FEH 返回
79
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , 3) INC INC A INC direct INC @Ri INC Rn INC DPTR 返回
80
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , 3) INC RAM ROM ROM INC A 35H 35H 04H 87H 34H B6H B6H FFH R0 30H 30H SFR A CDH CDH FFH + 1 FFH PSW 1 1 CEH FFH 返回
81
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , 3) INC ROM ROM 05H 87H 34H RAM INC 34H 35H 35H 34H B6H B6H + 1 R0 30H B6H 30H B7H SFR A CDH CDH FFH FFH PSW 1 1 FFH 返回
82
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , 3) INC ROM ROM 06H 87H FFH RAM INC @R0 35H 35H 34H B6H B6H + 1 R0 34H B7H SFR A CDH CDH FFH FFH PSW 1 1 FFH 返回
83
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , 3) INC ROM ROM 87H 08H FFH RAM INC R0 35H 35H 34H B6H B6H R0 34H 34H SFR + 1 A CDH CDH 35H FFH FFH PSW 1 1 FFH 返回
84
1、加法运算 1) ADD A , #data8\direct\@Ri\Rn
2) ADDC A , 3) INC INC DPTR ROM ROM 08H 87H FFH SFR DPH 35H 35H DPL B6H B6H A 34H 34H 1 + 35H B7H 返回
85
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn SUBB A ,#30H SUBB A ,35H
SUBB A SUBB A ,R4 返回
86
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn ROM ROM 34H 87H SUBB A ,#30H
FFH FFH SFR A CDH CDH FFH - FFH FFH 9DH PSW 1 1 - FFH 9CH 返回
87
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn ROM ROM 87H 34H 3 0H 3 0H RAM
SUBB A ,35H FFH FFH 35H 30H 30H 34H B6H B6H SFR A CDH CDH FFH - FFH FFH 9DH PSW 1 1 - FFH 9CH 返回
88
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn ROM ROM 87H 24H 3 0H 3 0H
SUBB A RAM 35H 30H 30H 34H B6H B6H R0 35H SFR A CDH CDH FFH - FFH 9DH PSW 1 1 - FFH 9CH 返回
89
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn ROM ROM 87H 24H 3 0H 3 0H
SUBB A ,R6 RAM 35H 35H 34H B6H B6H R6 30H 30H SFR A CDH CDH FFH - FFH 9DH PSW 1 1 - FFH 9CH 返回
90
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn 2) DEC A\direct\@Ri\Rn DEC A
DEC direct DEC @Ri DEC Rn 返回
91
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn 2) DEC A\direct\@Ri\Rn RAM ROM
35H 35H 04H 87H 34H B6H B6H FFH R0 30H 30H SFR A CDH CDH FFH - 1 FFH PSW 1 1 CCH FFH 返回
92
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn 2) DEC A\direct\@Ri\Rn ROM ROM
05H 87H 34H RAM INC 34H 35H 35H 34H B6H B6H - 1 R0 30H B6H 30H B5H SFR A CDH CDH FFH FFH PSW 1 1 FFH 返回
93
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn 2) DEC A\direct\@Ri\Rn ROM ROM
06H 87H FFH RAM DEC @R0 35H 35H 34H B6H B6H - 1 R0 34H B5H SFR A CDH CDH FFH FFH PSW 1 1 FFH 返回
94
2、减法运算 1) SUBB A , #data8\direct\@Ri\Rn 2) DEC A\direct\@Ri\Rn ROM ROM
87H 08H FFH RAM INC R0 35H 35H 34H B6H B6H R0 34H 34H SFR - 1 A CDH CDH 33H FFH FFH PSW 1 1 FFH 返回
95
3、乘法运算 MUL AB ROM ROM 87H 24H 3 0H 3 0H FFH FFH SFR B 02H 02H FFH A
× PSW 1 00H 00H 0CH 0CH 返回
96
1、逻辑与运算 1) ANL A , ANL A,#0FH ROM ROM 54H 87H B B SFR A B B ∩ FFH B B FFH FFH 返回
97
1、逻辑与运算 1) ANL A , 2) ANL direct , #data8\A ROM ROM ANL H,#0FH 54H 87H 30H B B B RAM 30H B B ∩ FFH B B FFH FFH 返回
98
2、逻辑或运算 1) ORL A , ORL A,#0FH ROM ROM 54H 87H B B SFR A B B ∪ FFH B B FFH FFH 返回
99
2、逻辑或运算 1) ORL A , 2) ORL direct , #data8\A ROM ROM ORL H,#0FH 54H 87H 30H B B B RAM 30H B B ∩ FFH B B FFH FFH 返回
100
3、逻辑异或运算 1) XRL A , XRL A,#0FH ROM ROM 54H 87H B B SFR A B B ⊙ FFH B B FFH FFH 返回
101
3、逻辑或运算 1) XRL A , 2) XRL direct , #data8\A ROM ROM XRL H,#0FH 54H 87H 30H B B B RAM 30H B B ⊙ FFH B B FFH FFH 返回
102
5、移位运算 1) RL A ROM ROM 24H 87H 3 0H 3 0H FFH FFH SFR A 1 1 1 1 1 1 1 1 返回
103
5、移位运算 1) RL A 2) RR A ROM ROM 87H 24H FFH SFR A 1 1 1 1 1 1 1 1 返回
104
5、移位运算 1) RL A 2) RR A 3) RLC A ROM ROM 24H 87H 3 0H 3 0H FFH FFH SFR A 1 1 1 1 1 1 1 1 PSW 1 1 1 1 1 1 返回
105
5、移位运算 1) RL A 2) RR A 3) RLC A 4) RRC A ROM ROM 24H 87H 3 0H 3 0H FFH FFH SFR A 1 1 1 1 1 1 1 1 PSW 1 1 1 1 1 返回
106
3.3.4 位操作类 1、位传送 MOV C,bit MOV C,03H ROM ROM 24H 87H 3 0H 3 0H FFH FFH
位操作类 1、位传送 MOV C,bit MOV C,03H ROM ROM 24H 87H 3 0H 3 0H FFH FFH SFR PSW 1 1 1 1 1 RAM 20H 1 1 1 1 1 1 1 1 返回
107
3.3.4 位操作类 1、位传送 MOV C,bit MOV bit,C ROM ROM MOV 02H,C 24H 87H 3 0H
位操作类 1、位传送 MOV C,bit MOV bit,C ROM ROM MOV 02H,C 24H 87H 3 0H 3 0H FFH FFH SFR PSW 1 1 1 1 1 RAM 20H 1 1 1 1 1 1 1 1 返回
108
3.3.4 位操作类 1、位传送 MOV C,bit MOV bit,C 2、位置位/复位 CLR C CLR bit ROM ROM
位操作类 1、位传送 MOV C,bit MOV bit,C 2、位置位/复位 CLR C CLR bit ROM ROM 24H 87H 3 0H 3 0H FFH FFH CLR 10H SFR PSW 1 1 1 1 1 RAM 22H 1 1 1 1 1 1 1 返回
109
3.3.4 位操作类 1、位传送 MOV C,bit MOV bit,C 2、位置位/复位 CLR C CLR bit SETB bit
位操作类 1、位传送 MOV C,bit MOV bit,C 2、位置位/复位 CLR C CLR bit SETB bit ROM ROM 87H 24H 3 0H 3 0H FFH FFH SFR PSW 1 1 1 1 1 SETB 17H RAM 22H 1 1 1 1 1 1 1 返回
110
3.3.5 控制转移类 1、转移类 1)、无条件转移指令 LJMP addr16 AJMP addr11 SJMP rel
控制转移类 1、转移类 1)、无条件转移指令 LJMP addr16 AJMP addr11 SJMP rel JMP @A+DPTR 返回
111
3.3.5 控制转移类 1、转移类 LJMP addr16 1)、无条件转移指令 例1 LJMP addr16 AJMP addr11
控制转移类 1、转移类 1)、无条件转移指令 LJMP addr16 1、addr16——16 位的目的地址。 2、将 16 位目标地址addr16 装入PC, 程序无条件转向指定的目标地址。转移的目标地址可以在 64 KB程序存储器地址空间的任何地方, 不影响任何标志。 3、通常目标地址用标号表示。(指令的符号地址) 如: MOV A,#00H UP: INC A LJMP UP 例1 LJMP addr16 AJMP addr11 SJMP rel JMP @A+DPTR 例2 返回
112
例1:设指令 LJMP 1000H存于0000H单元,问CPU执行上述指令后PC的值是多少?
ROM 0000H 02H PC 00H 00H 10H 10H 00H 00H 1000H FEH 10H 00H 返回
113
3.3.5 控制转移类 1、转移类 AJMP addr11 1)、无条件转移指令 1、addr11——11位的目的地址。
控制转移类 1、转移类 1)、无条件转移指令 AJMP addr11 1、addr11——11位的目的地址。 2、执行该指令时, 先将PC+2, 然后将addr11送入PC10~PC0, 而PC15~PC11保持不变。 这样得到跳转的目的地址。 需要注意的是, 目标地址与AJMP后面一条指令的第一个字节必须在同一个 2 KB区域的存储器区内。 3、通常目标地址用标号表示。(指令的符号地址) 如: MOV A,#00H UP: INC A AJMP UP 例1 LJMP addr16 AJMP addr11 SJMP rel JMP @A+DPTR 例2 返回
114
例1:设指令 AJMP 00000000000B存于1200H单元,问CPU执行上述指令后PC的值是多少?
ROM 1000H FEH 1200H 1 PC 1 1 02H 00H 00H 00H FFH 返回
115
控制转移类 SJMP rel 1、 rel—— 8 位带符号的偏移量字节, 用于SJMP和所有条件转移指令中。 偏移量相对于下一条指令的第一个字节计算, 在-128~+127 范围内取值。用8位补码表示。 2、执行该指令时, 先将 PC+2, 再把指令中带符号的偏移量加到PC上, 得到跳转的目标地址送入PC。 需要注意的是, 目标地址与SJMP后面一条指令的第一个字节必须在同一个 256B区域的存储器区内。 3、通常目标地址用标号表示。(指令的符号地址) 如: UP: MOV A,#00H INC A SJMP UP 1、转移类 1)、无条件转移指令 LJMP addr16 AJMP addr11 SJMP rel JMP @A+DPTR 例1 例2 返回
116
例1:设指令 SJMP FCH存于1000H单元,问CPU执行上述指令后PC的值是多少?
ROM 0FFCH FEH 1000H 1 PC 10H 00H 02H FCH FCH FFH - 06H PC 0FH FCH 返回
117
3.3.5 控制转移类 1、转移类 1)、无条件转移指令 JMP @A+DPTR
控制转移类 1、转移类 1)、无条件转移指令 JMP @A+DPTR 执行该指令时, 把累加器 A中的 8 位无符号数与数据指针中的 16 位数相加, 结果作为下条指令的地址送入PC, 不改变累加器 A和数据指针DPTR的内容, 也不影响标志。 利用这条指令能实现程序的散转。 LJMP addr16 AJMP addr11 SJMP rel JMP @A+DPTR 例 返回
118
例:设A=34H,DPTR=10B6H, 问CPU执行指令 JMP @A+DPTR后,PC的值是多少?
ROM 0000H 73H PC 00H 01H 00H FFH FFH FFH FFH 10EAH FEH SFR DPH 10H 10H DPL B6H B6H + A 34H 34H 10H EAH 返回
119
3.3.5 控制转移类 例1 例2 例3 例4 例5 返回 1、转移类 1)、无条件转移指令 2)、条件转移指令
控制转移类 1、转移类 1)、无条件转移指令 2)、条件转移指令 由条件决定是否转移。若满足条件就转移;若不满足条件就顺序执行。 1、JZ rel 若A=0则转移 ;若A≠0则顺序执行下一条指令 JNZ rel 2、JC rel 若Cy=0则转移 ;若Cy≠0则顺序执行下一条指令 JNC rel 3、JB bit, rel 若bit =0则转移 ;若bit ≠0则顺序执行下一条指令 JNB bit, rel JBC bit, rel 4、CJNE A,#data8,rel CJNE A,direct,rel CJNE Rn,#data8,rel CJNE @Ri,#data8,rel 5、 DJNZ Rn, rel DJNZ direct, rel 例1 例2 例3 例4 例5 返回
120
3.3.5 控制转移类 1、转移类 1)、无条件转移指令 2)、条件转移指令 2、调用/返回类 1)、调用指令 主程序 2)、返回指令
在程序设计中, 通常把具有一定功能的公用程序段编制成子程序, 当主程序需要使用子程序时用调用指令, 而在子程序的最后安排一条子程序返回指令,以便执行完子程序后能返回主程序继续执行。 控制转移类 1、转移类 1)、无条件转移指令 2)、条件转移指令 2、调用/返回类 1)、调用指令 2)、返回指令 主程序 ROM 74H 03H 子程序 24H 24H 05H AAH 调用指令 7FH 74H 45H 55H 71H 7FH 返回指令 调用指令 80H FBH 返回
121
3.3.5 控制转移类 1、转移类 1)、无条件转移指令 2)、条件转移指令 2、调用/返回类 1)、调用指令 2)、返回指令
控制转移类 1、转移类 1)、无条件转移指令 2)、条件转移指令 2、调用/返回类 1)、调用指令 2)、返回指令 LCALL addr16 ACALL addr16 返回
122
LCALL addr16 返回 1、这条指令无条件调用位于 16 位地址addr16的子程序。
2、执行该指令时,先将PC+3以获得下一条指令的首地址, 并把它压入堆栈(先低字节后高字节), SP内容加 2, 然后将 16 位地址放入 PC中, 转去执行以该地址为入口的程序。 3、通常目标地址用标号表示。 4、 LCALL指令可以调用 64 KB范围内任何地方的子程序。 5、指令执行后不影响任何标志。 返回
123
控制转移类 ACALL addr11 这是一条 2 KB范围内的子程序调用指令。执行该指令时,先将 PC+2 以获得下一条指令的地址, 然后将 16 位地址压入堆栈(PCL内容先进栈, PCH内容后进栈), SP内容加 2, 最后把 PC的高 5 位PC15~PC11与指令中提供的 11 位地址addr11相连接(PC15~PC11, A10~A0), 形成子程序的入口地址送入PC, 使程序转向子程序执行。所用的子程序的入口地址必须与 ACALL下面一条指令的第一个字节在同一个 2 KB区域的存储器区内。 1、转移类 1)、无条件转移指令 2)、条件转移指令 2、调用/返回类 1)、调用指令 2)、返回指令 返回
124
控制转移类 RET 这条指令的功能是: 恢复断点, 将调用子程序时压入堆栈的下一条指令的首地址取出送入PC, 使程序返回主程序继续执行。 4. 中断返回指令 RETI 这条指令的功能与RET指令相似, 不同的是它还要清除MCS -51 单片机内部的中断状态标志。 1、转移类 1)、无条件转移指令 2)、条件转移指令 2、调用/返回类 1)、调用指令 2)、返回指令 返回
125
数据传送类指令一览表
126
数据传送类指令一览表
127
3.2.3 算术运算类指令 算术运算指令
128
算术运算指令
129
逻辑运算指令
130
控 制 转 移 指 令
131
3.2.6 位操作类指令 位 操 作 指 令
132
影响标志位的指令
133
影响标志位的指令
Similar presentations