第二章MCS51单片机指令系统.docx
- 文档编号:5129922
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:21
- 大小:32.43KB
第二章MCS51单片机指令系统.docx
《第二章MCS51单片机指令系统.docx》由会员分享,可在线阅读,更多相关《第二章MCS51单片机指令系统.docx(21页珍藏版)》请在冰豆网上搜索。
第二章MCS51单片机指令系统
第二章MCS-51单片机指令系统2
第一节概述2
一、指令格式2
二、指令的三种表示形式2
三、指令的字节数3
四、指令按功能分类3
五、指令系统综述3
第二节寻址方式4
第二章MCS-51单片机指令系统
总学时8学时
教学目的:
1、了解指令字节数、指令分类和指令中所用的符号含义。
2、掌握判别指令的寻址方式。
3、掌握各类指令的格式、功能、含义和特点。
教学重点:
1、指令的寻址方式。
2、指令的格式、含义、特点和功能。
3、使用指令的限制条件。
教学难点:
1、指令寻址方式的意义。
2、相对寻址的意义及偏移量的计算。
3、堆栈操作时SP和堆栈变化规律。
教学方法:
讲授法
教学过程:
MCS-51单片机指令系统
第一节概述
一、指令格式
1、指令:
计算机用于控制各种功能部件,完成某一指定动作的指示和命令。
2、指令格式:
是指指令码的结构形式。
指机器码的结构形式。
通常指令可分为操作码和操
作数两部分,操作码部分比较简单,操作数部分比较复杂。
因为MCS-51采用了地址
压缩技术,大部分指令采用单地址指令格式:
操作码操作数或操作数地址。
这种格式
的指令码中除操作数外通常还给出了一个操作数或操作数地址,称为单地址指令格式。
3、程序:
完成不同功能的指令的有序集合。
识别指令的标志就是指令的表示形式。
有二进制、十六进制和助记符三种形式。
1、指令的二进制形式:
指令的二进制形式是一种可以直接被计算机识别和执行的形式。
故
又称为指令的机器码或汇编语言的源程序的目标代码。
2、指令的十六进制形式:
用十六进制数代替二进制中的二进制数,形成的指令格式称为十
六进制形式。
主要用于阅读和通过键盘输入指令码。
3、指令的助记符形式:
又称指令的汇编语言形式。
由英文单词或英文单词缩写字母形象表
征指令的功能的形式。
用于编写汇编语言源程序。
计算机只能识别和执行二进制形式,十六进制和汇编语言形式都必须通过人工和机器翻译成
机器码形式,才能被计算机执行。
这一过程称为汇编。
MCS-51单片机中常用的就是汇编语言形式(助记符形式)。
其格式为:
标号:
操作码第二操作数及操作数结果,第一操作数;指令功能解释语句
前面已经介绍过,第二操作数和操作数结果是放在累加器A中的,故,其格式简化为:
标号:
操作码A,第一操作数;指令功能解释语句
其中,除“操作码”外,其余项目均可省略。
三、指令的字节数
根据一条指令的操作码和操作数的二进制码之和的位数,可以把指令分成单字节指令,双字
节指令和三字节指令。
CPU在执行单字节指令时,PC加1,执行双字节指令时,PC加1两
次,执行三字节指令是,PC加1三次。
通常指令字节数越少,所占用的存储单元越少,指
令执行的速度越快。
在程序设计时应尽可能选用指令字节数少的指令。
1、单字节指令:
指令中只有一个字节,由8位二进制数组成。
共有49条。
可分为两类:
一
类是无操作数的单字节指令;一类是含有操作数寄存器编号的单字节指令。
1)无操作数的单字节指令:
这类指令的指令码中只有操作码字段没有操作数字段,或
操作数字段隐含在操作码字段中。
如NOP(没有操作数);INCDPTR(操作数隐
含在操作码中);像MULAB;DIVAB等均属于此类指令。
其中的DPTR,A,B等寄存器中都放有操作数,而隐含在操作码中。
注:
只要是专用寄存器作为操作数地址的,这个专用寄存器均隐含在操作码中。
2)含有操作数寄存器编号的单字节指令:
这类指令的指令码由操作码字段和专门用来
指示操作数所在寄存器号的字段组成。
这个寄存器号一定是寄存器的编号,而不是符号
(符号地址)。
能对寄存器编号的有工作寄存器Rno例如:
mova,Rn;其中的n取值范
围为0〜7,相应的指令格式为:
11101rrr。
前5位二进制数是操作码且隐含了累加器A,
后面的rrr为操作数所在的寄存器编号,编号范围为000〜111共8种。
2、双字节指令
双字节指令码中,一个字节为操作码字段,放在前,另一个字段为操作数字段,放在后
面。
它可以是立即数,也可以是片内RAM地址,共有45条。
3、三字节指令
三字节指令的指令码中,第一字节为操作码,第二和第三字节均为操作数或操作数地
址。
由于有2个字节的操作数或操作数地址。
三字节指令共有17条4类:
2)movDPTR,#data16
3)movdirect,#data
4)CJNEA,#data,rel
5)LCALLaddr16
四、指令按功能分类
MCS-51指令系统共有111条指令,操作码字节采用42种助记符,可以进行51中基本运
算。
按功能可分成5类:
数据传输指令(29条);算术运算指令(24条);逻辑运算指令(24
条);控制转移指令(17条);位操作指令(17条)。
五、指令系统综述
1、指令系统:
某种单片机指令的集合或全体。
2、指令系统操作数字段使用的符号:
MCS-51指令系统中,除采用了42种助记符表示操作码的功能外,还在操作数字段使用了
一些符号:
1)Rn:
工作寄存器。
可以是R0〜R7中的任意一个。
2)#data:
立即数(8位二进制数)。
即指令码中直接给出的8位二进制数,因此不占用内
存单元。
#是立即数的标志。
3)Direct:
直接地址(8位二进制数)。
是指片内RAM中的128B中的任何一个存储单元的地址以及SFR中的一个(可以使用符号地址,也可以使用物理地址)。
4)@Ri:
表示寄存器间址,即寄存器里的内容作为操作数的地址。
其中Ri表示当前选中的
工作寄存器,且只能是Ro或Rio@是寄存器间址的标志。
5)#data16:
16位立即数。
6)@DPTR:
表示以DPTR为数据指针的间址。
用于访问片外的RAM/ROM。
7)Bit:
位地址。
可以是片内RAM位地址,SFR的位地址。
8)Addr11:
11位目标地址。
9)Addr16:
16位目标地址。
10)rel:
补码形式表不'的8位地址偏移量。
11)$:
当前指令地址。
12)/:
位操作数的取反操作前缀。
13)():
表示内容,表示以“”为地址的存储单元或寄存器中的内容(与direct比较,
direct表示地址)。
14)(()):
(总的)表示内容。
表示以“”为地址的存储单元或寄存器中的内容作为地
址的存储单元或寄存器中的内容。
15)十:
表示将箭头右边的内容送入箭头左边的单元中。
第二节寻址方式
寻址方式:
寻找操作数的方法称为寻址方式。
计算机执行指令的过程实际上就是不断寻找操作数和对操作数的过程。
在MCS-51系统中,操作数存放的范围是很宽的,可以在片外ROM/RAM中,也可以在
片内ROM/RAM中,还可以在片内SFR中,这些地址的表示也是很丰富和灵活的,
A,B,DPTR,PC等direct,Rn,Ri等C,bit等。
寻址包括两方面内容:
一是操作数的寻址,二是指令地址的寻址,(如转移指令,调用指令),其寻址的方式共有7种,寄存器寻址,直接寻址,立即数寻址,寄存器间址,变址寻址,相对寻址和位寻址。
对于两个操作数指令,若不特别声明,寻址方式均是指源操作数的寻址方式。
寻址方式所对应的寄存器和存储器空间见P40表3.1.
一、寄存器寻址
操作数存放在寄存器中,指令中直接给出该寄存器的名称(指寄存器的编号),这种寻址方
式为寄存器寻址。
如,movA,Rn;把Rn中的内容传到A中。
采用寄存器寻址的有:
1、工作寄存器组Rn;2、累加器A(用其编号,而不用其符号地址ACC或物理地址E0H)3、通用寄存器B;4、数据指针DPTR;5、C(布尔加法器)。
在形成的操作码中隐含有指示的寄存器的编号,二、直接寻址
是指在指令中直接给出操作数所在存储单元的地址号,该地址指示了参与操作的数据所在的
字节地址或位地址。
这种寻址方式主要用于对特殊功能寄存器和内部RAM(低128B)的访
问。
如:
MOVA,30H。
在直接寻址方式中,可以直接用符号地址代替。
、立即寻址
是指在指令中直接给出参与操作的数据(立即数)的寻址方式,立即数前加“#"。
这种寻
址方式主要用于对特殊功能寄存器和对指定存储单元赋予初始值。
如:
MOVA,#30H。
四、寄存器间接寻址
是指以指令中指定存储器(R0,R1,DPTR)的内容作为操作数的地址,再以该地址对应单元中的内容作为操作数,为了区别于寄存器寻址,因此在寄存器间接寻址中的寄存器名称前加地址符号“@”。
如:
MOVA,@R1。
五、变址寻址
是指将基址寄存器(DPTR和PC)与变址寄存器(A)的内容相加,形成一个16位结果,作为操作数的地址,实现对程序存储器的访问。
如:
MOVCA,@A+DPTR。
六、相对寻找
是指以程序计数器PC的当前值与指令中给定的8位偏移量相加,其结果作为跳转指令的目的地址,如:
SJMPREL。
七、位寻址
是指按二进制位(bit)进行的寻址,可寻址位包括片内RAM的20H〜2FH共16个字节128位和部分特殊功能寄存器的相关位,如:
MOV00H,C。
寄存器寻址:
A,B或Rn
直接寻址:
片内低128B和SFR(符号地址)
RAM
位寻址:
片内20H〜2FH,SFR
I寄存器间址:
DPTR:
@Ri:
低128B和片外RAM低
「片外RAM64K
128B
、片外ROM64K
@A+PC
变址寻址:
Y
@A+DPTR
相对寻址:
PC+2+rel
第三节8051指令系统
指令系统是计算机所固有的,是表征计算机性能特性的重要指标;同时它也是汇编语言程序设计的基础。
学习指令系统时,应注意:
1、指令的格式、功能。
2、操作码的含义,操作数的表示方法。
3、寻址方式,源、目的操作数的范围。
4、对标志位的影响。
5、指令的适用范围。
6、正确估算指令的字节数。
一、数据传送类指令
数据传送类指令共29条,是把源操作数传送到指定目的操作数。
指令执行后,源操作
数的内容不变,而目的操作数的内容被修改;数据传送类指令对程序状态字PSW的Cy、
Ac、OV位不产生影响。
数据传送类指令寻址范围:
累加器A、片内RAM、SFR、片外RAM
数据传送类指令功能:
(目的地址)一(源地址)。
1、片内数据传送指令(16条)
数据传送指令是在80C51内部RAM和特殊功能寄存器SFR间的传送,指令助记符为
“MOV”,源操作数的寻址方式可以是立即寻址、直接寻址、寄存器寻址和寄存器间接寻址。
1)8位数据传送指令(15条)
MOV
A,#data
;A—data
MOV
A,direct
;A—(direct)
MOV
A,Rn
;A—(Rn)
MOV
A,@Ri
;A~((R))
MOV
direct,#data
;direct—data
MOV
direct1,direct2
;directi—(direct2)
MOV
direct,A
;direct—(A)
MOV
direct,@Ri
;direct—((Ri))
MOV
direct,Rn
;direct.(Rn)
MOV
Rn,A
;Rn—(A)
MOV
Rn,direct
;Rn—(direct)
MOV
Rn,#data
;Rn—data
MOV
@Ri,A
;(Ri)-(A)
MOV
@Ri,direct
;(Ri)—(direct)
MOV
@Ri,#data
;(Ri)-data
注:
1、在片内能存放操作数的空间只能是#,A,direct,Rn和@R;
2、立即数不能作为目的操作数;
3、在一条指令中Rn和@Ri不能同时出现。
2)16位数据传送指令(1条)
当需要对片外的RAM单元或I/O端口进行访问时,或进行查表操作
时,必须将16位地址赋给地址指针DPTR,这就必须使用16位数据传送
指令,这也是80C51指令系统中唯一的一条16位数据传送指令。
指令格式为:
MOVDPTR,#data16;属于立即寻址方式。
2、片外数据传送指令(4条)
当80C51CPU与外部数据存储器或I/O端口之间进行数据传送时,只
能通过累加器Acc进行。
其指令助记符为:
(External),指令的表现形式如下:
MOVX,其中的X表示外部
MOVXA,@DPTR
;A—((DPTR))
;(DPTR)—(A)
;A~((R))
;(R)~(A)
MOVX@DPTR,A
MOVXA,@Ri
MOVX@Ri,A
注意:
(1)使用Ri时,只能访问低8位地址为00H〜FFH的地址段;
(2)使用DPTR时,能访问0000H〜FFFFH的地址段。
3、查表指令(2条)
查表指令也称为ROM数据传送指令,功能是实现从程序存储器ROM中
读取数据。
其指令助记符为:
MOVC,其中的C表示代码(Code),指
令的表现形式如下:
MOVCA,@A+PC;A-((A)+(PC))
MOVCA,@A+DPTR;A-((A)+(DPTR))
4、堆栈指令(2条)
在80C51系统之中,设计了一个先进后出(FILO)或后进先出
(LIFO)区域,用于临时保护数据及子程序调用、中断调用时保护现场
和恢复现场,该区域称为堆栈,在SFR中有一个堆栈指针SP,用以指出
栈顶位置。
堆栈操作指令的实质是以栈指针SP为间址寄存器的间址寻址方式。
堆栈区应避开使用的工作寄存器区和其他需要使用的数据区,系
统复位后,SP的初始值为07H。
为了避免重叠,一般初始化时要重新设
置SP。
指令的表现形式如下:
PUSHdirect/Acc;SP—(SP)+1,((SP))—(direct/Acc)
POPdirect/Acc;(direct/Acc)—((SP)),SP—(SP)-1
5、交换指令(5条)
若进行数据传送时,要求保存目的操作数,则可采用数据交换
指令。
指令的表现形式如下:
;(A)—(Rn)
;(A)<-->(direct)
;(A)—((Ri))
(A)3〜0<-->((Ri))3〜0
;(A)3-->(A)7〜4
1)整字节交换指令:
XCHA,Rn
XCHA,direct
XCHA,@Ri
2)半字节交换指令:
XCHDA,@Ri
3)累加器A高低半字节的交换指令:
SWAPA
24条)
算术运算指令有加法、减法、乘法和除法四类。
对于加、减运算的两个操作数,一个存放在
累加器A中(此操作数也为目的操作数);另一个存放在R0〜R7或@Ri(片内RAM)中,
或是#data(立即数)。
除加1和减1指令外,其他所有的指令都将影响程序状态字PSW的
标志位。
指令的表现形式如下:
;(A)~(A)+(Rn)
1、不带进位的加法指令(4条)
ADDA,Rn
ADDA,direct;(A)-(A)+(direct)
ADDA,@Ri;(A)-(A)+((Ri))
ADDA,#data;(A)—(A)+data
加法运算影响PSW的标志位。
如果D3位有进位,则辅助进位标志AC置位;否则
AC为0(不管AC原来是什么值)。
如果D7位有进位,则进位标志CY置位;否则CY为0
(不管CY原来是什么值)。
如果D6位和D7位中一个有进位而另一个无进位,则OV=1,
溢出。
2、带进位的加法指令(4条)
;A-(A)+(Rn)+(CY)
;A-(A)+(direct)+(CY)
;A-(A)+((Ri))+(CY)
;A—(A)+data+(CY)
ADDCA,Rn
ADDCA,direct
ADDCA,@RiADDCA,#data
该类指令主要用于多字节的加法运算。
3、加1指令(5条)
加1指令又称为增量指令,其功能是使操作数所指定的单元的内容加1。
INC
A
;A
—(A)+1
INC
Rn
;Rn
—(Rn)+1
INC
direct
;direct
一(direct)+1
INC
@Ri
;(Ri)
一((Ri))+1
INC
DPTR
;DPTR
一(DPTR)+1
注意:
以上指令仅影响PSW中的奇偶标志位。
4、减1指令(4条)
减1指令又称为减量指令,其功能是使操作数所指定的单元的内容减1。
DEC
A
;A~(A)-1
DEC
Rn
;Rn—(Rn)-1
DEC
direct
;direct—(direct)-1
DEC
@Ri
;(Ri)一((Ri))-1
注意:
以上指令仅影响PSW中的奇偶标志位。
5、减法指令(4条)
减法运算只有带借位的减法指令,而没有不带借位的减法指令。
指令的功能是从累
加器中减去不同寻址方式的减数以及进位位CY的状态。
其差仍存放在累加器A中。
如果
需要实现不带借位的减法计算,应预先置CY=0(利用CLRC指令),然后用减法指令SUBB
实现计算。
SUBB对PSW中的所有标志位均产生影响。
SUBBA,
Rn
;A-(A)-(Rn)-(CY)
SUBB
A,direct
;A-(A)-(direct)-(CY)
SUBB
A,@Ri
;A-(A)-((Ri))-(CY)
SUBB
A,#data
;A—(A)-data-(CY)
6、无符号数乘法指令(1条)
无符号数乘法指令完成A与B中两个8位无符号数相乘,16位乘积的低位字节放在
累加器A,高位字节放在B中。
指令格式为:
MULAB;(B)(A)~(A)X(B)
无符号数乘法指令对PSW标志位的影响:
Cy位总是被清0的,P是由累加器A中
1的个数的奇偶性决定的。
乘法运算中,若乘积大于FFH,则OV标志位置1,否则清0。
除法运算中,若除数为0,则OV标志位置1,否则清0。
7、无符号数除法指令(1条)
无符号数除法指令完成A与B中两个8位无符号数相除,商放入累加器A,余数放入
寄存器B中。
指令格式为:
DIVAB;(A)-(A)/(B)…(B)
无符号数乘法指令对PSW标志位的影响:
Cy位总是被清0的,P是由累加器A中1
的个数的奇偶性决定的,若除数为0,则OV标志位置1,否则清0。
三、逻辑操作类指令(24条
逻辑操作类指令用于对2个操作数按位进行逻辑操作,结果送到A或直接寻址单元。
常用的逻辑运算和移位类指令有:
逻辑与、逻辑或逻辑异或、清0、求反(非、循环移位
等24条指令,它们的操作数都是8位的。
逻辑运算都是按位进行的,除用于逻辑运算外,
还可用于模拟各种数字逻辑电路的功能,进行逻辑电路的设计。
1、逻辑与指令(6条
0A0=0,0A1=0,1A0=0,1A=1o常
逻辑与指令的运算符号'A'。
运算规则是:
用于屏蔽字节中的某些位,或者使指定位为
0”。
指令的表现形式如下:
ANL
Rn
;A—(A)A(Rn)
ANL
direct
ANL
ANL
@Ri
#data
;A-
(A)A(direct)
一(A)A((Ri))
ANL
ANL
2、逻辑或指令(6条
逻辑或指令的运算符号
direct,A
direct,#data
’。
运算规则是:
A—(A)Adatadirect—(direct)A(A)
direct—(direct)Adata
0V0=0,0V1=1,1V0=1,1V=1。
常用
于置位字节中的某些指定位,或者使指定位为
指令的表现形式如下:
3、逻辑异或指令(6条
逻辑异或指令的运算符号
常用于使字节中的某些指定位取反,
形式如下:
4、累加器A清0和取反指令(
指令格式:
XRL
A,
Rn
;A—(A)®(Rn)
XRL
A,
direct
;A—(A)®(direct)
XRL
A,
@Ri
;A-(A)㊉((Ri))
XRL
A,
#data
;A—(A)®data
XRL
direct
,A
;direct—(direct)®(A)
XRL
direct
,#data
;direct—(direct)®data
2条
;
CLRA
CPL
(A)-00H
A;(A)
/A)
ORL
ORL
A,
A,
Rndirect
;
;A-
A-
(A)
(A)V(Rn)direct)
ORL
A,
@Ri
;
A-
(A)V((Ri))
ORL
A,
#data
;
A-
(A)Vdata
ORL
direct,A
;direct
一(direct)V(A)
ORL
direct,#data
;
direct—(direct)Vdata
1”。
'。
运算规则是:
0^0=0,1®1=0,0®1=1,1®0=1O
或者用于判断两个字节中的数据是否相等。
指令的表现
特点:
可以节省存储空间,提高程序执行效率。
提高程序执行效率。
5、循环移位指令(4条)
80C51的循环移位指令只能对累加器A进行循环移位。
可分为:
不带进位的循环左、
右移位(RL、RR)和带进位的循环左、右移位(RLC、RRC)两类。
不带进位的循环左、右移位指令。
循环左移RLA;Ai+1-Ai,A0-A7
循环右移RRA;Ai-Ai+1,A7-A0
带进位的循环左、右移位指令。
循环左移RLCA;Ai+1-Ai,Cy—A7,A0—Cy
循环右移RRCA;Ai-Ai+1,Cy-A0,A7~Cy
四、控制转移类指令(17条)
为了控制程序的执行方向,80
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 MCS51 单片机 指令系统
![提示](https://static.bdocx.com/images/bang_tan.gif)