第3章89C51的指令系统新

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章89C51的指令系统3.1指令系统概述3.2指令格式3.3指令系统的寻址方式3.489C51指令系统分类介绍3.4.1数据传送类指令(29条)3.4.2算术运算类指令(24条)3.4.3逻辑运算与循环类指令(24条)3.4.4控制转移类指令(17条)3.4.5位操作类指令(17条)教学目的指令和指令系统的概念与分类。掌握指令的格式和寻址方式。掌握数据传送、算术运算、逻辑运算、控制转移和位操作指令的功能和应用。学习重点和难点指令的寻址方式。控制转移指令和位操作指令。3.1指令系统概述89C51的基本指令共111条,按指令所占的字节来分:(1)单字节指令49条;(2)双字节指令45条;(3)三字节指令17条。按指令的执行时间来分:(1)1个机器周期(12个时钟振荡周期)指令64条(2)2个机器周期(24个时钟振荡周期)指令45条(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。12MHz晶振:机器周期为1s。3.2指令格式一条指令通常由两部分组成,即操作码和操作数。操作码:规定指令进行什么操作操作数:指令操作的对象有单字节指令、双字节指令、三字节不同长度的指令,格式不同:(1)单字节指令:操作码、操作数同在一个字节中。(2)双字节指令:操作码+操作数。(3)三字节指令:操作码+操作数+操作数。汇编语言格式为:[标号:]操作码助记符[第一操作数][,第二操作数][,第三操作数][;注释]例如:LOOP:MOVA,#50H;(A)←50HDECR0;(R0)←(R0)-1DJNZR0,LOOP;(R0)-1≠0,则程序转移到;LOOP地址;否则顺序执行END;结束3.3指令系统的寻址方式基本概念寻址就是寻找指令中操作数或操作数所在地址。寻址方式就是找到存放操作数的地址,并把操作数提取出来的方法,即寻找操作数或者是操作数地址的方法。8051单片机寻址方式共有7种:寄存器寻址、直接寻址、寄存器间接寻址、立即数寻址、变址寻址、相对寻址和位寻址。若不特别声明,我们后面提到的寻址方式均指源操作数的寻址方式。1.寄存器寻址方式操作数在寄存器中MOVA,Rn;(Rn)→A,n=0~7表示把寄存器Rn的内容传送给累加器A。如:MOVA,R030H00HASFRR030HMOVA,R0E8HROMRAM寻址范围:(1)4组通用工作寄存区共32个工作寄存器。(2)部分特殊功能寄存器,例如A、B以及数据指针寄存器DPTR等。2.直接寻址方式操作数直接以单元地址的形式给出:MOVA,40H寻址范围:(1)内部RAM的128个单元(2)特殊功能寄存器。除了以单元地址的形式外,还可用寄存器符号的形式给出。例如:MOVA,80H与MOVA,P0是等价的。如:MOVA,50H3AH50HASFR3AHMOVA,50HE5HROMRAM50H3.寄存器间接寻址方式寄存器中存放的是操作数的地址,在寄存器前加前缀标志“@”。访问内部RAM或外部RAM的低256个字节时,只能采用R0或R1作为间址寄存器。例如:MOVA,@Ri;i=0或1其中Ri中的内容为40H,把内部RAM40H单元内容送A。寻址范围:(1)访问内部RAM低128个单元,其通用形式为@Ri(2)对外部内部RAM的64K字节的间接寻址,例如:MOVXA,@DPTR(3)片外数据存储器的低256字节例如:MOVXA,@Ri;i=0或1(4)堆栈区堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器。由于寻址的存储空间为片内RAM或片外RAM,片内RAM的数据传送采用“MOV”类指令,间接寻址寄存器采用寄存器R0或R1(堆栈操作时采用SP);片外RAM的数据传送采用“MOVX”类指令,这时间接寻址寄存器有两种选择,一是采用R0和R1作间址寄存器,这时R0或R1提供低8位地址;二是采用DPTR作为间址寄存器。5AH30HASFR5AHMOVA,@R0E6HROMRAM30HR0如:MOVA,@R04.立即寻址方式操作数在指令中直接给出,需在操作数前面加前缀“#”。立即数可以为一个字节,也可以是两个字节,并要用符号“#”来标识。由于立即数是一个常数,所以只能作为源操作数。立即寻址所对应的寻址空间为:ROM例如:MOVA,#40H5.基址寄存器加变址寄存器间址寻址方式本寻址方式是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器。00HASFR50HMOVA,#50H74HROMRAM50H如:MOVA,#50H例如:指令MOVCA,@A+DPTR其中A的原有内容为05H,DPTR的内容为0400H,该指令执行的结果是把程序存储器0405H单元的内容传送给A。说明:(1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围可达到64KB。(2)本寻址方式的指令只有3条:MOVCA,@A+DPTR;A←((A)+(DPTR))MOVCA,@A+PCJMP@A+DPTR变址寻址所对应的寻址空间为:ROM如:MOVCA,@A+DPTR00HASFR0FHMOVCA,@A+DPTR93HROMRAMDPL00HDPH24H88H2400H+0FH=240FH240FH6.位寻址方式89C51有位处理功能,可以对数据位进行操作。例如:MOVC,40H是把位40H的值送到进位位C。寻址范围包括:(1)内部RAM中的位寻址区。位有两种等价的表示方法:(1)直接就是位地址,如40H;(2)另一种(28H).0,是28H单元中的最低位。(2)特殊功能寄存器中的可寻址位在指令中有4种表示方法:a.直接使用位地址。例如PSW.5的位地址为0D5H。b.位名称的表示方法。例如:PSW.5是F0标志位,可使用F0表示该位。c.单元地址加位数的表示方法。例如:(0D0H).5。d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。返回MOVC,06H;CY←(06H)C累加器只有一位,指令是位寻址方式,操作码是0A2H,06H是位地址。指令含义是将内部RAM的20H单元的D6位的内容送入累加器C,其指令执行过程如图所示。这条指令应区别于指令“MOVA,06H”,A是8位累加器,意思是将RAM中06H单元的内容送入A中,操作码是0E5H。7.相对寻址方式相对寻址是以程序计数器PC的当前值(指读出该2字节或3字节的跳转指令后,PC指向的下条指令的地址)为基准,加上指令中给出的相对偏移量rel形成目标地址的寻址方式。这种寻址方式用于相对转移指令中。目的地址=转移指令所在的地址+转移指令的字节数+rel偏移量rel是一带符号的8位二进制数补码数,置于操作码之后存放范围是:-128~+127如:JCrel;rel=75H向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。00HPSWSFR10000000ROMRAM1000H+02H=1002H1077HJCrel40H75H1000H1001H1002H1002H+75H=1077HPC值字节数当前PC值偏移量新PC值注意此例中CYPSW.7)为17种寻址方式的比较序号寻址方式利用的寄存器和存储空间1立即寻址程序存储器ROM2直接寻址内部RAM、特殊功能寄存器SFR3寄存器寻址寄存器R0~R7、A、B、DPTR和C(布尔累加器)4寄存器间接寻址内部RAM(@R0、@R1、SP)、外部RAM(@R0、@R1、@DPTR)5变址寻址程序存储器ROM(@A+DPTR、@A+PC)6相对寻址程序存储器ROM(PC+偏移量)7位寻址内部RAM的20H~2FH单元和部分SFR3.489C51指令系统分类介绍111条指令,按功能分类,可分为下面5大类:(1)数据传送类(28条)(2)算术操作类(24条)(3)逻辑运算类(25条)(4)控制转移类(17条)(5)位操作类(17条)指令中符号的意义:Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)。Ri当前寄存器区中可作间接寻址寄存器的2个寄存器R0、R1(i=0,1)。Direct直接地址,即8位的内部RAM或特殊功能寄存器的字节地址。#data包含在指令中的8位立即数。#data16包含在指令中的16位立即数。rel相对转移指令中的偏移量,为8位的带符号补码数。DPTR数据指针,可用作16位的数据地址寄存器。bit内部RAM或特殊功能寄存器中的直接寻址位。C(或Cy)进位标志位或位处理机中的累加器。addr1111位目的地址addr1616位目的地址@间接寻址寄存器前缀,如@Ri,@A+DPTR(X)X中的内容。((X))由X寻址的单元中的内容。→箭头右边的内容被箭头左边的内容所取代。3.4.1数据传送类指令在89C51单片机中,数据传送是最基本和最主要操作。数据传送操作可以在片内RAM和SFR内进行,也可以在累加器A和片外存储器之间进行。指令中必须指定传送数据的源地址和目的地址,以便机器执行指令时把源地址中内容传送到目的地址中,但不改变源地址中内容。在这类指令中,除以累加器A为目的操作数寄存器指令会对奇偶标志位P有影响外,其余指令执行时均不会影响任何标志位。89C51单片机的数据传送指令共有28条,分为内部数据传送指令、外部数据传送指令、堆栈操作指令和数据交换指令等四类。使用最频繁的一类指令,通用格式:MOV目的操作数,源操作数属“复制”,而不是“搬家”数据传送类指令不影响标志位:Cy、Ac和OV,影响奇偶标志位P。1.以累加器为目的操作数的指令MOVA,Rn;(Rn)→A,n=0~7MOVA,@Ri;((Ri))→A,i=0,1MOVA,direct;(direct)→AMOVA,#data;#data→A指令功能:这组指令的功能是把源操作数的内容送入累加器A。源操作数寻址方式:立即寻址;直接寻址;寄存器寻址;寄存器间接寻址等寻址方式。例如:MOVA,R6;(R6)→A,寄存器寻址MOVA,70H;(70H)→A,直接寻址MOVA,@R0;((R0))→A,间接寻址MOVA,#78H;78H→A,立即寻址2.以Rn为目的操作数的指令MOVRn,A;(A)→Rn,n=0~7MOVRn,direct;(direct)→Rn,n=0~7MOVRn,#data;#data→Rn,n=0~7指令功能:是把源操作数的内容送入当前一组工作寄存器区的R0~R7中的某一个寄存器。源操作数寻址方式:立即寻址;直接寻址;寄存器寻址。例3—4指出下列指令的功能和寻址方式。MOVR2,#64HMOVR3,64HMOVR7,A解MOVR2,#64H;R2←64H,立即寻址MOVR3,64H;R3←(64H),直接寻址MOVR7,A;R7←(A),寄存器寻址3.以直接地址direct为目的操作数的指令MOVdirect,A;(A)→directMOVdirect,Rn;(Rn)→direct,n=0~7MOVdirect1,direct2;MOVdirect,@Ri;((Ri))→directMOVdirect,#data;#data→direct功能:这组指令的功能是把源操作数送入由直接地址指向的存储单元,直接寻址时,direct可以是特殊功能寄存器的地址、内部RAM区的地址,因此允许对端口直接操作。例如,指令:“MOVP1,40H”的含义是将40H单元的内容送入P1端口。源操作数寻址方式:立即寻址;直接寻址;寄存器寻址;寄存器间接寻址。例若(64H)=70H,(A)=78H,说明执行指令“MOV64H,A”的结果。解执行后结果为(64H)=78H,(A)=78H不变。4.以寄存器间接地址为目的操作数的指令MOV@Ri,A;(A)→((Ri)),i=0,1MOV@Ri,direct;(direct)→((Ri))MOV@Ri,#data;#data→((Ri))指令功能:本组指令是将源操作数送入以R0或R1内容为地址的存储单元中。源操作数寻址方式:立即寻址;直接寻址;寄存器寻址。例若(3

1 / 112
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功