您好,欢迎访问三七文档
第三章8051单片机指令系统•3.1MCS-51指令系统的分类、格式及一般说明•3.2寻址方式学习目的及要求•熟悉指令、指令系统、机器语言、及汇编语言的概念;•熟悉8051汇编语言指令的格式;•掌握8051的七种寻址方式,并能实际应用;MCS-51单片机指令系统有如下特点:(1)指令执行时间快。(2)指令短,约有一半的指令为单字节指令。(3)用一条指令即可实现2个一字节的相乘或相除。(4)具有丰富的位操作指令。(5)可直接用传送指令实现端口的输入输出操作。3.1MCS-51指令系统的分类、格式及一般说明•3.1.1指令分类•3.1.2指令格式返回本章首页3.1.1指令分类•按指令功能,MCS-51指令系统分为数据传递与交换、算术运算、逻辑运算、程序转移、布尔处理操作、CPU控制等6类。•布尔处理操作类指令又称位操作指令。返回本节3.1.2指令格式•在MCS-51指令中,一般指令主要由操作码、操作数组成。指令格式为:操作码[目的操作数][,源操作数]•指令应具有以下功能:(1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。(2)操作数指明操作的数本身或者是操作数所在的地址。(3)指定操作结果存放的地址。返回本节8051指令系统中,有单字节、双字节或三字节指令1.单字节指令:单字节指令中的8位二进制代码既包含操作码的信息,又包含操作数的信息。共49条。2.双字节指令:用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。共有45条。3.三字节指令:一个字节操作码,两个字节操作数。共有17条。8051单片机共有111条指令。3.2寻址方式•寻址方式:就是寻找指令中操作数或操作数所在地址的方法。8051共有七中寻址方式。•3.2.1立即寻址•3.2.2直接寻址•3.2.3寄存器寻址•3.2.4寄存器间接寻址•3.2.5变址寻址•3.2.6相对寻址•3.2.7位寻址•3.2.8寻址空间及符号注释返回本章首页3.2.1立即数寻址•指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。例如:MOVA,#60H;A←60HMOVDPTR,#3400H;DPTR←3400HMOV30H,#40H;30H单元←40H•上述三条指令执行完后,累加器A中数据为立即数据60H,DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。返回本节3.2.2直接寻址•指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和片内RAM的128个单元。例如:MOVA,P1;A←(P1)把SFR中P1口的内容送A。MOVA,30H;A←(30H)注意解释字段中加括号和不加括号的区别!•30H为直接给出的内部RAM的地址。返回本节3.2.3寄存器寻址•以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B、DPTR以及R0~R7。例如:MOVA,R0;A←(R0)CLRA;A←0INCDPTR;DPTR←DPTR+1ADDA,R5;A←(A)+(R5)返回本节3.2.4寄存器间接寻址•以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。•能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。例如:MOV@R0,A;内部RAM(R0)←A其指令操作过程示意图如图3-1所示。又如:MOVX@DPTR,A;外部RAM(DPTR)←A其指令操作过程示意图如图3-2所示。片内RAM30HR034HA30H34H图3-1MOV@R0,A间接寻址示意图片外RAM2000HDPTR30HA2000H30H图3-2MOVX@DPTR,A间接寻址示意图返回本节3.2.5变址寻址是基址寄存器(A)+变址寄存器(PC或DPTR)的间接寻址。变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式(如图3-4所示)。例如:MOVCA,@A+DPTR;A←(A+DPTR)又如:MOVCA,@A+PC;A←(A+PC)这种寻址方式多用于查表操作。图3-4变址寻址示意图程序存储器2000HDPTR64H(10H)A2010H64H10H2000H返回本节3.2.6相对寻址•以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。•相对寻址用于修改PC值,主要用于实现程序的分支转移。例如,SJMP08H;PC←PC+2+08H指令操作示意图如图3-5所示。程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H图3-5相对寻址示意图返回本节3.2.7位寻址•位寻址只能对有位地址的单元作位寻址操作。•位寻址其实是一种直接寻址方式,不过其地址是位地址。例如:SETB10H;将10H位置1。若22H单元中存放着数据40H,22H单元的D0位的位地址为10H,执行上述指令后(22H)=41H。又如:MOV32H,C;32H←进位位CORLC,32H;C←C∨32H返回本节3.2.8寻址空间及符号注释1.寻址空间:每种寻址方式可涉及的存储器空间寻址方式源操作数寻址空间立即数寻址程序存储器ROM直接寻址片内RAM低128B、SFR寄存器寻址工作寄存器R0---R7、A、B、C、DPTR寄存器间接寻址片内RAM低128B[@R0、@R1]片外RAM[@R0、@R1、@DPTR]变址寻址程序存储器[@A+PC、@A+DPTR]相对寻址程序存储器256B范围(PC+偏移量)位寻址片内RAM的20H—2FH字节地址、部分SFR例如:MOVA,#55H;究竟属于立即寻址还是寄存器寻址呢?这要看以哪个操作数为参照系了。我们一般所说的寻址方式是指源操作数,所以此例为立即数寻址。2.寻址方式中常用符号注释•Rn——当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)。•Ri——当前选中的寄存器区中的2个工作寄存器(间接寻址寄存器)R0、R1(i=0,1)。•direct—8位的内部数据存储器单元中的地址。•#data——包含在指令中的8位常数。•#data16——包含在指令中的16位常数。•addr16——16位目的地址。•addr11——11位目的地址。rel——8位带符号的偏移字节,简称偏移量。DPTR——数据指针,可用作16位地址寄存器。bit——内部RAM或专用寄存器中的直接寻址位。A——累加器。B——专用寄存器,用于乘法和除法指令中。C——进位标志或进位位,或布尔处理机中的累加器。$——用于表示程序计数器的当前值。常出现在转移指令中,例如:SJMP$表示循环等待。@——间址寄存器或基址寄存器的前缀,如@Ri,@DPTR。/——位操作数的前缀,表示对该位操作数取反,如/bit。×——片内RAM的直接地址或寄存器。(×)——由×寻址的单元中的内容。——箭头左边的内容被箭头右边的内容所代替。返回本节课堂作业:P67:1、4、7课后作业:P67:2、3、5谢谢大家再见!3.3MCS-51单片机的指令系统学习目的及要求•熟悉各类指令的功能、操作的对象和结果及指令执行后对PSW各个位的影响。•8051指令系统的特点:不同的存储空间寻址方式不同,适用的指令不同。•3.3.1数据传送类指令•3.3.2算术运算类指令•3.3.3逻辑运算类指令•3.3.4控制程序转移类指令•3.3.5调用子程序及返回指令•3.3.6位操作指令•3.3.7空操作指令返回本章首页3.3.1数据传送类指令•数据传送类指令共28条,是将源操作数送到目的操作数。•指令执行后,源操作数不变,目的操作数被源操作数取代。•数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。•源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址;•目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。•数据传送指令是一种最基本最常用的操作,在通常的程序中占有极大的比例。1.以A为目的操作数MOVA,Rn;A←RnMOVA,direct;A←(direct)MOVA,@Ri;A←(Ri)MOVA,#data;A←#data上述指令是将源操作数指定的内容送到累加器A中。上述操作只影响PSW的P标志位。2.以Rn为目的操作数MOVRn,A;Rn←AMOVRn,direct;Rn←(direct)MOVRn,#data;Rn←#data上述指令是将源操作数指定的内容送到当前工作寄存器组R0—R7中的某个寄存器。例如:设(A)=78H,(R5)=47H,(70)=F2H。MOVR5,A;R5←(A),(R5)=78HMOVR5,70H;R5←(70H),(R5)=F2HMOVR5,#A3H;R5←A3,(R5)=A3H注:8051指令系统中没有“MOVRn,Rn”传送指令。3.以直接地址为目的操作数MOVdirect,A;direct←(A)MOVdirect,Rn;direct←(Rn)MOVdirect,direct;目的direct←(源direct)MOVdirect,@Ri;direct←((Ri))MOVdirect,#data;direct←#data上述指令是将源操作数指定的内容送到由直接地址direct所指出的片内存储单元中。4.以间接地址为目的操作数MOV@Ri,A;(Ri)←AMOV@Ri,direct;(Ri)←(direct)MOV@Ri,#data;(Ri)←#data例如:设(30H)=6FH,R1=40H,MOV@R1,30H,结果30H单元中数据取出送入R1间接寻址的40H单元,(40H)=6FH。5.以DPTR为目的操作数MOVDPTR,#data16;DPTR←#data16例如执行MOVDPTR,#2000H后,(DPTR)=2000H。DPH←20H,DPL←00H这是唯一的16位立即数传送指令,把16位常数送入DPTR。6.访问外部数据RAM在8051指令系统中,访问片外RAM只能用寄存器间接寻址,与累加器A配合,共四条指令。MOVXA,@Ri;A←((Ri))MOVX@Ri,A;(Ri)←A寻址范围是片外256BRAM。MOVXA,@DPTR;A←((DPTR))MOVX@DPTR,A;(DPTR)←A寻址范围是片外64KBRAM。7.读程序存储器(查表指令)注:数据表格放在程序存储器中(只有两条指令)。①近程查表指令(256B)MOVCA,@A+PC;A←((A)+(PC))只能查找指令所在地址以后256B范围内的常数或代码。②远程查表指令(64KB)MOVCA,@A+DPTR;A←((A)+(DPTR))查表范围可达ROM的64KB空间。例如:在程序存储器中,数据表格为1010H:02H1011H:04H1012H:06H1013H:08H执行程序1000H:MOVA,#0DH;A←0DH,偏移量1002H:MOVCA,@A+PC;A←(0DH+1003H)1003H:MOVR0,A;R0H←A结果为(A)=02H,(R0)=02H,(PC)=1004H又如:在程序存储器中,数据表格为7010H:02H7011H:04H7012H:06H7013H:08H执行程序1000H:MOVA,#10H;A←10H,偏移量1002H:MOVDPTR,#7000H;DPTR←7000H1003H:MOVCA,@A+DPTR;A←(10H+7000H)结果为(A)=02H8.数据交换l字节交换XCHA,Rn;A=RnXCHA,direct;A=(direct)XCHA,@Ri;A=(Ri)l半字节交换XCHDA,@Ri;A0~3=(Ri)0~3低4位互换,高4位不变。SWAPA;A0~3=A4~7(高低两半字节交换)注:上述交换指令的目的操作数为累加器A。9.堆栈操作•所谓堆栈是在片内RA
本文标题:8051单片机指令
链接地址:https://www.777doc.com/doc-3400268 .html