8051单片机指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回本章首页
3.1.1 指令分类
• 按指令功能,MCS-51指令系统分为数据传递 与交换、算术运算、逻辑运算、程序转移、 布尔处理操作、CPU控制等6类。 • 布尔处理操作类指令又称位操作指令。
返回本节
3.1.2 指令格式
• 在MCS-51指令中,一般指令主要由操作码、操作数 组成。 指令格式为:操作码 [目的操作数][,源操作数] • 指令应具有以下功能: ( 1)操作码指明执行什么性质和类型的操作。例如, 数的传送、加法、减法等。 ( 2)操作数指明操作的数本身或者是操作数所在的地 址。
上述指令是将源操作数指定的内容送到当前工作寄存器组 R0—R7 中的某个寄存器。
例如:设(A)=78H,(R5)=47H,(70)=F2H。
MOV R5,A;R5← (A) ,( R5 )=78H MOV R5,70H;R5← (70H) ,( R5 )=F2H
MOV R5,#A3H;R5← A3 ,( R5 )=A3H
又 如:MOVC A,@ A+PC
A←(A+PC) 这种寻址方式多用于查表操作。
;
程序存储器
DPTR 2000H A 10H
2000H
2010H
64H
64H(10H)
图3-4 变址寻址示意图
返回本节
3.2.6 相对寻址
• 以当前程序计数器PC的内容为基础,加上指 令给出的一字节补码数(偏移量)形成新的 PC值的寻址方式。 • 相对寻址用于修改PC值,主要用于实现程序 的分支转移。 例如,SJMP 08H ;PC←PC+2+08H
3.2 寻址方式
• 寻址方式:就是寻找指令中操作数或操作数所在地址的方法。 8051共有七中寻址方式。 • 3.2.1 立即寻址 • 3.2.2 直接寻址
• 3.2.3 寄存器寻址
• 3.2.4 寄存器间接寻址 • 3.2.5 变址寻址
• 3.2.6 相对寻址
• 3.2.7 位寻址 • 3.2.8 寻址空间及符号注释
第三章 8051单片机指令系统
• 3.1 MCS-51指令系统的分类、
格式及一般说明
• 3.2 寻址方式
学习目的及要求
• 熟悉指令、指令系统、机器语言、及汇编语 言的概念; • 熟悉8051汇编语言指令的格式; • 掌握8051的七种寻址方式,并能实际应用;
MCS-51单片机指令系统有如下特点:
返回本章首页
3.3.1 数据传送类指令
• 数据传送类指令共 28 条,是将源操作数送到 目的操作数。 • 指令执行后,源操作数不变,目的操作数被 源操作数取代。
• 数 据 传 送 类 指 令 用 到 的 助 记 符 有 MOV 、 MOVX 、 MOVC 、 XCH 、 XCHD 、 SWAP 、 PUSH、POP8种。
2.寻址方式中常用符号注释
• Rn——当前选中的寄存器区中的8个工作寄存器 R0~R7(n=0~7)。 • Ri——当前选中的寄存器区中的2个工作寄存器(间 接寻址寄存器)R0、R1(i=0,1)。
• direct—8位的内部数据存储器单元中的地址。
• #data——包含在指令中的8位常数。 • #data16——包含在指令中的16位常数。
• addr16——16位目的地址。
• addr11——11位目的地址。
rel——8位带符号的偏移字节,简称偏移量。 DPTR——数据指针,可用作16位地址寄存器。 bit——内部RAM或专用寄存器中的直接寻址位。 A——累加器。 B——专用寄存器,用于乘法和除法指令中。 C——进位标志或进位位,或布尔处理机中的累加器。 $ ——用于表示程序计数器的当前值。常出现在转移指 令中,例如:SJMP $ 表示循环等待。
返回本节
3.2.5 变址寻址
是基址寄存器(A)+变址寄存器( PC或 DPTR) 的间接寻址。变址寻址只能对程序存储器中数据进 行操作。由于程序存储器是只读的,因此变址寻址 只有读操作而无写操作,在指令符号上采用 MOVC 的形式(如图3-4所示)。 例如:MOVC A,@ A+DPTR; A←(A+DPTR)
返回本章首页
3.2.1 立即数寻址
• 指令中直接给出操作数的寻址方式。立即操作数用 前面加有#号的8位或16位数来表示。 例如:MOV A,# 60H;A←60H MOV DPTR,# 3400H;DPTR←3400H MOV 30H,# 40H ;30H单元←40H
• 上述三条指令执行完后,累加器A中数据为立即数据 60H , DPTR 寄存器中数据为 3400H , 30H 单元中数 据为立即数40H。
4.以间接地址为目的操作数
MOV @Ri,A ;(Ri) ← A ;(Ri) ←(direct) ;(Ri) ← #data
MOV @Ri,direct MOV @Ri,#data
例如:设(30H)=6FH,R1=40H,
MOV @R1,30H,
结果30H单元中数据取出送入R1间接寻址的 40H单元,(40H)=6FH。
• 以寄存器中内容为地址,以该地址中内容为 操作数的寻址方式。间接寻址的存储器空间 包括内部数据RAM和外部数据RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1, DPTR,SP。其中R0、R1必须是工作寄存器 组中的寄存器。SP仅用于堆栈操作。
例如:MOV @R0,A ;内部RAM(R0)←A
其指令操作过程示意图如图3-1所示。
又如:MOVX @DPTR,A; 外部RAM (DPTR)←A 其指令操作过程示意图如图3-2所示。
片内RAM
R0
30H
30H
34H
A
34H
图3-1 MOV @R0,A间接寻址示意图
片外RAM
DPTR
2000H
2000H
30H
A
30H
图3-2 MOVX @DPTR,A 间接寻址示意图
@—— 间 址 寄 存 器 或 基 址 寄 存 器 的 前 缀 , 如 @Ri,@DPTR。 / ——位操作数的前缀,表示对该位操作数取反, 如/bit。 ×——片内RAM的直接地址或寄存器。 (×)——由×寻址的单元中的内容。
—— 箭头左边的内容被箭头右边的内容所 代替。
返回本节
课堂作业:
P67: 1、4、7
(3)指定操作结果存放的地址。
返回本节
8051指令系统中,有单字节、双字节或三字节指令
1.单字节指令:单字节指令中的8位二进制代码既包含操 作码的信息,又包含操作数的信息。共49条。 2 .双字节指令:用一个字节表示操作码,另一个字节表 示操作数或操作数所在的地址。共有45条。 3.三字节指令:一个字节操作码,两个字节操作数。共 有17条。 8051单片机共有111条指令。
MOVX A,@Ri
MOVX @Ri,A
;A ← ((Ri))
;(Ri)← A
寻址范围是片外256BRAM。 MOVX A,@DPTR;A ← ((DPTR))
MOVX @DPTR,A;(DPTR) ← A
寻址范围是片外64KBRAM。
7.读程序存储器(查表指令)
注:数据表格放在程序存储器中(只有两条指令)。 ①近程查表指令(256B) MOVC A,@A+PC ;A ← ((A)+(PC)) 只能查找指令所在地址以后256B范围内的常数或代码。
5.以DPTR为目的操作数
MOV DPTR,#data16 ;DPTR ← #data16 例如 执行 MOV DPTR,#2000H 后,
(DPTR)= 2000H。 DPH ← 20H, DPL← 00H
这是唯一的16位立即数传送指令,把16位常数 送入DPTR。
6.访问外部数据RAM
在8051指令系统中,访问片外RAM只能用寄存器间接 寻址,与累加器A配合,共四条指令。
注:8051指令系统中没有“MOV Rn,Rn”传送指令。
3.以直接地址为目的操作数
MOV direct ,A ; direct ← (A) MOV direct , Rn ; direct ←( Rn )
MOV direct , direct ;目的direct ←(源direct )
MOV direct ,@Ri ; direct ← ((Ri)) MOV direct ,#data ; direct ← #data 上述指令是将源操作数指定的内容送到由直接地址 direct所指出的片内存储单元中 。
返回本节
3.2.8 寻址空间及符号注释
1.寻址空间:每种寻址方式可涉及的存储器空间
寻址方式 源操作数寻址空间
立即数寻址
直接寻址 寄存器寻址
程序存储器ROM
片内RAM低128B、SFR 工作寄存器R0---R7、A、B、C、DPTR
寄存器间接寻址
片内RAM低128B[@R0、@R1]
片外RAM [@R0、@R1、 @DPTR]
课后作业: P67: 2、3、5
谢谢大家 再 见!
3.3 MCS-51单片机的指令系统
学习目的及要求 • 熟悉各类指令的功能、操作的对象和结果及 指令执行后对PSW各个位的影响。 • 8051指令系统的特点:不同的存储空间寻址 方式不同,适用的指令不同。
• 3.3.1 数据传送类指令 • 3.3.2 算术运算类指令 • 3.3.3 逻辑运算类指令 • 3.3.4 控制程序转移类指令 • 3.3.5 调用子程序及返回指令 • 3.3.6 位操作指令 • 3.3.7 空操作指令
返回本节
3.2.2 直接寻址
• 指令中直接给出操作数地址的寻址方式,能 进行直接寻址的存储空间有 SFR 寄存器和片 内RAM的128个单元。
例如:MOV A,P1;
A←(P1) ;A←(30H)
把SFR中P1口的内容送A。 MOV A,30H
Hale Waihona Puke Baidu
注意解释字段中加括号和不加括号的区别!
• 30H为直接给出的内部RAM的地址。
变址寻址 相对寻址 位寻址
程序存储器[@A+PC、 @A+DPTR] 程序存储器256B范围(PC+偏移量) 片内RAM的20H—2FH字节地址、部分SFR
例如:MOV A,#55H;
究竟属于立即寻址还是寄存器寻址呢? 这要看以哪个操作数为参照系了。我们一般 所说的寻址方式是指源操作数,所以此例为 立即数寻址。
• 源操作数可采用寄存器、寄存器间接、直接、 立即、变址5种寻址方式寻址; • 目的操作数可以采用寄存器、寄存器间接、 直接寻址3种寻址方式。
• 数据传送指令是一种最基本最常用的操作,在 通常的程序中占有极大的比例。
1.以A为目的操作数
MOV A,Rn ;A← Rn
MOV A,direct ;A←(direct)
MOV A,@Ri
;A←(Ri)
MOV A,#data ;A← #data
上述指令是将源操作数指定的内容送到累加器 A中。
上述操作只影响PSW的P标志位。
2.以Rn为目的操作数
MOV Rn,A ;Rn ← A MOV Rn,direct;Rn ←(direct)
MOV Rn,#data
;Rn ← #data
返回本节
3.2.3 寄存器寻址
• 以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 例如:MOV A,R0;A ←(R0) CLR A ;A←0
INC DPTR;DPTR←DPTR+1
ADD A,R5;A←(A)+(R5)
返回本节
3.2.4 寄存器间接寻址
②远程查表指令(64KB) MOVC A,@A+DPTR ;A ← ((A)+(DPTR))
查表范围可达ROM的64KB空间。
指令操作示意图如图3-5所示。
程序存储器
2000H
SJMP 08H 08H
PC
(2000H)
2000H+2
200AH
200AH
图3-5 相对寻址示意图
返回本节
3.2.7 位寻址
• 位寻址只能对有位地址的单元作位寻址操作。 • 位寻址其实是一种直接寻址方式,不过其地 址是位地址。 例如:SETB 10H ;将10H位置1。 若 22H 单元中存放着数据 40H , 22H 单元的 D0位的位地址为10H,执行上述指令后 (22H)=41H。 又如:MOV 32H,C ORL C ,32H ;32H←进位位C ;C←C∨32H
(1)指令执行时间快。
(2)指令短,约有一半的指令为单字节指令。
( 3 )用一条指令即可实现 2 个一字节的相乘或 相除。 (4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出操 作。
3.1 MCS-51指令系统的分类、格式及一般说明 • 3.1.1 指令分类
• 3.1.2 指令格式