MCS51单片机的指令系统
合集下载
MCS-51单片机指令系统教程(3)

MOV IE,#00H ;初始化中断允许寄存器 MOV TH1,#0FEH ;为定时器1赋初值 尽管使用SFR的寄存器名称来取代直接地址,可以带 来程序的可读性,但是在汇编时,仍要将寄存器名字转换 为直接地址。
2,当直接地址时在工作寄存器区中时,可以使用两种寻址 方式来访问。 如:
MOV A,00H ;将RAM中00H单元数据送累加器A
04
03
02
01
00
返回前一次
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
三字节指令在存储器中存放的方式示意图
指令的字节数与指令的运行时间
指令的字节多是否意味着指令周期就长?
指令
字节数 周期数
MOV A,R0
1
1
MOV A,#0FFH 2
1
MOV 20H,#30H 3
2
MUL AB
1
4
INC DPTR
1
1
指令说明 R0内容送累加器A
立即数FFH送A 立即数30H送内存20h单元
累加器A 02H
ALU
DPTR 0300H
0300H + 02H
0302H
ROM
0302H X
返回
MOVC A,@A+DPTR
2.2.6 相对寻址
转移指令中使用的一种寻址方式。MCS-51单片机的指令 系统中,有两类转移指令:相对转移( 2个或3个字节)
2,当直接地址时在工作寄存器区中时,可以使用两种寻址 方式来访问。 如:
MOV A,00H ;将RAM中00H单元数据送累加器A
04
03
02
01
00
返回前一次
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
三字节指令在存储器中存放的方式示意图
指令的字节数与指令的运行时间
指令的字节多是否意味着指令周期就长?
指令
字节数 周期数
MOV A,R0
1
1
MOV A,#0FFH 2
1
MOV 20H,#30H 3
2
MUL AB
1
4
INC DPTR
1
1
指令说明 R0内容送累加器A
立即数FFH送A 立即数30H送内存20h单元
累加器A 02H
ALU
DPTR 0300H
0300H + 02H
0302H
ROM
0302H X
返回
MOVC A,@A+DPTR
2.2.6 相对寻址
转移指令中使用的一种寻址方式。MCS-51单片机的指令 系统中,有两类转移指令:相对转移( 2个或3个字节)
专题四 MCS-51指令系统-第三章 单片机的指令系统

8、指令字节数和机器周期数
第三章 单片机的指令系统
是必须掌握的内容。 Ø 一台计算机所有指令的集合, 称为该计算机的指令系统。 Ø 各种计算机都有专用的指令系统。
Ø 本章主要介绍单片机的寻址方式及指令系统,
学时分配:2学时 1—53+97+98+99 2学时 54—96 100
第三章 单片机的指令系统 • 3.1 MCS-51 指令系统概述
类
按指令字长分类
按指令执行时间分类
3.2 寻址方式
• 寻址方式:7种
– – – – – – – – – 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 变址间接寻址 相对寻址 位寻址 寻址方式与寻址空间 MCS-51单片机的两个突出特点
寄存器寻址——操作数存放在寄存器中
寄存器为 MOV A,R0 MOV R0,#01001111B R0~R7,A,DPTR,C SETB RS0 MOV R3,#56H
目的寻址为直接寻址
2) 20H ~2FH 可位寻址区的寻址方式
字节寻址方式: 直接寻址 direct
寄存器间接寻址@R0,@R1
位寻址: bit 直接寻址
例: MOV 26H,C ; 位寻址 (26H)1位
MOV 26H,A ;字节寻址(26H)8位
3) 30H ~7FH 数据缓冲区的寻址方式
字节寻址方式: 直接寻址 direct
MOV A,#23H
PUSH ACC
;
A寄存器寻址
POP
0E0H
;直接寻址
4、可做片内RAM的指针有:
R0,R1, 四个组共有8个 预先设置RS1、RS0,以选定组。 SETB RS0 CLR RS1; 1组
MCS-51指令系统

18
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
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系列单片机指令系统及汇编语言程序设计

AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
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条)
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条)
大学课件MCS51单片机指令系统与汇编语言程序设计

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。
MCS-51单片机指令系统

MOV DPTR,#2000H
6、栈操作指令
PUSH direct; (SP)<-SP+1, ((SP))<(direct)
进栈指令的功能是先将SP的指针加1,然 后把直接地址指出的内容传送到栈指针SP寻 址的内部RAM单元中。
POP direct; (direct)<-((SP)), (SP)<-SP-1
@DPTR, A; ((DPTR))<-(A)
A, @R1
@DPTR,A
8、查表指令
MOVC A,@A+DPTR; (A)<-((A))+((DPTR)) MOVC A,@A+PC ; (A)<-((A))+((PC))
9、字节交换指令
XCH A, Rn; XCH A,direct; XCH A,@Ri;
XRL A, direct ; A与direct中的值 ;按位'异或',结果送入A中
XRL A, @Ri; A与间址寻址单元@Ri中 ;的值按位'异或',结果送入A中
4、逻辑异或指令
XRL A, #data ;A与立即数data按位 ;‘异或’,结果送入A中
XRL direct, A ; direct中值与A中的值 ;按位‘异或’, ;结果送入direct中
(A)<->(Rn) (A)<->(direct) (A)<->((Ri))
10、半字节交换指令
XCHD A,@Ri; (A)0-3<->((Ri))0-3
2、算术指令
1、不带进位位的加法
ADD
A, #data;
(A)<-(A)+#data
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问执行以下各指令的结果
1、XCH A, R0 ;A=30H, R0=7AH
2、XCH A,@R0 ;A=0A5H,(30H)=7AH
3、SWAP A
;A=0A7H
17
2、算数运算指令
• 不带进位加法指令(4条) ADD A, Ri ADD A, direct ADD A, @Rj ADD A, #data
7
1、数据传送
• 数据传送到累加器A(4条)
MOV A,Ri MOV A, direct
MOV A, @Rj
MOV A, #data
•数据传送到工作寄存器 Ri (3条)
MOV Ri, A MOV Ri, direct MOV Ri, #data
注:无MOV Ri,Ri 传送指令 8
•数据传送到内部RAM或SFR(8条)
MOVC A,@A+DPTR
DPTR 0251H +
A 12H
A 1EH
0263H 1EH
ROM/EPROM
3
•相对寻址
PC ROM 2000H 40 2001H 06 2002H
2008H
JC 06H
JC 06H ALU
2002H
• 位寻址
CLR 6FH
4
MCS-51单片机寻址原则
• 程序存储器只能采用直接寻址、相对寻址 和基址加变址的间接寻址方式
SWAP A
14
第三章作业1
• 完成以下数据传送:
1、R1内容传送到R0
2、外部 RAM 20H 单元内容送内部RAM
20H 单元
3、外部 RAM 1200H 单元内容送R0
4、外部 R0M 2000H 单元内容送R0
5、外部 R0M 2000H 单元内容送外部 RAM
20H 单元
15
•在8051片内RAM中,已知 (30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H 说出顺序执行下列指令后的结果。
MOV MOV MOV MOV MOV MOV MOV MOV
direct, A direct, Ri direct, direct direct, @Rj direct, #data @Rj, A @Rj, direct @Rj, #data
9
• 16位数据传送指令(1条)
MOV DPTR, #data16
18
例: 设(A)=0C3H, (R0)=0AAH 执行 ADD A, R0
(A) : 1100 0011 + (R0): 1010 1010
1 0110 1101
进位 半进位
结果: (A)=6DH, 标志位: CY=1, OV=1, AC=0
19
•带进位加法指令(4条)
ADDC A, Ri ADDC A, direct ADDC A, @Rj ADDC A, #data
• 堆栈操作指令(2条)
PUSH direct POP direct
• 累加器与片外RAM传送指令(4条)
MOVX MOVX MOVX MOVX
A, @DPTR @DPTR, A A, @Rj @Rj, A
(16位地址指针, 寻址范围64K)
(8位地址指针,寻址 范围256字节) 10
•查表指令(2条)
第三章 MCS-51单片机的指令系统
第一节、寻址方式
• 立即寻址
MOV A,#0FFH
•寄存器寻址
操作数
MOV A,R0
寄存器内容作为操作数
•寄存器间接寻址 MOV A,@R0
寄存器内容作为
R0 65H
操作数地址 注意:工作寄存器中仅
65H 47H
R0、R1可用于间接寻址,
A 47H
RAM
且MOV访问片内RAM,
• C--进位标志 有进位(借)位C=1
无进位(借)位C=0
• AC--半进位标志
• F0, F1--用户标志
• RS1,RS0--工作寄存器指针
• OV--溢出标志 , 溢出OV=1
• P--奇偶标志,A中奇数个1时,P=1
6
第二节、MCS-51指令系统
8051指令系统有111条指令组成 • 数据传送:28条 • 算数运算:24条 • 逻辑运算:25条 • 位操作: 17条 • 控制转移: 17条
MOVX访问片外RAM
1
•直接寻址
MOV A,69H
操作数的直接地址
直接寻址访问的存储空间:
• 特殊功能寄存器(只能用直接寻址访问) •片内RAM的低128字节(对于52系列片内 RAM高128字节,用寄存器间接寻址访问) • 位地址空间 • 程序存储器 如 LJMP addr16
2
• 变址寻址(基址寄存器+变址寄存器间接寻址)
近程查表:
MOVC A, @A+PC 只能查指令所在地址以后256字节范围内的表格
远程查表:
MOVC A, @A+DPTR 查表范围可达64K
11
例1:ROM中有一表格为
1010H : 02H
1011H : 04H
1012H : 06H
1013H : 08H
执行程序: 1000H: 1002H: 1003H:
MOV MOVC MOV
A, #0DH A, @A+PC R0, A
结果:(A)=02H, (R0)=02H , (PC)=1004H
12
例2:用DPTR为基址寄存器查表
在ROM 中,表格为: 7010H:02H 7011H:04H 7012H:06H 7013H:08H
执行程序: MOV A,#10H PUSH DPH
PUSH DPL MOV DPTR,#7000H MOVC A,@A+DPTR POP DPL
POP DPH 13
结果:(A)=02H, (DPTR)=原值
•字节交换指令(3条)
XCH A,Ri XCH A,direct XCH A,@Rj
• 半字交换(1条)
XCHD A,@Rj;
• A半字节交换
• 特殊功能寄存器(SFR)只能采用直接寻址 • 片内RAM低128字节可采用直接寻址,也
可采用寄存器间接寻址 • 片内RAM高128字节只能采用寄存器间接
寻址(针对52系统) • 片外RAM只能采用 MOVX 指令访问
5
二、程序状态字PSW(D0H)
C AC F0 RS1 RS0 OV F1 P
MOV A,40H MOV R1,A MOV P1,#0F0H MOV @R1,30H MOV DPTR,#1234H MOV 40H,38H MOV R1,30H MOV 90H,R1 MOV 48H,#30H MOV A,@R1
16
MOV P2, P1
•已知A=7AH, R0=30H, (30H)=A5H, PSW=81H