MCS51单片机指令系统讲义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2,当直接地址时在义务寄存器区中时,可以运用两种寻址 方式来访问。 如:
MOV A,00H ;将RAM中00H单元数据送累加器A
MOV A,R0 ;将义务寄存器R0的内容送累加器A
这里运用了不同的寻址方式,其指令的结构也不相反。
前者是:11100101(0E5H)、00000000〔00H〕 双字节。
01110100B
很清楚:程8位序存的储操器作数自身占据一个字节。
n 01110100 n+1 data
mov a,#data
双字节指令在顺序存储器的寄存表示图
三字节指令〔16条〕:
指令中的操作数为双字节。如:
MOV DPTR,#data16 1001000B,data158,data7-0
或许:指令中区分包括1个字节的操作数和1个 字节的操作数地址。如:
MOV direct,#data 举例:MOV
20H,#0FFH
10010000
MOV direct,#data OP (75H)
data15-8 data8-0
MOV dptr,#data16
direct (20H) data (FFH)
三字节指令在存储器中寄存的方式表示图
指令的字节数与指令的运转时间
INC R1
;将寄存器R1中的内容加一
ADD A,R3 ;A的内容与寄存器R3的内容相加送A
寄存器寻址方式的指令大多是单字节指令。指令自身并
不带有操数,而是含有寄存操作数的寄存器的3位代码。以
MOV A,Rn为例,运用R7寄存器,所以rrr=111,既指令的机器
码为:0EFH
1 1 1 0 1 r r r E8H~EFH
MOV A,#30H
;将〔8位〕立刻数送累加器A
MOV DPTR,#2000H ;16位立刻数送DPTR积存器
【留意】:MOV A,#30H MOV A,30H 两者的区别。 立刻数寻址的指令长度为2或3个字节。
ROM n 74H n+1 30H
累加器A
前往
MOV A,#30H 指令执行流程
DPTR
指令运用DPTR或PC中的内容作为基地址,再与累加器A 的内容相加,其和作为操作数地址。如:
MOVX A,@A+PC ;PC内容与A的内容相加得操作数地 址
并将此操作数送A MOVX A,@A+DPTR;DPTR内容与A的内容相加得操作 数
地址并将此操作数送A
运用变址指令时,要事前区分为A、DPTR赋值,以便取 得操作数得地址。
MOV A,Rn
操作码 寄存器代码
前往
2.2.2 直接寻址
指令自身含有操作数的8位或16位地址。既指令直接给 出了操作数的地址。如:
MOV A,30H ;将RAM30H单元内容送累加器 这里30H是操作数在RAM中的地址。 很清楚,直接寻址的指令长度是两个或三个字节。 勇于开始,才能找到成功的路
程序ROM
MCS51单片机指令系统 讲义
2021/7/4
2.1:MCS-51指令系统的概述
MCS-51共有111条指令,指令的长度和执行时 间因不同的指令而各不相反。
2.1.1 指令格式 2.1.2 指令的三种表示方式 2.1.3 指令的字节数 2.1.4 指令的分类
继续
2.1.1 指令格式:
指令格式:既指令的结构方式。
1,访问片内RAM20H存储单元; MOV A,20H
片外数据 2,访问片外RAM存储单元;
存储器
64KB
MOV R0,#20H
MOVX A,@R0
3,虽然片内与片外的RAM单元
0000H
的00H-FFH地址相堆叠但由 于指令的不同不会发作地址
片外数据存储器 64KB个字节
混乱。
前往
2.2.5 变址寻址
2F
2E
2D
2C
2B
2A
29
28
24H
27
26
25
24
23
22
21 20 位地址
1F
1E
1D
1C
1B
1A
19
18
17
16
15
14
13
12
11
10
0F
0E
0D
0C
0B
0A
09
08
前往
20H
07
06
05
04
03
02
01
00
前往前一次
2.2.3立刻寻址
指令自身直接含有所需求的8位或16位的操作数。
将此数称为〝立刻数〞〔运用#标明〕。如:
3,间址方式的指令不能访问SFR中的单元。如下面的顺序 是错误的: MOV R1,#80H MOV A,@R1 〔由于80H为SFR的物理地址〕
MCS-51 片内 、片外 数据存储器表示图
FFH 特殊功用 寄存器 SFR
80H 7FH
通用数据 存储器
00H
片内数据存储器 256B个字节
FFFFH
留意:
00000100B
【特点】:操作数隐含在操作码中。
含有操作数寄存器称号的单字节指令:
如:MOV A,R0
11101000B
MOV A,R1
11101001B
【特点】:寄存器名以三位数代码的方式在指令的后三位。
双字节指令〔46条〕:
指令的操作码和操作数各占一个字节。 如:
MOV A,#data data
78
77
76
75
74
73
72
71
70
6F
6E
6D
6C
6B
6A
69
68
67
66
65
64
63
62
61
60
5F
5E
5D
5C
5B
5A
59
58
57
56
55
54
53
52
51
50
字节地址
4F
4E
4D
4C
4B
4A
49
48
47
46
45
44
43
42
41
40
3F
3E
3D
3C
3B
3A
39
38
37
26
25
24
23
22
21
20
行。
〝机器码〞后才干为CPU所识别和执
前往
2.1.3 指令的字节数
在MCS-51单片机的指令系统中,因指令操作码和操作数 的不同,指令〔在存储器中〕长度也各不相反。
分为单字节、双字节和三字节。
单字节指令〔49条〕:分无操作数、有操作数两种。
无操作数:如 INC DPTR 10100011B
INC A
1,寄存器寻址
5,变址寻址;
2,直接寻址
6,相对寻址;
3,立刻数寻址
7,位寻址。
4,寄存器直接寻址
继续
2.2.1寄存器寻址
当所需求的操作数在外部某一个寄存器Rn中时,将此寄存器 名Rn直接写在指令的操作数的位置上。如:
MOV A,R7 ;将寄存器R7中的内容送累加器A中。
MOV 20H,R0 ;将寄存器R0中的数据送内存20H单 元
3,指令的〝助记符〞方式〔也称〝汇编格式〞〕:
00100100B
24H
00001000B #08H
08H ADD A,
二进制表示方式 十六进制表示
汇编格式
1,这是一种由英文单词或字母、数字来表 征指令功用的
方式。是一种便于阅读、书写和交流 的表示方式。
2,这种 〝汇编〞格式的指令必需把它〝翻 译〞为二进制方式
【留意】MOV A,@R0 和 MOV A,R0 指令的区别。
ROM 11100110
累加器A
3 30H
RAM x
2 1
00H
30H
R0
运用寄存器间址指令时应留意的三个效果:
1,间址寄存器Ri只能运用R0、R1寄存器〔i=0、1〕。
2,间址方式不只用于片内RAM,异常也适用于片外RAM。 关于片内RAM运用Ri寄存器,寻址范围为00H~FFH。 关于片外RAM,可以运用Ri,也可以运用DPTR做间址寄 存器。两者区别在于后者寻址范围为0000H~FFFFH,两 者都可以RAM和ROM。
特点: 能被CPU直接识别、运转的方式。也称机器码、 汇编语 言的目的代码。
缺陷:方便于阅读、记忆和调试修正。
2,十六进制表示方式: 它是对二进制方式的一种简化。
00100100B
24H
00001000B
08H
二进制表示的方式 十六进制表示的方式
在实验室等少数环境下,可以将这种方式作为输 入顺序的一种辅佐手段。但是,这种方式的指令格式必需 由对应的监控顺序把它们翻译成二进制的〝机器码〞后存 入顺序存储器并运转。
变址指令只适用于对ROM存储器得访问,如查表等。
【举例】:ROM中0302H 单元有一个数x,现要把它送到累 加器A中,试编程。
MOV DPTR,#0300H MOV A,#02H MOVC A,@A+DPTR
;立刻数送DPTR ;立刻数送累加器A ;从ROM的00302单元取数送A
变址寻址表示图
操作码 OP
操作数或操作数地址 DATA 或 ADDRESS
由操作码和操作数〔或操作数地址〕构成指令的结构。
举例:MOV A,#0FFH
ADD A,R0
前往
2.1.2 指令的三种表示方式:
指令的表示方式是识别指令的标志。
1,二进制的表示方式:〔以〝累加器的内容+08H〞 为例〕 00100100B 操作码 OP 〔加法〕 00001000B 操作数DATA〔08H〕
ROM
90H 20H 00H
MOV DPTR,#2000H指令的存储和执行
2.2.4 寄存器直接寻址
指令中含有保管操作数地址的寄存器Ri。 MOV A,@Ri ( i=0、1)
CPU首先依据指令中寄存器名Ri找到操作数地址,然后 再从该地址中找到操作数 x。
如:MOV R0,#30H ;立刻数送R0寄存器 MOV A,@R0 ;从RAM的H单元取数送累加器A
2.1.4 指令的分类
MCS-51单片机的指令假定按功用划分可以分为五类: 1,数据传送类指令:完成数据在单片机外部之间的传送。
分为8位数和16位两种。除了奇偶位外,指令的执行对 PSW无影响。
2,算术运算指令:用于操作数之间的加、减、乘除运算。 【特点】:少数状况下:操作数之一在累加器A中,结果 也保管在A中,运算结果要影响PSW〔进位标志、奇偶和 溢出标志等〕。
3,逻辑操作和循环移位指令:操作数之间的逻辑加、逻辑与、 取反和异或等操作。少数状况下一个操作数在A中,结果 也存于A。移位指令分为左移、右移和带进位和不带进位 几种状况。与算术类指令相比逻辑类指令基本不影响 PSW的内容。
4,控制转移类指令:条件转移、无条件转移,调用和前往。 【 特点】:经过修正顺序指针PC的内容,使CPU转到另
一处执行,从而改动顺序的流向。
5,位操作指令:位传送、位置位、位运算和位控制转移等 操作。
【 特点】:按位操作而不是按字节的操作。位控转移的判 别不是检测某一个字节而是对某一个位中止检测并决议能 否中止顺序转移。
这类指令基本不影响PSW的内容。
前往
2.2 寻址方式
在指令的操作数位置上,用于表征、寻觅操作数的方式定义 为〝寻址方式〞。 正确的了解、掌握寻址方式,是学习、运用指令的关键。 在MCS-51单片机中,共运用了七种寻址方式。 它们区分是:
累加器A 02H
ALU
DPTR 0300H
0300H + 02H
0302H
ROM
0302H X
前往
MOVC A,@A&指令中运用的一种寻址方式。MCS-51单片机的指令 系统中,有两类转移指令:相对转移〔 2个或3个字节〕
累加器A
数据RAM
n
OP
n+1
30H
30H 操作数x
直接寻址表示图
运用直接寻址应留意的三个效果:
1,指令助记符中direct是用16进制数表示的操作数地址。 外地址恰恰在SFR区域时,指令也可以用寄存器名来表示。 如: MOV A,80H 可以写成 MOV A,P0 后者用SFR中寄存器的名字取代它的物理地址80H。
很清楚,后者更容易阅读和交流,所以我们建议运用SFR 中寄存器称号来替代直接地址。
如:MOV A,SBUF ;串口数据缓冲器数据送A MOV IE,#00H ;初始化中缀允许寄存器 MOV TH1,#0FEH ;为定时器1赋初值
虽然运用SFR的寄存器称号来取代直接地址,可以 带来顺序的可读性,但是在汇编时,仍要将寄存器名字转 换为直接地址。
指令的字节多能否意味着指令周期就长?
指令
字节数 周期数
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单元
乘法指令 16位寄存器DPTR加一
从表中可见,指令的字节数与指令周期不是对等的关系 前往
前者用direct表示,然后者用bit 表示,但在指令中都是 用16进制表示的数。
如:
MOV A,20H
MOV C,20H 送
;将RAM的20H单元内容送A ;将位寻址区中的位地址为20H位内容
PSW 中的Cy中。
片内 RAM〔20H-2FH〕中的位寻址区结构图
2FH 7F
7E
7D
7C
7B
7A
79
后者的机器码是:11101000(0E8H)
单字节;
在物理结构上,R0与RAM的00H单元恰恰是同一 单元,所以不同的指令而执行结果是一样的。
相似的还有累加器A:
INC A
寄存器寻址方式〔单字节〕;
INC ACC 直接寻址方式〔双字节〕;
INC 0E0H 直接寻址方式〔双字节〕。
3,在指令系统中:字节地址与位地址是完全不同的概念。
相关文档
最新文档