《【教学课件】第3章MCS-51单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章MCS-51单片机指令系统.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 MCS-51单片机指令系统单片机指令系统3.1MCS-51指令系统的分类、指令系统的分类、格式及一般说明格式及一般说明3.2寻址方式寻址方式3.3分类指令分类指令MCS-51单片机指令系统有如下特点:单片机指令系统有如下特点:(1)指令执行时间快。)指令执行时间快。(2)指令短,约有一半的指令为单字节指令。)指令短,约有一半的指令为单字节指令。(3)用用一一条条指指令令即即可可实实现现2个个一一字字节节的的相相乘乘或或相除。相除。(4)具有丰富的位操作指令。)具有丰富的位操作指令。(5)可直接用传送指令实现端口的输入输出操)可直接用传送指令实现端口的输入输出操作。作。3.1MCS-
2、51指令系统的分类、格式及一般说明指令系统的分类、格式及一般说明3.1.1指令分类指令分类3.1.2指令格式指令格式3.1.3指令描述符号介绍指令描述符号介绍返回本章首页3.1.1指令分类指令分类按按指指令令功功能能,MCS-51指指令令系系统统分分为为数数据据传传递递与与交交换换、算算术术运运算算、逻逻辑辑运运算算、程程序序转转移移、布尔处理操作、布尔处理操作、CPU控制等控制等6类。类。布尔处理操作类指令又称位操作指令。布尔处理操作类指令又称位操作指令。返回本节3.1.2指令格式指令格式在在MCS-51指指令令中中,一一般般指指令令主主要要由由操操作作码码、操作数组成。操作数组成。指令应具
3、有以下功能:指令应具有以下功能:(1)操操作作码码指指明明执执行行什什么么性性质质和和类类型型的的操操作作。例如,数的传送、加法、减法等。例如,数的传送、加法、减法等。(2)操操作作数数指指明明操操作作的的数数本本身身或或者者是是操操作作数数所所在的地址。在的地址。(3)指定操作结果存放的地址。)指定操作结果存放的地址。返回本节3.1.3指令描述符号介绍指令描述符号介绍Rn当当前前选选中中的的寄寄存存器器区区中中的的8个个工工作作寄寄存存器器R0R7(n=07)。)。Ri当当前前选选中中的的寄寄存存器器区区中中的的2个个工工作作寄寄存存器器R0、R1(i=0,1)。)。direct8位的内部数
4、据存储器单元中的地址。位的内部数据存储器单元中的地址。#data包含在指令中的包含在指令中的8位常数。位常数。#data16包含在指令中的包含在指令中的16位常数。位常数。addr1616位目的地址。位目的地址。addr1111位目的地址。位目的地址。rel8位带符号的偏移字节,简称偏移量。位带符号的偏移字节,简称偏移量。DPTR数据指针,可用作数据指针,可用作16位地址寄存器。位地址寄存器。bit内部内部RAM或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。A累加器。累加器。B专用寄存器,用于乘法和除法指令中。专用寄存器,用于乘法和除法指令中。C进位标志或进位位,或布尔处理机中的累加
5、器。进位标志或进位位,或布尔处理机中的累加器。间间址址寄寄存存器器或或基基址址寄寄存存器器的的前前缀缀,如如Ri,DPTR。/位位操操作作数数的的前前缀缀,表表示示对对该该位位操操作作数数取取反,如反,如/bit。片内片内RAM的直接地址或寄存器。的直接地址或寄存器。()由由寻址的单元中的内容。寻址的单元中的内容。箭箭头头左左边边的的内内容容被被箭箭头头右右边边的的内内容容所所代替。代替。返回本节3.2寻址方式寻址方式3.2.1立即寻址立即寻址3.2.2直接寻址直接寻址3.2.3寄存器寻址寄存器寻址3.2.4寄存器间接寻址寄存器间接寻址3.2.5变址寻址变址寻址3.2.6相对寻址相对寻址3.2
6、.7位寻址位寻址返回本章首页3.2.1立即寻址立即寻址指指令令中中直直接接给给出出操操作作数数的的寻寻址址方方式式。立立即即操操作数用前面加有作数用前面加有#号的号的8位或位或16位数来表示。位数来表示。例如:例如:MOVA,#60H;A#60HMOVDPTR,#3400H;DPTR#3400HMOV30H,#40H;30H单元单元#40H上上述述三三条条指指令令执执行行完完后后,累累加加器器A中中数数据据为为立立即即数数据据60H,DPTR寄寄存存器器中中数数据据为为3400H,30H单元中数据为立即数单元中数据为立即数40H。返回本节3.2.2直接寻址直接寻址指指令令中中直直接接给给出出操
7、操作作数数地地址址的的寻寻址址方方式式,能能进进行行直直接接寻寻址址的的存存储储空空间间有有SFR寄寄存存器器和和内内部数据部数据RAM。例如:例如:MOV PSW,#20H;PSW#20HPSW为直接寻址寄存器的符号地址。为直接寻址寄存器的符号地址。MOVA,30H;A30H内内部部RAM单单元中的内容元中的内容30H为直接给出的内部为直接给出的内部RAM的地址。的地址。返回本节3.2.3寄存器寻址寄存器寻址以以通通用用寄寄存存器器的的内内容容为为操操作作数数的的寻寻址址方方式式。通用寄存器指通用寄存器指A、B、DPTR以及以及R0R7。例如:例如:CLRA;A0INCDPTR;DPTRDP
8、TR+1ADDR5,#20H;R5#20H+R5返回本节3.2.4寄存器间接寻址寄存器间接寻址以以寄寄存存器器中中内内容容为为地地址址,以以该该地地址址中中内内容容为为操操作作数数的的寻寻址址方方式式。间间接接寻寻址址的的存存储储器器空空间间包括内部数据包括内部数据RAM和外部数据和外部数据RAM。能能用用于于寄寄存存器器间间接接寻寻址址的的寄寄存存器器有有R0,R1,DPTR,SP。其其中中R0、R1必必须须是是工工作作寄寄存存器器组中的寄存器。组中的寄存器。SP仅用于堆栈操作。仅用于堆栈操作。例例如如:MOVR0,A;内内部部RAM(R0)A其指令操作过程示意图如图其指令操作过程示意图如图
9、3-1所示。所示。又又如如:MOVXA,R1;A外外部部RAM(P2R1)其指令操作过程示意图如图其指令操作过程示意图如图3-2所示。所示。再再 如如:MOVXDPTR,A;外外 部部RAM(DPTR)A其指令操作过程示意图如图其指令操作过程示意图如图3-3所示。所示。片内RAM30HR034HA30H34H图3-1 MOV R0,A间接寻址示意图片外RAM34HP245HA3410H45H10HR1片外RAM2000HDPTR30HA2000H30H图3-2 MOVX A,R1间接寻址示意图 图3-3 MOVX DPTR,A间接寻址示意图返回本节3.2.5变址寻址变址寻址变变址址寻寻址址只只
10、能能对对程程序序存存储储器器中中数数据据进进行行操操作作。由由于于程程序序存存储储器器是是只只读读的的,因因此此变变址址寻寻址址只只有有读读操操作作而而无无写写操操作作,在在指指令令符符号号上上采采用用MOVC的形式(如图的形式(如图3-4所示)。所示)。例例 如如:MOVCA,A+DPTR;A(A+DPTR)又又 如如,MOVC A,A+PC ;A(A+PC)这这条条指指令令与与上上条条指指令令不不同同的的是是,基基址址寄寄存存器器是是PC。图3-4 变址寻址示意图程序存储器2000HDPTR64H(10H)A2010H64H10H2000H返回本节3.2.6相对寻址相对寻址以以当当前前程程
11、序序计计数数器器PC的的内内容容为为基基础础,加加上上指指令令给给出出的的一一字字节节补补码码数数(偏偏移移量量)形形成成新新的的PC值的寻址方式。值的寻址方式。相相对对寻寻址址用用于于修修改改PC值值,主主要要用用于于实实现现程程序序的分支转移。的分支转移。例如,例如,SJMP08H;PCPC+2+08H指令操作示意图如图指令操作示意图如图3-5所示。所示。程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H图3-5 相对寻址示意图返回本节3.2.7位寻址位寻址位寻址只能对有位地址的单元作位寻址操作。位寻址只能对有位地址的单元作位寻址操作。位位寻寻址址
12、其其实实是是一一种种直直接接寻寻址址方方式式,不不过过其其地地址是位地址。址是位地址。例例如如:SETB10H;将将10H位位置置1若若22H单单元元中中存存放放着着数数据据40H,22H单单元元的的D0位位的的位位地址为地址为10H,执行上述指令后(,执行上述指令后(22H)=41H。又如:又如:MOV32H,C;32H进位位进位位CORLC,32H;CC32H返回本节3.3分类指令分类指令3.3.1数据传送类指令数据传送类指令3.3.2算术运算类指令算术运算类指令3.3.3逻辑运算与循环类指令逻辑运算与循环类指令3.3.4程序转移类指令程序转移类指令3.3.5调用子程序及返回指令调用子程序
13、及返回指令3.3.6位操作指令位操作指令3.3.7空操作指令空操作指令返回本章首页3.3.1数据传送类指令数据传送类指令数数据据传传送送类类指指令令共共28条条,是是将将源源操操作作数数送送到到目目的的操操作作数数。指指令令执执行行后后,源源操操作作数数不不变变,目目的的操操作作数数被被源源操操作作数数取取代代。数数据据传传送送类类指指令令用用到到的的助助记记符符有有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。种。源源操操作作数数可可采采用用寄寄存存器器、寄寄存存器器间间接接、直直接接、立立即即、变变址址5种种寻寻址址方方式式寻寻址址,目目的的操操作作数数可可
14、以以采采用用寄寄存存器器、寄寄存存器器间间接接、直直接接寻寻址址3种种寻寻址址方方式式。MCS-51单单片片机机片片内内数数据据传传送送途途径径如如图图3-6所示。所示。直接地址direct累加器A直接地址direct间接地址Ri寄存器Rn立即数#data寄存器DPTR图3-6 MCS-51单片机片内数据传送图1以以A为目的操作数为目的操作数MOVA,Rn;ARnMOVA,direct;A(direct)MOVA,Ri;A(Ri)MOVA,#data;A#data2以Rn为目的操作数MOVRn,A;RnAMOVRn,direct;Rn(direct)MOVRn,#data;Rn#data3以直
15、接地址为目的操作数以直接地址为目的操作数MOVRi,A;(;(Ri)AMOVRi,direct;(;(Ri)(direct)MOVRi,#data;(;(Ri)#data4以间接地址为目的操作数MOVRi,A;(;(Ri)AMOVRi,direct;(;(Ri)(direct)MOVRi,#data;(;(Ri)#data例例如如:设设(30H)=6FH,R1=40H,执执行行MOVR1,30H后后,30H单单元元中中数数据据取取出出送送入入R1间接寻址的间接寻址的40H单元,(单元,(40H)=6FH。5以以DPTR为目的操作数为目的操作数MOVDPTR,#data16;DPTR#data1
16、6例如执行例如执行MOVDPTR,#2000H后,后,(DPTR)=2000H。6访问外部数据访问外部数据RAMMOVXA,DPTR;A(DPTR)MOVXDPTR,A;(;(DPTR)AMOVXA,Ri;A(P2Ri)MOVXRi,A;(;(P2Ri)A7读程序存储器读程序存储器MOVCA,A+DPTR;A(A+DPTR)MOVCA,A+PC;A(A+PC)例如已知例如已知A=30H,DPTR=3000H,程程序序存存储储器器单单元元(3030H)=50H,执执行行MOVCA,A+DPTR后,后,A=50H。8数据交换数据交换l l字节交换字节交换XCHA,Rn;ARnXCHA,direct
17、;A(direct)XCHA,Ri;A(Ri)l l半字节交换半字节交换XCHDA,Ri;A03(Ri)03SWAPA;A03A479堆栈操作所所谓谓堆堆栈栈是是在在片片内内RAM中中按按“先先进进后后出出,后后进进先先出出”原原则则设设置置的的专专用用存存储储区区。数数据据的的进进栈栈出出栈栈由由指指针针SP统统一一管管理理。堆堆栈栈的的操操作作有有如如下两条专用指令:下两条专用指令:PUSHdirect;SP(SP+1),(SP)(direct)POP direct;(;(direct)(SP),),SPSP-1PUSH是进栈(或称为压入操作)指令。指是进栈(或称为压入操作)指令。指令执行
18、过程如图令执行过程如图3-7所示。所示。片内RAM30H11H10HSP片内RAM50H40H11H10HSP40H30H片内RAM50H40H11H10H50HSP30H片内RAM40H11H10H34HSP30H34H34H执行前执行前执行前PUSH指令后执行POP指令后图3-7 指令PUSH操作示意图图3-8 指令POP操作示意图【例【例3.1】将片内将片内RAM30H单元与单元与40H单元中的内单元中的内容互换。容互换。方法方法1(直接地址传送法):(直接地址传送法):MOV31H,30HMOV30H,40HMOV40H,31HSJMP$方法方法2(间接地址传送法):(间接地址传送法)
19、:MOVR0,#40HMOVR1,#30HMOVA,R0MOVB,R1MOVR1,AMOVR0,BSJMP$方法方法3(字节交换传送法):(字节交换传送法):MOVA,30HXCHA,40HMOV30H,ASJMP$方法方法4(堆栈传送法):(堆栈传送法):PUSH30HPUSH40HPOP 30HPOP 40HSJMP$返回本节3.3.2算术运算类指令算术运算类指令1加法指令加法指令ADDA,Rn;AA+RnADDA,direct;AA+(direct)ADDA,Ri;AA+(Ri)ADDA,#data;AA+#data2带进位加指令带进位加指令ADDCA,Rn;AA+Rn+CADDCA,d
20、irect;AA+(direct)+CADDCA,Ri;AA+(Ri)+CADDCA,#data;AA+#data+CC为来自为来自PSW状态寄存器中的进位位状态寄存器中的进位位C。例如,设例如,设A=20H,R0=21H,C=1,执行指令,执行指令ADDC,R0后,后,A=42H。3带借位减指令带借位减指令SUBBA,Rn;AA-Rn-CSUBBA,direct;AA-(direct)-CSUBBA,Ri;AA-(Ri)-CSUBBA,#data;AA-#dataC例例如如,设设A=39H,R0=20H,(20H)=32H,C=1,执行指令,执行指令SUBB,R0后,后,A=06H。4乘法指
21、令乘法指令MULAB;BAABA和和B中中各各存存放放一一个个8位位无无符符号号数数,指指令令执执行行后,后,16位乘积的高位乘积的高8位在位在B中,低中,低8位存位存A中。中。例例如如,A=30H,B=60H,执执行行MULAB后后,A=00H,B=12H。5除法指令除法指令DIVAB;AB商在商在A中,余数在中,余数在B中中A和和B中中各各存存放放一一个个8位位无无符符号号数数,A放放被被除除数数,B放放除除数数。指指令令执执行行后后,A中中存存放放商商,B中中存存入入余余数。若数。若B=00H,则指令执行后,则指令执行后OV=1,A与与B不变。不变。例例如如,A=30H,B=07H,执执
22、行行 DIV AB 后后,A=06H,B=06H。6加加1指令指令INCA;AA+1INCRn;RnRn+1INCdirect;(;(direct)(direct)+1INCRi;(;(Ri)(Ri)+1INCDPTR;DPTRDPTR+1例例如如,(30H)=22H,执执行行 INC 30H 后后,(30H)=23H。7减减1指令指令DECA;AA-1DECRn;RnRn-1DECdirect;direct(direct)-1DECRi;(;(Ri)(Ri)-1例例如如,R0=30H,(30H)=22H,执执行行DECR0后,(后,(30H)=21H。8十进制调整指令十进制调整指令DAA;把
23、把A中中按按二二进进制制相相加加的的结结果果调调整整成成按按BCD码相加的结果码相加的结果例例如如,A=65BCD,B=78BCD,C=0,执执行行下下列列语语句句ADD A,BDAA后,后,A=43BCD,C=1。【例例3.2】试试把把存存放放在在R1R2和和R3R4中中的的两两个个16位位数数相相加加,结结果果存存于于R5R6中中。解解:参参考考程序如下:程序如下:MOVA,R2;取第一个数的低;取第一个数的低8位位ADDA,R4;两数的低;两数的低8位相加位相加MOVR6,A;保存和的低;保存和的低8位位MOVA,R1;取第一个数的高;取第一个数的高8位位ADDCA,R3;两两数数的的高
24、高8位位相相加加,并把低并把低8位相加时的进位位加进来位相加时的进位位加进来MOVR5,A;把把相相加加的的高高8位位存存入入R5寄存器中寄存器中SJMP$返回本节3.3.3逻辑运算与循环类指令逻辑运算与循环类指令1“与与”操作指令操作指令2“或或”操作指令操作指令3“异或异或”操作指令操作指令4求反与清除指令求反与清除指令5循环指令循环指令返回本节3.3.4程序转移类指令程序转移类指令1无条件转移指令无条件转移指令l l绝对(短)转移指令绝对(短)转移指令AJMP addr11;PC100addr11l l长转移指令长转移指令LJMP addr16;PCaddr16l l短(相对)转移指令短
25、(相对)转移指令SJMP rel;PCPC+2+rell l间接转移指令间接转移指令JMPA+DPTR;PCA+DPTR2条件转移指令条件转移指令l l累加器为零(非零)转移指令累加器为零(非零)转移指令l l减减1非零转移指令非零转移指令l l两数不等转移指令两数不等转移指令l l相对偏移量相对偏移量rel的求法的求法0000H07FFH0800H0FFFH1000H17FFH1800H1FFFH2000H27FFH2800H2FFFH3000H37FFH3800H3FFFH4000H47FFH4800H4FFFH5000H57FFH5800H5FFFH6000H67FFH6800H6FFF
26、H7000H77FFH7800H7FFFH8000H87FFH8800H8FFFH9000H97FFH9800H9FFFHA000HA7FFHA800HAFFFHB000HB7FFHB800HBFFFHC000HC7FFHC800HCFFFHD000HD7FFHD800HDFFFHE000HE7FFHE800HEFFFHF000HF7FFHF800HFFFFH表3-1 程序存储器空间32个2K地址范围返回本节3.3.5调用子程序及返回指令调用子程序及返回指令1调用子程序指令调用子程序指令LCALLaddr16;PCPC+3,SPSP+1,(,(SP)PC710;SPSP+1,(SP)PC158
27、,PCaddr16ACALLaddr11;PCPC+2,SPSP+1,(,(SP)PC70;SPSP+1,(,(SP)PC158,PC100addr112返回指令返回指令RET;PC158(SP),),SPSP-1;PC70(SP),),SPSP-1RETI;PC158(SP),),SPSP-1;PC70(SP),),SPSP-1返回本节3.3.6位操作指令位操作指令1位数据传送指令位数据传送指令MOV C,bit;C(bit)MOV bit,C;bitC2位状态修改指令位状态修改指令CLRC;C0CLRbit;(;(bit)0CPLC;CCPLbit;(;(bit)(bit)SETB C;C
28、1SETB bit;(;(bit)13位逻辑运算指令位逻辑运算指令ANL C,bit;CC(bit)ANL C,/bit;CC(bit)ORL C,bit;CC(bit)ORL C,/bit;CC(bit)4位转移指令位转移指令JCrel;若若C=1,则转移(则转移(PCPC+2+rel);否则程序顺序执行);否则程序顺序执行JNC rel;若若C=0,则转移(则转移(PCPC+2+rel);否则程序顺序执);否则程序顺序执JBbit,rel;若若(bit)=1,则转移(则转移(PCPC+3+rel);否则程序顺序执行);否则程序顺序执行JNB bit,rel;若若(bit)=0,则转移(则转
29、移(PCPC+3+rel);否则程序顺序执行);否则程序顺序执行JBC bit,rel;若若(bit)=1,则则PCPC+3+rel,(bit)0;否否则则程程序序顺顺序序执行执行功功能能:分分别别检检测测指指定定位位是是1还还是是0,若若条条件件符符合合,则则CPU转转向向指指定定的的目目标标地地址址去去执执行行程程序序;否否则,顺序执行下条指令。则,顺序执行下条指令。返回本节3.3.7空操作指令空操作指令NOP;PCPC+1这这是是一一条条单单字字节节指指令令。执执行行时时,不不作作任任何何操操作作(即即空空操操作作),仅仅将将程程序序计计数数器器PC的的内内容容加加1,使使CPU指指向向下下一一条条指指令令继继续续执执行行程程序序。这这条条指指令令常常用用来来产产生生一一个个机机器器周周期期的的时时间间延延迟。迟。返回本节本章到此结束,本章到此结束,谢谢您的光临!谢谢您的光临!结束放映返回本章首页THANKYOUVERYMUCH!