MCS-51指令系统
第03章 MCS-51指令系统
三、指令系统支持的寻址方式(4-2)
► 寄存器间接寻址的三种用法: ► ⑴可以借助于 R0 或 R1 这 2 个工作寄存器用 MOV 指
令进行寄存器间接寻址来寻址片内RAM区的通用寄 存器; ► ⑵可以借助于R0或R1这2个工作寄存器用MOVX指 令进行寄存器间接寻址来寻址片外 64K数据存储器 R0R1片外 区的低256单元; ► ⑶还可以借助于16位的数据指针DPTR用MOVX指 令进行寄存器间接寻址来寻址整个片外64K数据存 DPTR片外 储器区中的任一单元。
► 4、寄存器间接寻址:
操作码中包含着R0或R1这2 个工作寄存器中某一个的序号,而该工作寄存器中 的内容为存放操作数的地址。
E7H MOV A,@R1 ► 若指令执行前 ► PSW.4=0(RS1)、PSW.3=0(RS0)、 ► (01H)=30H(R1)、(30H)=33H; ► 则执行指令后累加器A即(E0H)=33H。 ► 必须注意的是 52 子系列片内 RAM 中高 128 单元的 通用寄存器只能用此方式寻 变址寻址
位寻址
PC+偏移量 @+PC,@+DPTR
程序存储器 程序存储器
片内RAM中的位寻址 区,可以位寻址的特 殊功能寄存器位
四、指令系统支持的辅助结果(1)
► 指令操作的辅助结果存放在程序状态字PSW(D0H)
之中,其一个字节的 8 位内容除 D1 位未用外,其 余各位的定义分别为: ► 1、进位标志C(D7): ► 加、减法运算有进、借位时C=1,否则C=0; ► 位处理时,作位累加器用,即存放第一操作 数与结果; ► 2、辅助进位标志AC(D6): ► 加、减法运算时低半字节的 D3 位有进、借位 时AC=1,否则AC=0; ► 3、软件标志 F0(D5): 由软件置位或复位, 归用户定义使用;
MCS-51单片机指令系统教程(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指令系统
❖ 目的操作数寻址方式(3种):
直接寻址、寄存器寻址、寄存器间接寻址
除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响
标志位。2022/2/15
16
3.3.1 十六位数的传递指令(1条)
MOV DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。
2022/2/15
2
常用符号 Rn:工作寄存器中的寄存器R0、R1…R7之一,
Ri:工作寄存器中的寄存器R0或R1
#data:8位立即数
#data16:16位立即数 direct:片内RAM或SFR的地址(8位)
@间接寻址寄存器
Bit:片内RAM或SFR的位地址 addr11:11位目的地址
addr16:16位目的地址
者内容相加,结果作为操作数的地址。
常用于查表操作。 ❖ MCS-51
操作数在程 序存储器中
MOVC A, @A+DPTR ;(A+DPTR) →A
MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A
2022/2/15
10
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
常用于跳转指令。 如: JC 23H 若C=0,不跳转; C=1,跳转.
2022/2/15
12
如:JC 23
程序存储区
1000H 40 1001H 23 1002H 30
当前PC …
…
1024H 47 1025H 45
指令代码
23H
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单片机指令系统与汇编语言程序设计
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位 可以位寻址)。
第3章MCS-51指令系统
第3章 MCS-51指令系统 4. 伪指令 在汇编语言源程序中,除了包含可以转化为特定计算机系 统的机器语言指令所对应的汇编语言指令外,还可能包含一些 伪指令,如“ORG 2000H”、“END”等。“伪”者,假也,尽 尽 管它不是计算机系统对应的指令,汇编时也不产生机器码,但 管它不是计算机系统对应的指令,汇编时也不产生机器码, 汇编语言程序中的伪指令并非可有可无。伪指令的作用是指导 汇编语言程序中的伪指令并非可有可无。 源程序的汇编过程, 源程序的汇编过程,例如“ORG 2000H”伪指令,指示汇编程序 将该伪指令后的汇编语言指令对应的机器码从2000H单元开始存 放。
第3章 MCS-51指令系统
· 52/54子系列内部RAM后128字节(即地址编码为80~FFH) 各单元之间不能直接传送。原因是高128字节内部RAM只能使 用寄存器间接寻址方式,而一条指令中,最多只允许一个操作 数使用寄存器间接寻址方式。 数据传送指令一般不会影响程序状态字寄存器PSW中的标 志位,但当数据传送到累加器A时,PSW中的奇偶标志位P会改 变,原因是奇偶标志位P总是体现累加器A中“1”的个数的奇偶 性。
第3章 MCS-51指令系统 1. 内部 内部RAM与特殊功能寄存器之间的数据传送 与特殊功能寄存器之间的数据传送 表3-1 内部RAM与特殊功能寄存器之间的数据传送指令
指令名称 指令格式 MOV A,Rn 以累加器A作为 目的操作数 MOV A,direct MOV A,@Ri MOV A,#data 机器码 11101rrr 11100101 direct 1110011i 01110100 data 功能 A←Rn A←(direct) A←(Ri) A←data 指令周期 1 1 1 1
MOV 90H,0F0H ; 将特殊功能寄存器0F0H单元(即寄存器B) 内容传送到特殊功能寄存器90H ; 单元(即P1口锁存器)中
MCS-51指令系统入门
含义 X的内容 以X的内容为地址的内容 加在位地址之前,表示对该位取反 立即数前缀 间址寄存器前缀 程序计数器PC的当前值 箭头右面的数据传送到箭头左面 逻辑与运算 逻辑或运算 逻辑异或运算 16位片外数据指针,范围为0000H~FFFFH
—6—
four
指令分类
指令格式 two
—4—
MCS-51系列单片机指令中常用助记符及含义
符号 A
累加器ACC
含义
B
寄存器B
Ri
寄存器间接寻址的寄存器(i=0或1)
Rn
当前工作寄存器R0~R7的一个
bit
具有位寻址功能的位地址
rel
用补码形式表示的偏移量,范围为 -128~ƐH~FFH
—3—
在MCS-51系统中采用变长指令,对于不同类型的指令,或
者相同指令的操作数类型不同,其长度是可变的,因此,MCS-51 指令为变长指令。大部分指令的长度为1~3个字节。
提示
对于双操作数指令来说,一般操作数1是目的操作数,操作数2是源操作数。 采用RISC的单片机,每条指令的长度相同,如ARM芯片全部指令都是32位的。
—9—
1)立即寻址
立即寻址是指在指令中直接给出参加运算的操作数的寻址方式。这种形式的操作数称为立即数。为了与 直接寻址指令中的直接地址相区别,立即数前面要加“#”标志。
【例3-1】 立即寻址方式如表所示:
编号
汇编语言指令
a
MOV A,#40H
b
MOV DPTR,#4000H
机器语言 7440H 904000H
机器语言 E560H E588H E588H
机器语言
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
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所指的片内存储单元
返回指令
第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地址段。
第3章MCS-51单片机指令系统
第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
第三章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结构单片机.
第三章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单片机指令系统
位操作类指令(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指令系统概述1. 引言MCS-51指令系统是一种被广泛使用的8位微控制器指令集架构。
它是Intel公司于1980年代开发的,旨在满足各种嵌入式系统的需求。
MCS-51指令系统提供了丰富的指令集,包括数据操作、控制流程和I/O操作等指令,可用于开发各种应用。
2. 指令格式MCS-51指令系统的指令由不同长度的操作码组成,通常包括一个或多个操作数。
以下是MCS-51指令系统的指令格式:[操作码] [操作数1] [操作数2]其中,操作码表示要执行的操作,操作数用于指定相关数据或地址。
3. 数据操作指令MCS-51指令系统提供了丰富的数据操作指令,方便对数据进行加载、存储和处理。
以下是一些常用的数据操作指令:•MOV:将一个操作数的值复制到另一个操作数。
•ADD:将两个操作数相加,并将结果存储在目标操作数中。
•SUB:将第二个操作数从第一个操作数中减去,并将结果存储在目标操作数中。
•INC:将操作数的值加1。
•DEC:将操作数的值减1。
4. 控制流程指令MCS-51指令系统提供了各种控制流程指令,用于实现条件和无条件的控制流程。
以下是一些常用的控制流程指令:•JMP:无条件跳转到指定的地址。
•JZ:如果零标志位被设置,那么跳转到指定的地址。
•JC:如果进位标志位被设置,那么跳转到指定的地址。
•CALL:调用一个子程序,并将返回地址存储在堆栈中。
5. I/O操作指令MCS-51指令系统提供了丰富的I/O操作指令,用于控制外设设备的输入和输出。
以下是一些常用的I/O操作指令:•MOV:将一个操作数的值复制到特殊功能存放器或外设设备存放器。
•IN:将外设设备的数据读取到存放器中。
•OUT:将存放器的值输出到外设设备。
6. 中断处理MCS-51指令系统支持中断处理,用于实现实时响应和异步事件的处理。
中断处理机制允许在程序的任意位置响应外部或内部的中断请求。
通过使用中断向量表和相关中断效劳程序,可以在发生中断时自动跳转到指定的中断处理程序。
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)。
图3-1 寄存器寻址示意图
第3章 MCS-51指令系统
说明: (1)寄存器寻址方式可以用在目的操作数中,也可以用
在源操作数中。
( 2 )寄存器寻址的主要对象是通用寄存器,共有 4 组通
用寄存器,但寄存器寻址只能使用当前寄存器组。因此指令
中的寄存器名称只能是R0~R7。 ( 3)寄存器寻址还包括部分专用寄存器 SFR,如累加器 A、寄存器B(但仅限于乘法指令)、地址寄存器DPTR。
29
第3章 MCS-51指令系统
存储单元 内容 地址编码 … PC PC+1 74 23 … 1 FFF 2 00 0 2 00 1 2 00 2
累加器A 23
图3-4 立即寻址示意图
30
第3章 MCS-51指令系统
说明:立即数长度必须小于或等于目的操作数的长度。 在上例中,如果累加器A字长为8位,则不能将16位二进制数
7
第3章 MCS-51指令系统
2)指令:指令分为两类——执行指令和伪指令。
• 执行指令是计算机指令系统给出的各种指令。已在前 一章介绍过,即由“操作码”和“操作数”组成。 • 伪指令是由汇编程序规定,仅在机器汇编时供汇编程 序识别和执行,用来对汇编过程进行控制和操作,并不 产生供机器直接执行的机器码,也不会直接影响存储器 中代码和数据的分布。
4
第3章 MCS-51指令系统
5
第3章 MCS-51指令系统
6
第3章 MCS-51指令系统
二、汇编语言的格式
标号: 指令 ;注释
1)标号:是用户设定的一个符号,表示存放指令或数 据的存储单元地址。 • 标号是由字母开始的1~8个字母或数字串组成。 • 标号后面必须紧跟冒号“ :”,作为标号的结束。 • 一个标号只能表示一个地址,不允许多个地址使用同一 个标号。
MOVC A, @A+PC
JMP @A+DPTR
33
第3章 MCS-51指令系统
3.2.6 位寻址
位寻址方式是单片机系统特有的一种寻址方式。位寻址指 令中可以直接使用位地址。例如: MOV C, 23H 23H ; 指令中的“C”是进位标志Cy的简称,
是位寻址空间内的位地址
MOV C, ACC.7 ;SFR中的位既可以使用位地址也可以使 用符号+位序号
操作数DPTR同样隐藏在了操作码中
16
第3章 MCS-51指令系统
2)8位地址和8位数据 例如:MOV 74H,#0FFH 指令码为:
3)16位地址 例如:LCALL 2020H 指令码为:
在程序设计中,应尽可能选用字节少的指令。这样,指令所占存 储单元少,执行速度也快。 17
第3章 MCS-51指令系统
第3章 MCS-51指令系统
DPTR —— 16位外部数据指针寄存器。 bit —— 内部RAM中的可直接寻址位。 A —— 累加器。 ACC —— 直接寻址方式的累加器。 B —— 寄存器B。 C —— 进、借位标志位,是布尔处理机的累加器,也称 之为位累加器。 @ —— 间接寄存器前缀标志。 / —— 加在位地址前面,表示对该位状态求反。 (x) —— x中的内容。 ((x)) —— x中的地址中的内容。 $—— 当前指令存放的地址 。
第3章 MCS-51指令系统
本章重点
• 寻址方式 • 数据传送类指令 • 算术运算类指令 • 逻辑运算类指令 • 位操作指令
• 控制转移类指令
课时安排:10个课时
1
第3章 MCS-51指令系统
第3章 MCS-51指令系统
3.1 指令系统简介 3.2 寻址方式 3.3 数据传送指令 3.4 算术运算指令 3.5 逻辑运算指令
18
第3章 MCS-51指令系统
3.2 寻址方式
3.2.1 寄存器寻址 3.2.2 直接寻址 3.2.3 寄存器间接寻址 3.2.4 立即寻址 3.2.5 变址寻址 3.2.6 位寻址 3.2.7 相对寻址 3.2.8 各种寻址方式小结 思考题
19
第3章 MCS-51指令系统
3.2.1 寄存器寻址
34
第3章 MCS-51指令系统
位寻址的寻址范围: ( 1 )内部 RAM 中的位寻址区( 20H ~ 2FH )。位寻址 区中的位有两种表示方法,一种是位地址;一种是单元地址 加位。 (2)专用寄存器SFR的可寻址位。
9
第3章 MCS-51指令系统
3 )注释:只是对程序的说明,注释信息和程 序一起存储、打印,但汇编时不被翻译,不会出现 在机器代码的目标程序中,也不影响程序的执行。
注释必须以分号“ ;”开始,注释信息占用
多行时,每行都必须以“ ;”开始。
10
第3章 MCS-51指令系统
三、指令中操作数的描述符号
23
第3章 MCS-51指令系统
24
第3章 MCS-51指令系统
25
第3章 MCS-51指令系统
重要
ACC与A的区别: ACC表示的是累加器的直接地址E0H (直接寻址) A表示的累加器这样一个寄存器的内容 (寄存器寻址)
26
第3章 MCS-51指令系统
3.2.3 寄存器间接寻址
寄存器间接寻址方式中,寄存器中存放的是操作数的地 址,即操作数是通过寄存器间接得到的。例如: MOV A, @R0
传送到累加器A中,即如下指令在汇编时将出错:
MOV A, #1234H ;由于累加器A长度只有8位, 无法装入16位二进制数1234H
但立即数长度可以小于目的操作数长度,例如: MOV DPTR, #02H MOV DPTR, #2H
31
第3章 MCS-51指令系统
3.2.5 变址寻址
变址寻址方式是为了访问ROM中的数据表格。以DPTR 或PC作基址寄存器,以累加器A作变址寄存器,然后以两者 内容相加形成的16位地址作为操作数地址,达到访问数据表 格的目的。例如:MOVC A, @A+DPTR
21
第3章 MCS-51指令系统
3.2.2 直接寻址
指令中操作数直接以单元地址的形式给出,就称之为直接 寻址。例如:MOV A, 23H
存储单元 内容 地址编码
55 … PC PC+1 PC+1 E5 23 00 …
0 02 3 1 FFF 2 00 0 2 00 1 2 00 2 55 累加器A
程序存储器 2040 93 ACC (47)E0 DPH DPL 20 00
. . .
20E0
. . .
47
ALU
图3-5 变址寻址示意图
32
第3章 MCS-51指令系统
说明: (1)变址寻址方式只能对 ROM进行寻址,或者说它是 专门针对ROM的寻址方式,寻址范围可达64KB。
(2)变址寻址指令只有3条: MOVC A, @A+DPTR
图3-2 直接寻址示意图 22
第3章 MCS-51指令系统
说明:直接寻址方式只能使用 8 位二进制数表示的地址, 因此这种寻址方式的寻址范围只限于内部RAM区。即:
( 1 )低 128 字节。在指令中直接以单元地址的形式给出。
(2)专用寄存器区。可以以单元地址的形式给出,也可 以以寄存器符号形式给出(对 SFR 来说,地址一定、符号一 定,寄存器符号等同于寄存器直接地址,这时程序编译是就 确定下来的)。
程序存储器
片内RAM区
片内RAM区
2030
E6
(R0) 00
50
50
4A
ACC
4A
27
图3-3 寄存器间接寻址示意图
第3章 MCS-51指令系统
寄存器间接寻址方式的寻址范围是: ( 1 )内部 RAM 的低 128 字节。此时只能使用 R0 或 R1 作 间址寄存器,其通用形式为@Ri。 (2)外部RAM的64KB范围。此时一般使用DPTR作间址 寄存器,其形式为@DPTR。 如: MOVX A, @DPTR (3)外部RAM的低256字节。此时使用R0或R1作间址寄 存器。 如: MOVX A, @R0。(有什么问题?) ( 4 )堆栈操作指令( PUSH 和 POP )也应算作是寄存器 间接寻址,即以SP作间址寄存器的间接寻址方式。
Rn —— 当前寄存器组的8个通用寄存器R0 ~ R7。 Ri —— 可用作间接寻址的寄存器,只能是R0、R1。 Direct —— 8位直接地址,在指令中表示直接寻址方式,寻 址包括片内低128B RAM单元地址、以及高128B RAM区中的26个SFR地址。 #data —— 8位立即数。 #data 16 —— 16位立即数。 addr 16—— 16位目的地址,只限于在LCALL和LJMP指令中 使用。 addr 11 —— 11位目的地址,只限于在ACALL和AJMP指令中 使用。 11 rel —— 8位带符号补码数,作为转移指令中的偏移量。
这条8位数传送指令的含义是把指令码第2字节立即数 23H取出来存放到累加器(A)中。该指令的操作码 占1B;23H为源操作数,也是1B;累加器(A)是目 的操作数寄存器,隐含在操作码字段中。
15
第3章 MCS-51指令系统
3.三字节指令(17条)
这条指令的指令码的第1字节为操作码;第2和第3字 节为操作数或操作数地址,有如下3类。 1)16位数据 例如:MOV DPTR,#26ABH 指令码为:
13
第3章 MCS-51指令系统
2)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作 数所 在寄存器号的字段组成。 例如;MOV A,Rn 指令码为:
其中,rrr为寄存器Rn的编号
14
第3章 MCS-51指令系统
2.双字节指令(45条)
双字节指令的操作码字节在前;在后面的操作数字节 可以是立即数,也可以是操作数所在的片内RAM地址。 例如:MOV A,#23H 指令码为: