单片机原理与应用CH3_第1页
单片机原理与应用CH3_第2页
单片机原理与应用CH3_第3页
单片机原理与应用CH3_第4页
单片机原理与应用CH3_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCS-51单片机的指令系统第三章§3.1MCS-51单片机指令系统概述★

什么是指令?ⅰ

指令是供用户使用的单片机的软件资源。ⅱ

指令是程序员与单片机沟通的语言。★

指令的分类:ⅰ

按照指令占用的存储器字节数:单字节指令双字节指令三字节指令ⅱ

按照指令执行所需时间:单周期指令双周期指令四周期指令ⅲ

按照指令的功能:数据传送指令(28条)算术运算指令(24条)逻辑操作与循环移位指令(25条)控制转移指令(17条)位操作指令(17条)§3.1MCS-51单片机指令系统概述★

指令的表示形式:二进制形式十六进制形式助记符形式[例]MOVA,R0------助记符形式

E8H------十六进制形式

11101000B------二进制形式★

指令格式:[标号:]指令助记符[操作数1][,操作数2][,操作数3][;注释]★

什么是指令系统?一种型号的CPU所能执行的指令的集合,叫做它的指令系统。§3.2MCS-51单片机的寻址方式◆

什么是寻址方式?所谓寻址方式,就是CPU寻找操作数的方法。◆

重要的符号约定:RnRidirect#data#data16addr11addr16bitrelDPTRABC@/(×)((×))←§3.2MCS-51单片机的寻址方式1、立即寻址特征:指令码中含有操作数本身,以“#”为标志。操作过程:指令译码的同时获得操作数。[例]MOVA,#30H

指令码:74H,30H1取指从ROM中取出指令码(PC加1)2译码对指令码进行翻译、解释3执行执行指令规定的相应功能最简单的寻址方式§3.2MCS-51单片机的寻址方式2、直接寻址特征:①指令码中含有操作数的存储地址;②操作数存储在此地址指向的存储单元中;操作过程:1根据译码得到的地址找到对应的存储单元2取出该存储单元中的数据,即为操作数[例]MOVA,30H

指令码:E5H,30H问题:那些存储单元可以使用直接寻址?答:内部RAM&特殊功能寄存器§3.2MCS-51单片机的寻址方式2、直接寻址[例1]MOVA,30H

指令码:E5H,30H[例2]MOVA,90HMOVA,P1

指令码:E5H,30H内部RAM直接寻址举例:特殊功能寄存器直接寻址举例:对于特殊功能寄存器,除使用直接物理地址表示其对应存储单元外,还可使用特定名称代替物理地址表示其对应的存储单元。§3.2MCS-51单片机的寻址方式3、寄存器寻址特征:①操作数存放在寄存器中;②指令码中没有寄存器的物理地址,而是其特定编号;操作过程:1根据寄存器特定编号找到对应的存储单元2取出该存储单元中的数据,即为操作数[例1]MOVA,R0

指令码:E8H说明:采用寄存器寻址方式的寄存器有R0~R7、A、B、DPTR§3.2MCS-51单片机的寻址方式4、寄存器间接寻址特征:①操作数的地址存放在寄存器中;②指令码中没有寄存器的物理地址,而是其特定编号;操作过程:1根据寄存器特定编号找到寄存器对应存储单元2取出该存储单元中的数据,作为操作数的地址3根据该地址找到其对应存储单元,取出操作数[例1]MOVA,@R1

指令码:E7H§3.2MCS-51单片机的寻址方式4、寄存器间接寻址关于寄存器间接寻址的说明①存放操作数实际存储单元的寄存器称为间址寄存器,以“@”为标志,可作为间址寄存器的有R0,R1,DPTR;②寄存器间址可拓宽单片机的寻址范围:@R0和@R1覆盖内部RAM的00H~7FH,@DPTR覆盖外部RAM/ROM的全部64kB空间;③内部RAM的80H~FFH,即特殊功能寄存器区,不能使用寄存器间址,而只能使用直接寻址。§3.2MCS-51单片机的寻址方式5、变址寻址特征:①基地址寄存器PC或DPTR隐含在指令码中;②累加器A也隐含在指令码中,其中预先存有地址偏移量(无符号二进制数,范围00H~FFH);问题:什么是基地址、地址偏移量?数轴原点单位长度正方向基地址1Byte地址增大的方向那么,地址偏移量就是沿着地址增大的方向,距离基地址的字节数。§3.2MCS-51单片机的寻址方式5、变址寻址操作过程:1

从PC或DPTR中取出基地址;从ACC中取出地址偏移量。2基地址加地址偏移量,得到操作数的存储地址。3根据该地址找到对应的存储单元,取出操作数。[例]MOVDPTR,#3000HMOVA,#02HMOVCA,@A+DPTR说明:变址寻址方式所寻找的操作数位于程序只读存储器ROM。§3.2MCS-51单片机的寻址方式6、相对寻址特征:仅在相对转移类指令中使用(指令格式中包含相对地址偏移量rel)。操作过程:1

指令译码,得到地址偏移量rel。2PC当前值与地址偏移量rel相加,和回送PC。3根据新PC值,从ROM中取出指令,继续执行。什么是“PC当前值”?相对地址偏移量rel与变址寻址中的地址偏移量相同吗?§3.2MCS-51单片机的寻址方式6、相对寻址两个重要概念◎

PC当前值所谓PC当前值,是指指令取指完成以后的PC值,也就是紧靠当前正在执行的指令存储的、向着地址增大方向的、下一条指令的地址。◎

相对地址偏移量rel相对地址偏移量rel,与变址寻址方式中的地址偏移量不同,是一个单字节有符号二进制数,取值范围是-128~+127;且包含在指令码中。§3.2MCS-51单片机的寻址方式6、相对寻址[例]2000H:SJMP54H

指令码:80H,54H§3.2MCS-51单片机的寻址方式7、位寻址特征:指令中包含有位地址,仅在位操作指令中使用。操作过程:1指令译码得到位地址,并找到对应的位存储单元。2取出该位的状态(0/1),即为操作数。两点说明:①可位寻址区域包括内部RAM的20H~2FH和特殊功能寄存器区的个别字节;②位地址的三种表示方法:*直接使用物理位地址:E7H*物理地址

+第几位:E0H.7*SFR寄存器名

+第几位:ACC.7§3.3MCS-51单片机的指令系统一、数据传送指令

MCS-51单片机是一种精简指令集计算机(RISC,ReducedInstructionSetComputer),其指令系统包括五大类、共111条指令,分别是数据传送指令28条、算术运算指令24条、逻辑运算与循环移位指令25条、控制转移指令17条和位操作指令条17条。1一般传送指令(1)16位传送指令MOVDPTR,#data16;DPTR←data16说明:16位传送指令仅此一条,实际上是两次8位传送捆绑执行。§3.3MCS-51单片机的指令系统一、数据传送指令1一般传送指令(2)8位传送指令①源字节与目的字节不能相同;②立即数只能作源操作数,不能作目的操作数;③工作寄存器之间、寄存器间址之间、工作寄存器与寄存器间址之间不能相互传送;§3.3MCS-51单片机的指令系统一、数据传送指令1一般传送指令(2)8位传送指令——以累加器ACC为目的字节MOVA,Rn;A←(Rn)

MOVA,#data;A←data

MOVA,@Ri;A←((Ri))

MOVA,direct;A←(direct)(3)8位传送指令——以Rn为目的字节MOVRn,A;Rn←(A)

MOVRn,#data;Rn←data

MOVRn,direct;Rn←(direct)§3.3MCS-51单片机的指令系统一、数据传送指令1一般传送指令(2)8位传送指令——以direct为目的字节MOVdirect,Rn;A←(Rn)

MOVdirect,#data;A←data

MOVdirect,@Ri;A←((Ri))

MOVdirect,direct1;A←(direct)(3)8位传送指令——以@Ri为目的字节MOV@Ri,A;(Ri)←(A)

MOV@Ri,#data;(Ri)←data

MOV@Ri,direct;(Ri)←(direct)§3.3MCS-51单片机的指令系统一、数据传送指令2特殊传送指令(1)读ROM指令MOVCA,@A+DPTR;A←((A)+(DPTR))

MOVCA,@A+PC;A←((A)+(PC))(2)读/写RAM指令MOVXA,@DPTR;A←((DPTR))

MOVXA,@Ri;A←(P2(Ri))说明:没有写ROM指令。MOVX@DPTR,A;(DPTR)←(A)

MOVX@Ri,A;P2(Ri)←(A)读写说明:@Ri只能提供低8位地址,高8位地址由P2口输出。§3.3MCS-51单片机的指令系统一、数据传送指令3堆栈操作指令PUSHdirect;SP←(SP)+1,(SP)←(direct)POPdirect;(direct)←(SP),SP←(SP)-1入栈出栈4数据交换指令XCHA,Rn;(A)←→(Rn)

XCHA,direct

;(A)←→(direct)

XCHA,@Ri

;(A)←→((Ri))字节交换XCHDA,@Ri

;(A)3~0←→((Ri))3~0

SWAPA;(A)3~0←→(A)4~7半字交换§3.3MCS-51单片机的指令系统二、算术运算指令1加法指令ADDA,Rn;A←(A)+(Rn)

ADDA,direct;A←(A)+(direct)

ADDA,@Ri;A←(A)+((Ri))

ADDA,#data;A←(A)+data(1)不带进位的加法指令ADDCA,Rn;A←(A)+(Rn)+Cy

ADDCA,direct;A←(A)+(direct)+Cy

ADDCA,@Ri;A←(A)+((Ri))+Cy

ADDCA,#data;A←(A)+data+Cy(2)带进位的加法指令§3.3MCS-51单片机的指令系统二、算术运算指令1加法指令(3)自加1指令INCA;A←(A)+1

INCRn;Rn←(Rn)+1

INCdirect;direct←(direct)+1

INC@Ri;(Ri)←((Ri))+1

INCDPTR;DPTR←(DPTR)+1(4)十进制调整指令DAA§3.3MCS-51单片机的指令系统二、算术运算指令2减法指令(1)带进位的减法指令SUBBA,Rn;A←(A)-(Rn)-Cy

SUBB

A,direct;A←(A)-(direct)-Cy

SUBBA,@Ri;A←(A)-((Ri))-Cy

SUBBA,#data;A←(A)-data-Cy(2)自减1指令DECA;A←(A)-1

DECRn;Rn←(Rn)-1

DECdirect;direct←(direct)-1

DEC@Ri;(Ri)←((Ri))-1§3.3MCS-51单片机的指令系统二、算术运算指令3乘法指令MULAB;BA←(A)×(B)说明:积的高8位在通用寄存器B中,低8位在累加器A中。4除法指令DIVAB;(A)÷(B)=A…B说明:商在通用寄存器A中,余数在累加器B中。特别提示:乘法指令和除法指令中,操作数A、B之间不用逗号隔开!且仅此两条指令例外!§3.3MCS-51单片机的指令系统三、逻辑运算指令1逻辑“与”ANLdirect,A;direct←(direct)∧(A)

ANLdirect,#data;direct←(direct)∧dataANLA,Rn;A←(A)∧(Rn)

ANL

A,direct;A←(A)∧(direct)

ANLA,@Ri;A←(A)∧((Ri))

ANLA,#data;A←(A)∧data①逻辑“与”指令共6条,其中以direct为目的操作数的2条,以累加器A为目的操作数的4条。说明:②后续的逻辑“或”指令、逻辑“异或”指令仅助记符不同,操作数完全相同。仍是字节指令!§3.3MCS-51单片机的指令系统三、逻辑运算指令2逻辑“或”ORLdirect,A;direct←(direct)∨(A)

ORLdirect,#data;direct←(direct)∨dataORLA,Rn;A←(A)∨(Rn)

ORL

A,direct;A←(A)∨(direct)

ORLA,@Ri;A←(A)∨((Ri))

ORLA,#data;A←(A)∨data§3.3MCS-51单片机的指令系统三、逻辑运算指令3逻辑“异或”XRLdirect,A;direct←(direct)⊕(A)

XRLdirect,#data;direct←(direct)⊕dataXRLA,Rn;A←(A)⊕(Rn)

XRL

A,direct;A←(A)⊕(direct)

XRLA,@Ri;A←(A)⊕((Ri))

XRLA,#data;A←(A)⊕data4累加器“清零”与“取反”清零:CLRA;A←0取反:CPLA;A←(A)注意:字节的清零与取反操作只能在累加器A中进行,其他任何寄存器均无此功能。§3.3MCS-51单片机的指令系统三、逻辑运算指令5累加器循环移位指令

RLA

RLCA不带进位位的左移:带进位位的左移:

RRA

RRCA不带进位位的右移:带进位位的右移:①累加器循环移位指令共4条,左移、右移各两条,分别是“带进位位的”和“不带进位位的”。说明:②循环移位操作只能在累加器ACC中实现,其他任何寄存器均无此功能。§3.3MCS-51单片机的指令系统四、控制转移指令1无条件转移AJMPaddr11;PC←(PC)+2,PC0~10←addr11(1)短转移转移范围:短转移指令的下一条指令所在的2KB空间。重要概念:PC当前值所谓PC当前值,是指指令取指完成以后的PC值,也就是紧靠当前正在执行的指令存储的、向着地址增大方向的、下一条指令的地址。§3.3MCS-51单片机的指令系统四、控制转移指令1无条件转移(4)散转移JMP@A+DPTR;PC←(PC)+1,PC←(A)+(DPTR)转移范围:理论上可以转移到全部64KB程序空间。SJMPrel;PC←(PC)+2,PC←(PC)+

rel(3)相对转移转移范围:以相对转移指令的下一条指令为中心的256B,其中向高地址端127B,向低地址端128B。LJMPaddr16;PC←(PC)+3,PC←addr16(2)长转移转移范围:全部64KB程序空间。四、控制转移指令2条件转移(1)累加器判零转移§3.3MCS-51单片机的指令系统JZrel;PC←(PC)+2

;若(A)=0,则PC←(PC)+rel

;否则PC←(PC)

JNZrel;PC←(PC)+2

;若(A)≠0,则PC←(PC)+rel

;否则PC←(PC)+2各种颜色的PC:PC——指向当前正在被执行的指令;

PC——指向当前正在被执行的指令的下一条指令;

PC——指向执行完当前指令后将要执行的那条指令;四、控制转移指令2条件转移(2)比较不相等转移§3.3MCS-51单片机的指令系统CJNEA,direct,rel;PC←(PC)+3

;若(A)≠(direct),则PC←(PC)+rel

;否则PC←(PC)

CJNEA,#data,rel;PC←(PC)+3

;若(A)≠data,则PC←(PC)+rel

;否则PC←(PC)

CJNERn,#data,rel;PC←(PC)+3

;若(Rn)≠data,则PC←(PC)+rel

;否则PC←(PC)

CJNE@Ri,#data,rel;PC←(PC)+3

;若((Ri))≠data,则PC←(PC)+rel

;否则PC←(PC)四、控制转移指令2条件转移(3)减1不为零转移§3.3MCS-51单片机的指令系统DJNZRn,rel;PC←(PC)+2

;Rn←(Rn)-1

;若(Rn)≠0,则PC←(PC)+rel

;否则PC←(PC)

DJNZdirect,rel;PC←(PC)+2

;direct←(direct)-1

;若(direct)≠0,则PC←(PC)+rel

;否则PC←(PC)+2四、控制转移指令3调用与返回指令(1)调用指令§3.3MCS-51单片机的指令系统ACALLaddr11;PC←(PC)+2

;SP←(SP)+1,(SP)←(PC)7~0

;SP←(SP)+1,(SP)←(PC)15~8

;PC10~0←addr11短调用指令LCALLaddr16;PC←(PC)+2

;SP←(SP)+1,(SP)←(PC)7~0

;SP←(SP)+1,(SP)←(PC)15~8

;PC←addr16长调用指令四、控制转移指令3调用与返回指令(1)调用指令§3.3MCS-51单片机的指令系统①调用指令调用的对象是子程序。②调用指令的控制范围是有限的,即子程序的第一条指令所在的存储单元必须在此控制范围以内,否则调用指令将无法完成子程序的调用。③短调用指令的控制范围:短调用指令的下一条指令所在的2KB程序存储空间。④长调用指令的控制范围:全部64KB程序存储空间。即使用长调用指令时,子程序可放在程序存储器的任意位置。几点说明⑤调用子程序运行完,程序回到调用指令的下一条指令继续执行,这是通过PC当前值入栈操作来实现的。四、控制转移指令3调用与返回指令(2)返回指令§3.3MCS-51单片机的指令系统RET;PC←(PC)+1

;(PC)15~8←((SP)),SP←(SP)-1

;(PC)7~0←((SP)),SP←(SP)-1

子程序返回RETI;PC←(PC)+1

;(PC)15~8←((SP)),SP←(SP)-1

;(PC)7~0←((SP)),SP←(SP)-1

中断返回说明:返回指令实质上是两次出栈操作,把调用指令压入堆栈的PC当前值重新装入PC,从而实现从调用指令的下一条指令继续执行主程序。四、控制转移指令4空操作指令§3.3MCS-51单片机的指令系统NOP;PC←(PC)+1说明:空操作指令占用一字节程序存储器,执行占用1个机器周期,除此以外没有其他作用,通常被用作极短时间(μS级)的延时。五、位操作指令1位传送指令§3.3MCS-51单片机的指令系统MOVbit,C;bit←(Cy)

MOVC,bit;Cy←(bit)①C表示进位位Cy,程序状态字PSW的最高位。说明:②bit表示位地址,有三种表示方法,可位于两个存储区域。a)直接物理位地址;b)直接物理字节地址.第几位c)特殊功能寄存器名.第几位i)内部RAM的位寻址区,地址20H~2FH;ii)特殊功能寄存器的个别字节。五、位操作指令2位状态设置指令§3.3MCS-51单片机的指令系统CLRC;Cy←0

CLRbit;bit←0(1)位清零指令SETBC;Cy←1

SETBbit;bit←1(2)位置位指令五、位操作指令3位逻辑操作指令§3.3MCS-51单片机的指令系统(1)位逻辑与ANLC,bit;Cy←(Cy)∧(bit)

ANLC,/bit;Cy←(Cy)∧(bit)(2)位逻辑或ORLC,bit;Cy←(Cy)∨(bit)

ORLC,/bit;Cy←(Cy)∨(bit)(3)位取反(逻辑非)CPLC;Cy←(Cy)

CPLbit;bit←(bit)与逻辑运算指令有何区别??五、位操作指令4位控制转移指令§3.3MCS-51单片机的指令系统(1)判Cy转移JCrel;PC←(PC)+2

;若(Cy)=1,则PC←(PC)+rel

;否则PC←(PC)

JNCrel;PC←(PC)+2

;若(Cy)=0,则PC←(PC)+rel

;否则PC←(PC)+2五、位操作指令4位控制转移指令§3.3MCS-51单片机的指令系统(2)判bit转移JBbit,rel;PC←(PC)+3

;若(bit)=1,则PC←(PC)+rel

;否则PC←(PC)

JBCbit,rel;PC←(PC)+3

;若(bit)=1,则PC←(PC)+rel,bit←0

;否则PC←(PC)

JNBbit,rel;PC←(PC)+3

;若(bit)=0,则PC←(PC)+rel

;否则PC←(PC)+2一、汇编语言格式§3.4汇编语言程序设计①每条指令占一行;②

程序标号、指令助记符、操作数1分别对齐;③

操作数之间以逗号隔开,不能加空格;示例程序:

MOVDPTR,#0020H

MOVXA,@DPTR

MOVB,A

INCDPTR

MOVXA,@DTPR

MULAB

INCDPTR

MOVX@DPTR,A

MOVA,B

INCDPTR

MOVX@DPTR,A二、伪指令介绍§3.4汇编语言程序设计1伪指令与指令的区别①作用时间不同:

伪指令在程序编译的时候起作用;

指令在程序运行的时候起作用。②有无指令码不同:

伪指令不形成指令码,因此不能被单片机执行;

指令最终形成指令码,存放在ROM中,被单片机执行。伪指令的作用:编译程序时,为编译软件提供必要的信息。二、伪指令介绍§3.4汇编语言程序设计2常用伪指令(1)定位伪指令

[格式]ORG××××H[作用]规定紧随其后的程序块或数据块的起始地址。

[举例]ORG0000H(2)定义字节伪指令

[格式]标号:DBX1,X2,…,Xn[作用]Xn为字节数据或ASCII码;把X1,X2,…,Xn从“标号”指定的地址开始,依次连续存放。

[举例]LABLE:DB03H,20,‘A’二、伪指令介绍§3.4汇编语言程序设计2常用伪指令(3)定义双字节指令

[格式]标号:DWX1,X2,…,Xn[作用]Xn为双字数据,把X1,X2,…,Xn从“标号”指定的地址开始,依次连续存放;先存高8位,再存低8位。

[举例]LABLE:DW2148H,2200H(4)预留存储区伪指令

[格式]标号:DSn[作用]从“标号”指定的地址开始预留n个字节存储单元,既不存储程序代码,也不存储数据。

[举例]LABLE:DS3二、伪指令介绍§3.4汇编语言程序设计2常用伪指令(5)赋值伪指令

[格式]字符名称EQU

地址/数据/Rn[作用]把“地址/数据”赋给“字符名称”,通常写在程序开始的地方,在其之后此字符名称即作为指定的地址或数据使用。

[举例]EOCEQUP3.2NUM1EQU30HNUM2EQUR6

(6)结束汇编伪指令

[格式]END[作用]写在汇编程序的末尾,表示汇编语言源程序到此结束。三、程序设计概述§3.4汇编语言程序设计1程序设计的一般过程1

分析任务2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论