51单片机的指令系统
MCS-51单片机的指令系统
整理ppt
12
4.2 寻址方式
51汇编语言有42种操作码助记符,用来描述33种操作功 能。一种操作码可以使用一种以上的数据类型,又由于 助记符规定了其访问的存储器空间,所以一种功能可能 有几个助记符(如MOV、MOVX、MOVC)。功能助记 符与寻址方式组合,得到111条指令。
整理ppt
13
4.2 寻址方式
1)无操作数单字节指令
这类指令只有操作码字段,操作数隐含在操作码中。
例如:INC DPTR
指令码为 :
数据指针隐含其中
整理ppt
6
指令的组成及字节数
2)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作数所 在寄 存器号的字段组成。 例如;MOV A,Rn 指令码为:
其中,rrr为寄存器Rn的编号
整理ppt
2
4.1 指令和指令程序
“指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
与CPU的能力、使用的方便灵活性密切相关。 指令的记忆问题?指令本身是二进制代码。
例如以下的51单片机指令:
把10放到累 740AH 加器A中 为பைடு நூலகம்便于记忆 指令助
A加20,结 果仍在A中
整理ppt
8
指令的组成及字节数
3.三字节指令(17条)
这条指令的指令码的第1字节为操作码;第2和第3字节为 操作数或操作数地址,有如下3类。 1)16位数据 例如:MOV DPTR,#26ABH 指令码为:
整理ppt
9
指令的组成及字节数
2)8位地址和8位数据 例如:MOV 74H,#0FFH 指令码为:
在MCS-51指令中,若操作数是以R0~R7来表示操作数时, 就属于寄存器寻址方式。
MCS51单片机指令系统
第一条指令为远查表指令,可以在64K的程序存储器空间寻 址。基地址寄存器为DPTR,其意思为,DPTR里面存放的是 程序存储器中数据表格的首地址,A为数据地址的偏移量。
这条指令执行以后,以 (A)+(DPTR)的数值为地址数 据就送进A里面来了,也就是从表格首地址开始以后的第(A) 个数据被送进A了。(举例子说明)
编写好的程序都放在程序存储器中,由于一个存储地址所 指示的存储单元只能存放一字节的数据。所以,在存放指令时, 必须将指令拆分成一个一个字节进行连续存放。
比如: 实现“累加器加10H”这条指令,其机器语言为 0111010000010000, 占用了两个字节,就必须拆成两个字节 进行连续存储。
但是,用二进制来表示比较麻烦,因此,也常用十六进制来 表示如:74H 10H来表示以上这条机器语言。可见,用十六进 制表示指令比较简单,但是,指令系统有上百条指令,不易记 住。所以,一般采用容易记住的一些缩写符号来表示机器语言,
2. 在指令中直接给出操作数的地址, 这种寻址方式就属
于直接寻址方式。在这种方式中, 指令的操作数部分直接 是操作数的地址。
比如:MOV A,30H;将30H里面的数送到A里面 MOV 21H,30H;将30H里面的数存放到21H里面 在MCS -51 单片机指令系统中, 直接寻址方式中可
以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~
7. 位寻址 指按照位进行的寻址操作,(前面讲的都是按字节进
行的寻址操作)。该种寻址方式中, 操作数是内部RAM单元 中20H到2FH的128个位地址以及SFR中的11个可进行 位寻址的寄存器中的位地址寻址。
比如:MOV C,20H;就是将RAM中位寻址区中20H位地 址中的内容送给C。区别与MOV A,20H;这个是将内部 RAM中20H单元的内容送给A。
第三章MCS51系列单片机指令系统及汇编语言程序设计
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
第四章 MCS-51单片机的指令系统
字节数 单字节指令:49条 双字节指令:45条 三字节指令:17条 单周期指令:64条 双周期指令:45条 四周期指令:2 条 数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条
运算速度
功能
4.3 MCS-51的指令系统
1.数据传送指令
4.2 寻址方式
5.变址寻址 变址寻址只能对程序存储器中数据进行 操作。由于程序存储器是只读的,因此变址 寻址只有读操作而无写操作。 有效地址 =基地址寄存器 +变址寄存器 基地址寄存器 DPTR 或 PC 变址寄存器 A 该寻址方式常用于访问程序存储器,查表 例:MOVC A,@ A+DPTR ;A←(A+DPTR) 如:MOVC A,@ A+PC ;A←(A+PC)
4.2 寻址方式
说明: (1)本寻址方式是专门针对程序存储器的 寻址方式,寻址范围可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR
4.2 寻址方式
6.相对寻址 把指令中给定的地址偏移量与本指令所 在单元地址(PC内容)相加得到真正有效的 操作数所存放的地址。 如 JC 60H ;设(PC)= 2000H为基 址,偏移量为60H; 则当C=1时,转移的目的地址=2000H+2+60H 相对寻址的有效地址: D=PC+rel 则rel=D-PC D:目的地址 PC:源地址 rel:相对地址
片内RAM和SFR之间的传送:MOV
片外RAM与ACC之间的传送:MOVX
程序存储器的数据送ACC :MOVC 数据交换类:XCH、XCHD、SWAP 堆栈操作类:PUSH、POP
单片机应用-MCS-51单片机指令系统
单片机应用-MCS-51单片机指令系统单片机应用 MCS-51 单片机指令系统在当今的电子技术领域,单片机的应用可谓无处不在。
从家用电器到工业自动化,从医疗设备到航空航天,单片机都扮演着至关重要的角色。
而在众多单片机中,MCS-51 单片机以其经典的架构和丰富的指令系统,成为了学习和应用单片机的重要基础。
MCS-51 单片机的指令系统是其能够实现各种功能的核心。
指令就像是单片机的“语言”,通过这些指令,我们可以让单片机执行各种各样的任务,如数据的运算、存储和传输,控制外部设备的工作,实现复杂的逻辑判断等等。
MCS-51 单片机的指令可以分为五大类:数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令。
数据传送指令是最基本也是最常用的指令类型。
它包括了将数据从一个存储单元传送到另一个存储单元,或者将立即数传送到寄存器或存储单元等操作。
例如,“MOV A, 50H”这条指令就是将立即数 50H 传送到累加器 A 中。
通过数据传送指令,我们可以在单片机内部实现数据的灵活调配和共享。
算术运算指令则用于进行加、减、乘、除等基本的数学运算。
这些指令能够对寄存器中的数据或者立即数进行操作,并将结果存放在指定的寄存器中。
比如,“ADD A, R0”指令会将累加器 A 的值和寄存器R0 的值相加,结果存放在累加器 A 中。
算术运算指令在实现数据处理和计算功能时非常有用。
逻辑运算指令主要包括与、或、异或等操作。
这些指令可以对寄存器中的数据进行位级的逻辑运算,从而实现对数据的筛选、组合和变换。
例如,“ANL A, R0”指令会对累加器 A 和寄存器 R0 的值进行按位与操作。
控制转移指令是实现程序流程控制的关键。
它们可以让程序根据特定的条件跳转到不同的地址执行,或者在一定的范围内循环执行一段代码。
常见的控制转移指令有无条件转移指令(如“LJMP addr16”)、条件转移指令(如“JC rel”)和循环指令(如“DJNZ Rn, rel”)。
MCS-51单片机指令系统
6、堆栈操作指令
进栈 【PUSH direct;(SP)+1→SP,(dirsct)→(SP)】 出栈 【POP direct;(SP)→(dirsct),(SP)-1→SP】
MCS-51指令系统中有两条读程序存储器中表格数据的指令。 因为对程序存储器只能读不能写,所以查表指令数据传送都是单向的, 即从程序存储器到累加器中。
SETB C;1→C置一
3、位逻辑运算指令
ANL C,bit;C)∧(bit)→C
ORL C,/bit;(C)∨(~bit)→C
“ / “表示取反
JB bit,re1;若(bit)=1,则(PC)+rel→PC;否则,(PC)+3→PC
4、位条件转移指令
JNB bit,re1;若(bit)=0,则(PC)+rel→PC;否则,(PC)+3→PC
1、逻辑与指令【ANL A,#data;(A)∧data→A 】
2、逻辑或指令【ORL A,#data;(A)∨data→A】
3、逻辑异或指令【XRL A,#data;(A)⊕data→A】
4、累加器A清零指令【CLA A;0→A 】
5、累加器A取反指令【CPL A; ̅A→A】
RL A;左循环移位指令
2、以Rn为目的操作数的指令 【MOV Rn, #data;data→Rn】 (源操作数:累加器A、片内RAM单元、SFR内容,立即数) 传送到当前工作寄存器组R0~R7的某个寄存器
3、以直接地址为目的操作数的指令 【MOV direct, #data;data→direct】 (源操作数:累加器、片内RAM单元、工作寄存器,立即数) 传送到由direct所指的片内存储单元
返回指令
51系列单片机指令系统
MOV DPTR,#1000H MOVX A,@DPTR INC DPTR, MOVX @DPTR,A 7、程序存储器向累加器A传送指令 MOVC A,@A+DPTR MOV DPTR,#100H MOV A,R0 MOVC A,@A+DPTR ORG 0100H. DB 0,1,4,9,16,25 8、堆栈操作指令 PUSH direct POP direct 第一条指令称之为入栈指令,就是将direct中的内容 送入堆栈中,第二条指令称之为弹出指令,就是将堆栈 中的内容送回到direct中。
位寻址时,操作数是二进制数的某一位,其位地 址出现在指令中,例如指令 • SETB bit ;(bit) ← l • 51系列单片机可用于位寻址的空间是内部RAM的可 位寻址区和SFR区中的字节地址可以被8整除(即地址以 “0”或“8”结尾)的寄存器所占空间,寻址方式如表 2-2所示。
表2-2 寻址方式一览表
寻 址 方 式
寻 址 范 围
R0-R7 ,DPTR ACC,B,C(CY位)
内部RAM 00H-7FH 特殊功能寄存器 80H-FFH 内部RAM位寻址区 (20H-2FH): 位地址00H-7FH 可寻址的特殊功能寄存器: 位地址 80H-F7H 以数据指针表示操作数 内部RAM 00H-7FH 外部RAM或I/O端口 00H-FFH / 0000H-FFFFH
图2-3 寄存器间接寻址
图2-4 立即寻址
4、立即寻址
•
立即寻址时,指令中直接给出操作数。例如指令 MOV A,#76H ;数据76H送累加器 A。 • 立即数寻址过程如图2-4所示。
5、变址寻址
•
变址寻址时,指定的变址寄存器的内容与指令中 给出的偏移量相加,所得的结果作为操作数的地址。 例如指令MOVC A, @A+DPTR ;((A)+(DPTR))送 A。变址寻址过程如图2-5所示。 不论用DPTR或PC作为基址指针,变址寻址方式都 只适用于51系列单片机的程序存储器,通常用于读取 数据表也就是将程序存储器中的数送入A中。因此也称 为查表指令,常用此指令来查一个已做好在程序存储 器中的表格,这条指令采用变址寻址。
第3章 MCS-51指令系统
16
MCS-51单片机指令系统
MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类:
1. 数据传送和交换指令(29条)
2. 算术运算指令(24条) 3. 逻辑运算指令(24条) 4. 控制转移指令(17条) 5. 位操作指令(17条)
17
数据传送和交换类指令主要有以下几种:
1. 2. 3.
30H
Eg:MOV 30H,#33H 33H
30H
XX 30H
33H
30H
31H
Eg:MOV 30H,31H
55H
XX
55H
25
A
30H XX
地址
30H 33H
Eg:MOV 30H, A
33H
R0
Eg:MOV 30H,@R0
55H
取出
30H 78H 30H
55H
R3
78H
30H XX
55H
MOV A , 30H
XX 55H
30H
A
6
3、寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄 存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。 数据存放在R0~R7中的某个通用寄存器内,或者放在某个专用 寄存器中。 e.g.: MOV A,R7 ADD A,R0
DPTR
2000H
DPTR 2000H
XXXX
Eg:将数据指针DPTR指向存于ROM中的表格首地址。
MOV DPTR,#TABLE
27
三、片外数据传递指令
使用DPTR和Ri进行间接寻址 MOVX A, @DPTR ;A ←((DPTR))片外 MOVX A,@Ri ;A ←((Ri))片外 MOVX @DPTR,A ;(DPTR)片外←(A) MOVX @Ri,A ;(Ri)片外←(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00H~FFH地址段; 使用DPTR时,能访问0000H ~ FFFFH地址段。
MCS-51系列单片机的指令系统
51系列单片机指令系统包含5种功能类型的指令,7 种寻址方式,共有111条指令。
addr16 16位目标地址,片外数据存储器或程序存储器以及外 部芯片的地址,用于LCALL和LJMP指令中;
addr11 11位目标地址,片内数据存储器或程序存储器的地址, 用于ACALL和AJMP指令中;
rel 相关地址,8位带符号偏移量,一般是程序存储器字节地址, 通常在跳转类指令中使用,其对应的十进制范围为-128~+127;
立即寻址就是直接给出操作数。
取指令时,即可由程序存储器中直接取得操作数据。51单 片机中除了一条指令(MOV DPTR,#data16)是16位长 的立即数外,其余都是8位的立即数。
例如:MOV A,#30H;无论执行之前A中的内容是多少, 则执行后A=30H。
值得注意的一点是:在立即数寻址中立即数前面必须要加 上一个“#”号,“#”表示其后面内容为立即数而不是一个 字节单元地址。
bit 位地址,针对片内数据存储器中的可位寻址的位使用; DPTR 数据指针,可用做16位的地址寄存器; (X) X指寄存器或十六进制数,则(X)为指向以X寄存器中的内
容为目标地址的单元或以十六进制数据为目标地址的单元; ← 数据传送的方向,将左边的内容送入右边; A 累加器; ACC 直接寻址方式的累加器; B 寄存器B; C 进位标志位,是布尔处理机的累加器,也称为位累加器。
任何一种处理器都必须经过设计人员对
《单片机》教学课件51单片机的指令系统
MOV Rn ,direct
;(direct)→Rn ,n =0~7
MOV Rn ,#data
;#data→Rn ,n =0~7
把源操作数送入当前寄存器区的R0~R7中的某一寄存器。
3.以直接地址direct为目的操作数的指令
MOV direct,A
; (A)→direct
MOV direct,Rn
寻址空间内快速地找到指定的地址单元。 下面介绍指令系统7种寻址方式。
5
1.寄存器寻址方式
指令中的操作数为某一寄存器的内容。
例如:MOV A,Rn
;(Rn)→A,n =0~7
把Rn中的源操作数送入到累加器A中。由于指令指定了从寄存 器Rn中取得源操作数,所以称为寄存器寻址方式。
本寻址方式的寻址范围:
4.以寄存器间接地址为目的操作数的指令
MOV @Ri,A
;(A)→((Ri)), i=0,1
MOV @Ri,direct ;(direct)→((Ri)),i=0,1
MOV @Ri,#data ;#data→((Ri)), i=0,1
功能是把源操作数内容送入R0或R1指定的存储单元中。
5.16位数传送指令
内部RAM的00H~7FH共128个单元。 6.堆栈操作指令 内部RAM中设定一个后进先出(LIFO,Last In First Out)
的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针 SP,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种, 因此,在指令系统中相应有两条堆栈操作指令。
22
(1)进栈指令 PUSH direct
(1)4组通用工作寄存区共32个工作寄存器。但只对当前工 作寄存器区的8个工作寄存器寻址,指令中的寄存器名称只 能是R0~R7。
第三章MCS51的指令系统
3.4.1 MCS-51数据传送指令
[1]. 以累加器A为目的操作数类指令(4条) 这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、
立即数、寄存器和寄存器间接寻址方式:
MOV A,direct
(direct)→(A)直接单元30H
MOV A,0A2H
§3.1 概述
7种寻址方式,111条指令
指令所占用空 间(字节数)
指令执行周期 (运算速度)
单字节指令:49条 双字节指令:45条 三字节指令:17条
单周期指令:64条 双周期指令:45条 四周期指令:2 条
试问
1 如果一条指令执行时间为3个机器周 期,那么需要经历多少个时钟周期?
2 如果一条指令执行时使用了2us,而 晶振使用的是12MHz,请问执行这条指 令需要多少个机器周期?
(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存 器Ri指向地址单元中的内容、连同进位位相加,结果存在A中
3.4.2 MCS-51算术运算指令
[3]. 带借位减法指令(4条)
这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位 位C内容相减,结果送回累加器A中。
3.4.1 MCS-51数据传送指令
[2]. 以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器 Rn中。有直接、立即和寄存器寻址方式:
MOV Rn, direct (data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中 MOV R4,37H
**补充知识
MCS51系列单片机为复杂指令单片机CISC。目前单片机大 量使用的是精简指令集RISC结构单片机.
第4讲 51单片机指令系统
寄存器寻址是操作数在寄存器中, 寄存器寻址是操作数在寄存器中,因此指定了寄存器就能得 到操作数 数据存储器 MOV A,R0 , 1FH 程序存储器 第3组通用寄存器区 18H 8位地址 位地址 0 0 0 0 1 0 0 0 1 1 1 0 1 0 00 PSW x x x 0 1 x x x A
0FFH~ 80H
内部RAM低128单元 内部RAM低128单元
用户RAM 位寻址区 用户 7FH~ 30H 2FH~ 20H 通用寄存器0H
74 09
;把09这个数送到累加器 中 把 这个数送到累加器 这个数送到累加器A中 ;把A中的内容加 ,送回 中 把 中的内容加 中的内容加1,送回A中 ;等待,空操作 等待, 等待
ALU
机器 语言
04 00
MOV A,#09
S
汇编 语言
INC A NOP
一、MCS-51单片机的指令格式 单片机的指令格式
机电系统的微机控制
杨绪剑
哈工大(威海) 哈工大(威海)船舶学院
第四讲 MCS-51单片机的指令系统 单片机的指令系统
本讲讨论如下内容: 本讲讨论如下内容:
一、MCS-51单片机的指令格式 单片机的指令格式 二、MCS-51单片机的寻址方式 单片机的寻址方式 三、MCS-51单片机的指令概述 单片机的指令概述 四、MCS-51单片机的指令系统 单片机的指令系统 五、汇编伪指令
本节结构如下: 本节结构如下:
二、MCS-51单 单 片机的寻址方 式
1.什么是寻址 什么是寻址 2.寄存器寻址方式 寄存器寻址方式 3.直接寻址方式 直接寻址方式 4.寄存器间接寻址方式 寄存器间接寻址方式 5.立即数寻址方式 立即数寻址方式 6.变址寻址方式 变址寻址方式 7.位寻址方式 位寻址方式 8.相对寻址方式 相对寻址方式 9.寻址方式小结 寻址方式小结
第三章MCS-51指令系统
3.1 概述
3.2
3.3
寻址方式
MCS-51的指令系统
3.4
伪指令
3.1
概述
指令:使计算机完成某种操作的命令。 指令系统 :计算机能够执行的全部操作所对应的指 令集合。 机器语言: 采用二进制编码表示指令,是计算机能够直 接识别和执行的语言。 汇编语言: 采用助记符 、符号、数字来表示指令的程序 语言,它与机器语言指令时一一对应的。
如果我们分别向DPH,DPL送数,则结果也一样。
如下面两条指令: 则就相当于执行了 MOV DPH,#35H MOV DPTR,#3512H。 MOV DPL,#12H。
(6) 累加器A与片外RAM之间的数据传递类指令(4条)
MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所 有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接 进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送 入另一个单元(设为0200H单元),也必须先将0100H单元中的内 容读入A,然后再送到0200H单元中去。
MOV B,R0
PUSH ACC
;R0→B,R0为寄存器寻 址,B为直接寻址。
;A的内容压入堆栈
3.2.4
寄存器间接寻址
例:MOV A, @R0
• 以寄存器中内容为地址,以该地址中内容为操作数的
寻址方式。间接寻址的存储器空间包括内部RAM和
外部RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR, SP。其中R0、R1必须是工作寄存器组中的寄存器。 SP仅用于堆栈操作。
MCS-51单片机的指令集(分类)
子程序返回
1
24
RETI
中断返回
1
24
AJMP addr11
绝对短转移
2
24
LJMP addr16
长转移
3
24
SJMP rel
相对转移
2
24
JMP @A+DPTR
相对于DPTR的间接转移
1
24
JZ rel
累加器为零转移
2
24
JNZ rel
累加器非零转移
2
24
CJNE A,direct,rel
累加器与直接地址单元比较,不等则转移
2
12
MOV direct,Rn
寄存器内容送入直接地址单元
2
24
MOV direct,direct
直接地址单元中的数据送入直接地址单元
3
24
MOV direct,@Ri
间接RAM中的数据送入直接地址单元
2
24
MOV direct,#data8
8位立即数送入直接地址单元
3
24
MOV @Ri,A
累加器内容送入间接RAM单元
DEC @Ri
间接RAM内容减1
1
12
MUL A,B
A乘以B
1
48
DIV A,B
A除以B
1
48
DA A
累加器进行十进制转换
1
12
3、逻辑操作类指令
助记符
功能说明
字节数
振荡周期
ANL A,Rn
累加器与寄存器相“与”
1
12
ANL A,direct
累加器与直接地址单元相“与”
第三章 MCS-51单片机指令系统
位操作类指令(17条)
位操作指令实际就是布尔处理机的指令系统,这 为开关量控制提供了非常有效的手段。
位传送
位置位复位
位运算 位控制转移
位数据传送指令(2条)
MOV MOV
C , bit bit,C
例:片内RAM中(20H)=7FH,执行指令
MOV C,07H 则C=0
位置位复位指令(4条)
调用与返回指令组(4条)
长调用指令 绝对调用指令 子程序返回指令
LCALL addr16 ACALL addr11 RET
中断服务程序返回指令 RETI
空操作指令(1条)
NOP
例:把2000H开始的外部RAM单元中的数据送到3000H
开始的外部RAM单元中,数据个数存放在内部RAM 35H单元。
ANL(ORL,XRL) A , { #data ; direct ; @Ri ; Rn }
2. 直接地址单元与累加器A、立即数之间的逻辑操作(6条)
ANL(ORL,XRL) direct , { A ; #data }
清零与取反指令(2条)
清零: 取反:
CLR A CPL A
循环移位指令(4条)
2. 带进位加法指令(4条) ADDC A , { #data ; direct ; @Ri ; Rn }
3. 带借位减法指令(4条) SUBB A , { #data ; direct; @Ri ; Rn }
影响所有标志位状态
例: 执行指令 MOV A , #0C2H ADD A , #0A9H 对PSW相应状态位的影响如下 1 1 1
3.2 MCS-51指令分类介绍
共分5大类,111条指令。
1.数据传送类指令(29条) 2.算术运算类指令(24条) 3.逻辑运算及移位类指令(24条) 4.控制转移类指令(17条) 5.位操作类指令(17条)
MCS-51指令系统
MCS-51指令系统MCS-51单片机指令系统共有指令111条,分为五大类:一、数据传送类指令(29条)1.内部RAM数据传送指令组①立即数传送指令(共有8位立即数传送指令四条,16位立即数传送指令一条。
)MOV A , #data;A ← dataMOV direct , #data ;direct ← dataMOV Rn , #data;Rn ← dataMOV @ Ri , #data;(Ri) ← dataMOV DPTR , #data16;DPTR ← data16②内部RAM单元之间的数据传送(共有五条)MOV direct2 , direct1;direct2 ← (direct1)MOV direct , Rn;direct ← (Rn)MOV Rn , direct;Rn ← (direct)MOV direct ,@ Ri;direct ← ((Ri))MOV @ Ri , direct;(Ri) ← (direct)③累加器的数据传送指令(共有六条)MOV A , Rn ;A ← (Rn)MOV Rn , A;Rn ← (A)MOV A , direct;A ← (direct)MOV direct , A;direct ← (A)MOV A , @ Ri ;A ← ((Ri))MOV @ Ri , A;(Ri) ← (A)2.外部RAM数据传送指令组①使用Ri的间接寻址传送指令(由于Ri是8位地址指针,因此这两条指令和寻址范围只限于外部RAM的250个单元。
)MOVX A , @ Ri;A ← ((Ri))MOVX @ Ri , A;(Ri) ← (A)②使用DPTR的间接寻址传送指令(由于DPTR是16位地址指针,因此这两条指令的寻址范围为64K单元,要和P2配合寻址外部RAM空间。
)MOVX A , @ DPTR ;A ← ((DPTR))MOVX @ DPTR , AP;(DPTR) ← (A)对外部RAM的数据传送作如下几点说明:⑴MCS-51指令系统中没有其它专用的存储器读写指令,这里所讲的外部RAM数据传送指令实际上就是单片机外部数据存储器的读写指令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3 80C51指令集
根据指令功能的不同,51单片机指令通常分为数据传送 类、算术运算、逻辑运算类、控制转移类和位操作类 这5大类指令。
熟练掌握数据传送类指令、控制转移类及位操作的应用。 了解逻辑运算类和算术运算类指令,熟记其标志符。
2.3.1 2.3.2 2.3.3 2.3.4 2.3.5
数据传送类指令 算术运算指令 逻辑运算及移位类指令 控制转移类指令 位操作类指令
2.3.2 算术运算指令
C51的算术运算指令有加、减、乘、除法指令,以及增量和减量指 令。大多数指令都要以累加器A来存放一个源操作数,另一个源 操作数可以存放于任何一个工作寄存器Rn或片内RAM单元中, 也可以是指令码中的一个立即数。 1.加法指令 – 1) H不带进位的加法指令 – 2) 带进位的加法指令 – 3) 加1指令 – 4) 十进制调整指令 2.减法指令 3.乘法指令 4.除法指令
2.3.3 逻辑运算及移位类指令
逻辑运算指令可以完成数字逻辑的与、或、异或、清0和 取反操作。移位类指令是对累加器A的循环移位操作, 包括左、右方向,以及带与不带进位标志位的方式, 此类指令共有24条。 1.逻辑与指令ANL 2.逻辑或指令ORL 3.逻辑异或指令XRL 4.清零和求反指令 5.循环移位指令
立即寻址方式是指操作数在指令字节中给出,即操作数 以指令字节的形式存放于程序存储器中,为了与直接 寻址指令中的直接地址相区别,需要在操作数前面加 前缀标志“#”。
例如,执行指令: MOV A,#30H MOV DPTR,#8000H
第1条指令表示将立即数30H送入累加器A中。第2条指令 表示把16位立即数送入数据指针DPTR中,其中高8位 送DPH,低8位送DPL。
–
– –
了解单片机的指令格式。 了解单片机的指令类型。 熟悉指令中常用的符号。
2.1.2格式
指令的表示方法就是指令格式。51单片机指令主要由操作码助记符字段和操作数字段组成。指令 格式如下:
[标号:]操作码助记符 [操作数1,] [操作数2,] [操作数3,] [;注释]
2.1 初识单片机的汇编指令
2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 案例介绍及知识要点 程序示例 知识总结——指令格式 知识总结——指令类型 知识总结——常用符号说明
2.1.1 案例介绍及知识要点
将内部RAM中20H单元和30H单元的无符号数相 加,结果存入R0(高位)和R1(低位)中。
(1) 当前通用寄存器组。 (2) 部分特殊功能寄存器。例如,累加器A、寄存器B和数据指 针DPTR。
2.2.6 知识总结——寄存器间接寻址
寄存器间接寻址是指由指令指出某一个寄存器的内容作为操作数地 址的寻址方式。寄存器的内容不是操作数,而是操作数所在的存 储器地址,操作数是通过寄存器间接得到的。 寄存器间接寻址需要以寄存器符号的形式表示,为了区别寄存器寻 址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器的 名称前面加前缀标志“@”。访问内部RAM或外部数据存储器的 低256个字节时,只能采用R0或R1作为间接寻址寄存器。 寄存器间接寻址的寻址范围如下。
2.3.4 控制转移类指令
控制转移类指令通常用于实现循环结构和分支结构,共有17条,包括无条件转移指 令、条件转移指令、子程序调用及返回指令。 1.无条件转移指令 – 1) 绝对转移指令 – 2) 相对转移指令 – 3) 间接转移指令 2.条件转移指令 – 1) 判0或判1条件转移指令 – 2) 比较转移指令 – 3) 减1不为0转移指令 3.子程序调用与返回指令 – 1) 长调用指令 – 2) 绝对调用指令 – 3) 子程序返回指令 – 4) 中断返回指令 4.空操作指令
– – – –
没有操作数:操作数隐含在操作码中,如RET指令。 只有一个操作数:如INC A指令。 有两个操作数:如MOV A,30H指令,操作数之间以逗号相隔。 有3个操作数:如CJNE A,#00H,LOOP指令。
注释:对指令的解释说明,用以提高程序的可读性,注释前必须加分号,注释换行时行前也 要加分号。
2.2.2 程序示例
51单片机指令操作数的寻址方式主要有7 种方式,分别为直接寻址、立即寻址、 寄存器寻址、寄存器间接寻址、变址、 寻址、位寻址、相对等址,其中,上 述程序中涉及立即寻址、寄存器寻址、 寄存器间接寻址、位寻址和相对寻址5 种寻址方式。下面将详细介绍这7种寻
址方式。
2.2.3 知识总结——直接寻址
指令格式中各项的含义说明如下。 []:括号中的内容是可选的,其包含的内容因指令的不同可有可无。 标号:根据编程需要给指令设定的符号地址,可有可无;通常在子程序入口或转移指令的目 标地址处才赋予标号。标号由1~8个字符组成,第一个字符必须是英文字母,不能是数字或 其他符号,标号后必须有冒号。 操作码助记符:是指令的核心部分,由2~5个英文字母组成,如JB、MOV、CJNE或LCALL 等。用于指示执行何种操作,如加、减、乘、除和传送等。 操作数:表示指令操作的对象,可以是一个具体的数据,也可以是参加运算的数据所在的地 址。操作数一般有以下几种形式。
2.2.1 案例介绍及知识要点
编写多字节无符号数加法程序。设有两个多字节无符号 数分别存放在内部RAM的DAT1和DAT2开始的区域中 (低字节先存),字节个数存放在R2中,求它们的和, 并将结果存放在DAT1开始的区域中。 – 掌握单片机指令中几种常用的寻址方式。 – 明确各寻址方式的寻址范围。
2.2.5 知识总结——寄存器寻址
寄存器寻址方式是指由指令指出某一个寄存器的内容作 为操作数的寻址方式。寄存器寻址一般用于访问选定 的通用寄存器R0~R7。如果寄存器寻址方式使用了 另一个操作数,那么该操作数必须是累加器A。寄存 器寻址指令都是单字节指令(一条指令在程序存储器中 占一个字节地址)。 寄存器寻址的寻址范围如下。
直接寻址方式是指指令中含有操作数的地址,该地址指 出了参与运算或传送的数据所在的字节单元或位地址。
(1) 低128B单元在指令中直接以单元地址形式给出。 (2) 特殊功能寄存器除可以用单元地址形式给出外,还可以用 寄存器符号形式给出。
注意:直接寻址方式是访问特殊功能寄存器的唯一方 法。
2.2.4 知识总结——立即寻址
2.1.4 知识总结——指令类型
80C51汇编语言有42种操作码助记符(见附录A),用来描述33种操作 功能。一种操作码可以使用一种以上的数据类型。由于助记符规 定了其访问的存储器空间,所以一种功能可能有几个助记符,如 MOV、MOVX、MOVC。功能助记符与寻址方式组合可得到111 条指令。 按机器指令所占字节数分类,共有单字节指令(49条)、双字节指令 (45条)和三字节指令(17条)。 按指令执行时间分类,共有单周期指令(64条)、双周期指令(45条)和 四周期指令(两条,乘/除)。 按功能分类,80C51指令系统可分为:数据传送指令(29条)、算术 运算指令(24条)、逻辑运算指令(24条)、位操作指令(17条)、控 制转移指令(17条)。
2.1.5 知识总结——常用符号说明
2.2 51单片机指令的寻址方式
在指令系统中,操作数是指令的重要组成部分,它指定了参加运算的数据 或数据所在的地址单元。寻找源操作数地址的方式称为寻址方式。一条 指令采用什么样的寻址方式是由指令的功能决定的。寻址方式越多,指 令功能就越强,灵活性就越大。只有透彻地理解寻址方式,才能正确应 用指令。 2.2.1 案例介绍及知识要点 2.2.2 程序示例 2.2.3 知识总结——直接寻址 2.2.4 知识总结——立即寻址 2.2.5 知识总结——寄存器寻址 2.2.6 知识总结——寄存器间接寻址 2.2.7 知识总结——变址寻址 2.2.8 知识总结——位寻址 2.2.9 知识总结——相对寻址
2.3.5 位操作类指令
51单片机的一个显著有特点就是具有位操作功能。相应的位操作指令共有17条,主要 分为4类,即位传送指令、位状态控制指令、位逻辑运算指令和位条件转移指令。 进行位操作时,以进位标志位CY作为位累加器。位地址可用以下方式表示。 – 直接用位地址表示方式,如20H、D4H。 – 采用字节地址加位的方式表示,两者之间用“.”隔开,如20H.0。 – 采用寄存器名称加位的方式,如ACC.0、PSW.7、88H.7。 – 位名称方式,如EA、TR0。 1.位传送指令 2.位状态控制指令 1) 位清0 2) 位置1 3.位逻辑运算指令 1) 位逻辑“与” 2) 位逻辑“或” 3) 位取反 4.位条件转移指令 1) 判CY转移 2) 判bit转移
(1) 片内RAM低128B单元:这里只能用R0和R1作为间接寻址寄存器。 (2) 片外RAM 64KB:使用DPTR作为间接寻址寄存器。 (3) 片外RAM低256B单元:可以使用DPTR、R0和R1作为间接寻址寄 存器。 (4) 堆栈区:以堆栈指针SP作为间接寻址寄存器。
2.2.7 知识总结——变址寻址
2.3.1 数据传送类指令
51指令系统中,数据传送类指令共有29条。这类指令将源操作数传 送到指定的目的地址,传送后源操作数保持不变。数据传送类 指令可以在累加器A、R0~R7工作寄存器与片内数据存储器、 片外数据存储器和程序存储器之间进行数据传送。数据传送类 指令一般不影响标志位,只有堆栈操作可以直接修改程序状态 字PSW。数据传送类指令汇编语句的格式为: MOV ﹤目的操作数﹥,﹤源操作数﹥ 1.内部数据的传送指令 注意:由于80C51单片机堆栈 操作指令中的操作数只能使用 1) 以累加器A为目的操作数的指令 直接寻址方式,不能使用寄存 2) 以寄存器Rn为目的操作数的指令 器寻址方式,所以将累加器压 3) 以直接地址为目的操作数的指令 入堆栈时,累加器(ACC)不能 4) 以寄存器间接地址为目的操作数的指令 简写A。堆栈操作时指令 PUSH和POP要成对出现,且 5) 16位数据传送指令 遵循后进先出(LIFO)和先进后 6) 堆栈操作指令PUSH、POP 出(FILO)的原则。 7) 字节交换指令 8) 半字节交换指令 2.累加器A与片外RAM或I/O接口的数据传送指令 3.查表指令