您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第四章 MCS-51系列单片机指令系统
4.1MCS-51系列单片机指令系统概述MCS-51系列单片机指令系统按功能分为5类指令,分别为:第四章MCS-51系列单片机指令系统①数据传送(29条)②算术运算(24条)③逻辑运算(24条)④控制转移(17条)⑤布尔处理(17条)4.1.1指令系统特点1、MCS-51指令系统用42种助记符表示了33种指令功能。2、MCS-51指令系统在存储空间和执行时间上的效率是比较高的。是一种简明、易掌握、功能强的指令系统。3、MCS-51指令系统中有一个处理布尔变量的指令子集。4.1.2布尔处理机为了充分地满足工业控制的需要,MCS-51的设计者在单片机内部设置了功能很强的位处理机,即布尔处理机。布尔处理机硬件主要由以下几部分支持:1.布尔运算器ALU2.布尔累加器CY(PSW.7)3.布尔RAM区4.布尔I/O口P0~P3口的每位都可独立地进行输入/输出操作,构成布尔I/O口。5.布尔指令集由17条布尔指令组成,可对各种布尔变量进行处理,如置位、清零、求反、跳转、传送和逻辑运算等。4.1.3指令中使用的符号说明见书上46页4.2MCS-51系列单片机寻址方式4.2.1立即寻址立即寻址是指指令中直接给出操作数的寻址方式。指令中的操作数称为立即数,立即数前面加“#”以区别直接寻址。8位的立即数#data,如#30H;16位的立即数#data,如#3000H。要注意立即寻址与直接寻址区别。指令形式:例如:MOVA,#30H;A←30H操作码立即数74H30HPCPC+1操作码OPA指令MOVA,#30H的执行过程图4-1指令MOVA,#30H的过程80H00HPC+1PC+2操作码OPDPHDPL指令MOVDPTR,#8000H的执行过程90HPC图4-2指令MOVDPTR,#8000H的执行过程例如:MOVDPTR,#8000H;DPTR←8000H指令立即数为16位,其功能是把立即数高8位送入DPH,低8位送入DPL。指令执行过程如图4-2所示。4.2.2直接寻址寻址空间:内部RAM的低128字节和特殊功能寄存器SFR(直接寻址是访问SFR的唯一方式)。操作码后面的一个字节是实际操作数地址。这种直接在指令中给出操作数真实地址的方式称为直接寻址。指令有三种形式:操作码操作数地址操作码操作数地址立即数操作码源操作数地址目的操作数地址例如:MOVA,30H;A←(30H)这是数据传送指令,30H是内部RAM地址,功能是把30H单元内容读入A中。注意:立即数字址与直接寻址的区别,立即数字址是在指令中直接给出操作数直接寻址是在指令中直接给出操作的地址。如图4-3所示。E5H30HPCPC+1操作码指令MOVA,30H的执行过程操作数地址内部RAM××30H××A图4-3指令MOVA,30H的执行过程例如:ANL30H,#30H;30H←(30H)∧30H这是逻辑“与”操作指令,操作码后面第一个30H是操作数地址,第二个30H是参加“与”运算的立即数,“与”的结果存入30H单元中,执行过程如图4-4所示。结果E5H30HPCPC+1操作码指令ANL30H,#30H的执行过程操作数地址内部RAM30H30HPC+2立即数ALU“与”图4-4指令ANL30H,#30H的执行过程4.2.3寄存器寻址寻址空间:R0~R7,A、B、CY(位),DPTR,其中由RS1、RS0两位的值选定工作寄存器区,其中CY是一个特殊的寄存器,通常称之为位累加器。指令选定的寄存器内容就是实际操作数,这种寻址方式称为寄存器寻址。其特点是被寻址的某个寄存器已隐含在操作码中,故有时称寄存器寻址为隐含寻址。有三种指令形式。操作码操作码立即数操作码直接地址例如:MOVA,R3;A←(R3)4.2.4寄存器间接寻址寻址空间:内部RAM(@R0,@R1,SP)和外部数据存储器(@R0,@R1,@DPTR)。指令选定的寄存器内容就是实际操作数地址(而不是操作数),这种寻址方式称为寄存器间接寻址。当用R0,R1寄存器间接寻址之前,同样需要有一个确定的工作寄存器区;并且上述各寄存器中均是有值(操作数地址)的。有三种指令形式。操作码操作码立即数操作码直接地址例如:MOV@R0,A这是一条累加器传送指令,在寻址前R0是有值的(有定义的),它指向目的操作数地址。设:(R0)=30H,则该指令是把累加器A的内容写入内部RAM的30H单元中;指令执行过程如图4-5所示。30HF6HPCPC+1操作码指令MOV@R0,A的执行过程××30HR0××内部RAMA图4-5指令MOV@R0,A的执行过程例如:MOVXA,@DPTR这是一条外部数据存储器读指令,在指令寻址前DPTR数据指针是有值的,它指向外部数据存储器即将访问的一个单元2000H。当执行指令时,外部数据存储器2000H单元的内容读入累加器A中,如图4-6所示。图4-6指令MOVXA,@DPTR的执行过程4.2.5基址+变址间接寻址寻址空间:程序存储器(@A+DPTR,@A+PC)。这是MCS-51指令系统特有的一种寻址方式,它以DPTR或PC作基址寄存器,A作变址寄存器(存放8位无符号数),两者相加形成16位程序存储器地址作操作数地址。这种寻址方式是单字节指令,用于读出程序存储器中数据表格的常数。例如:MOVCA,@A+DPTR设累加器A与数据指针DPTR在寻址前是有值(定义)的。(A)=0FH(DPTR)=2400H指令的执行过程如图4-7所示93HPCPC+1操作码指令MOVCA,@A+DPTR的执行过程……240FHALU××0FH2400HADPTR图4-7指令MOVCA,@A+DPTR的执行过程寻址空间:程序存储器。用于程序控制,利用指令修正PC指针的方式实现转移。即以程序计数器PC的内容为基地址,加上指令中给出的偏移量rel,所得结果为转移目标地址。注意:偏移量rel是一8位有符号数补码,范围-128~+127。所以转移范围应在当前PC指针的-128~+127之间某一程序存储器地址中。相对寻址一般为双字节或三字节指令。有三种指令形式。操作码操作码直接地址操作码立即数relrelrel4.2.6相对寻址例如:JNZrel;累加器A的内容不等于零则转移。设rel=23H,指令操作码存放在程序存储器2000H单元,并且在执行该指令前A中内容不为零,则执行过程如图4-8所示。这条转移指令为2字节指令,当取址后PC当前值为2002H,转移目标地址:D=(PC)+rel=2025HPC被修改后自动转到2025H单元去执行程序,从而完成程序转移。反过来,若已知转移目标地址为1FFCH,(PC)当前值为2002H,则:rel=D-(PC)=1FFCH-2002H=FFFAH,那么,根据符号位的扩展法取8位:rel=FAH=(-6)补。……23H下一条指令2000H2001H操作码指令JNZrel的执行过程……2025HALU××70H2002Hrel=23HPC当前值2002H地址(PC)=2025H修正后转移目标图4-8指令JNZrel的执行过程4.2.7位寻址寻址空间:片内RAM的20H~2FH和SFR中12个能被8整除的字节地址。注意:对CY的寻址方式既属于寄存器寻址又属于位寻址。以访问触发器的方式对内部RAM,特殊功能寄存器SFR中的位地址空间进行访问称之为位寻址。在介绍了MCS-51寻址方式后,对其寻址方法以及相应寻址空间作一概括,见下页表4-1所示。寻址方式利用的变量使用的空间寄存器寻址R0~R7,A,B,CY,DPTR片内直接寻址direct片内RAM低128字节特殊功能寄存器SFR寄存器间址@R0,@R1,SP@R0,@R1,@DPTR片内RAM片外RAM与I/O口立即寻址#data程序存储器基址加变址@A+PC@A+DPTR程序存储器相对寻址PC+rel程序存储器位寻址bit片内RAM的20H~2FH可位寻址的SFR表4-1寻址方式与相应的寻址空间4.3MCS-51系列单片机指令系统指令分类:MCS-51系列单片机指令有3种分类方法。1.按指令所占字节数分为:单字节指令(49条)、双字节指令(45条)、三字节指令(17条)。2.按指令执行时间分为:单周期指令(64条)、双周期指令(45条)、四周期指令(两条)。3.按指令操作功能分为:数据传送指令(29条)、算术运算指令(24条)、逻辑运算指令(24条)、控制转移指令(17条)、伪操作指令(17条)。4.3.1数据传送指令1.一般传送指令(1)数据传送到累加器A的一般传送指令①MOVA,Rn;A←(Rn)【例1】设原来A的内容为25H,R7的内容为3FH,则执行MOVA,R7后A中的内容为3FH,R7中内容不变。②MOVA,direct;A←(direct)【例2】设原来A的内容为00H,内部RAM40H单元中内容为FFH,则执行MOVA,40H后A中内容变为FFH,40H单元中内容不变。③MOVA,@Ri;A←((Ri))【例3】设原来A中的内容为C8H,R0中内容为65H,内部RAM65H单元中内容为55H,则执行MOVA,@R0后A的内容变为55H,65H单元中内容不变,R0中内容也不变。④MOVA,#data;A←data【例4】设原累加器A中的内容为D7H,执行MOVA,#09H后,A中为09H。①MOVRn,A;Rn←(A)【例5】设原来R3中的内容为48H,A中内容为0,则执行指令MOVR3,A后,R3中内容变为0,A中内容不变。②MOVRn,direct;Rn←(direct)【例6】设原来R2中的内容为0EH,内部数据RAM20H单元中的内容为B6H,则执行指令MOVR2,20H后,R2中内容变为B6H,20H单元内容不变。③MOVRn,#data;Rn←data【例7】设原来R4中内容为FEH,则执行指令MOVR4,#75H后,R4中内容变为75H。(2)数据传送到Rn的一般传送指令(3)数据传送到直接寻址单元direct的一般传送指令①MOVdirect,A;direct←(A)【例8】设原来A中内容为16H,内部RAM70H单元中内容为0,则执行MOV70H,A后70H单元内容变为16H,A中内容不变。②MOVdirect,Rn;direct←(Rn)【例9】设原来内部RAM80H单元中的内容为58H,R6中内容为F0H,则执行指令MOV80H,R6后,80H单元内容变为F0H,R6中内容不变。③MOVdirect1,direct2;direct1←(direct2)【例10】设原来内部RAM90H单元中内容为09H,P1口上数据为AAH,则执行MOV90H,P1后,90H中的内容变为AAH,P1口上数据不变。④MOVdirect,#data;direct←data【例11】设原来内部RAM4FH单元中内容为0,则执行指令MOV4FH,#9BH后,4FH单元中变为9BH。⑤MOVdirect,@Ri;direct←((Ri))【例12】设原来内部RAM36H单元中内容为FFH,R1内容为25H,25H单元中内容为01H,则执行指令MOV36H,@R1后,36H单元中内容变为01H,25H单元及R1内容不变。(4)数据传送到Ri间接寻址的存储单元的一般传送指令①MOV@Ri,A;(Ri)←(A)【例13】设原来R1内为30H,30H中内容为26H,A中内容为0,则执行指令MOV@R1,A后,30H中内容变为0,A和R1中内容不变。②MOV@Ri,direct;(Ri)←(direct)【例14】设原来R0内容为03H,指令内部RAM存储单元03H中内容为83H,P1端口数据为5DH,则执行指令MOV@R0,P1后,03H单元内容变为5DH,P1端口数据以及R0内容不变。③MOV@Ri,#data;(Ri)←data【例15】设原来R1内容为78H,存储单元地址为78H的内部RAM中内容为00H,则执行指令MOV@R1,#0B7H后,78H单元中内容变为B7H,R1中内容不变。(5)16位立即数传送到DPTR指令MOVDPTR,#data16;D
本文标题:第四章 MCS-51系列单片机指令系统
链接地址:https://www.777doc.com/doc-4253627 .html