第3章指令系统09_第1页
第3章指令系统09_第2页
第3章指令系统09_第3页
第3章指令系统09_第4页
第3章指令系统09_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

教学目的:熟悉80C51系列单片机的寻址方式及每一种寻址方式对应的寻址空间;掌握每一条指令功能。教学重点:1.80C51系列单片机寻址方式所对应的寻址空间;2.80C51系列单片机指令功能。教学难点:1.数据传送类指令中对不同的存储空间应采用的传送指令及寻址方式。2.间接寻址方式,第3章指令系统,31指令系统简介,1.80C51系列指令系统概述指令是规定计算机进行某种操作的命令。计算机能够执行的各种指令的集合就称为指令系统。根据代码长度,80C51单片机的指令有单字节、双字节和三字节指令。按照指令执行速度又可分为单周期、双周期和四周期指令。2.汇编语言指令格式80C51汇编语言指令格式如下:操作码操作数1,操作数2,操作数3;注释操作码:是由助记符表示的字符串,它规定了指令的操作功能。操作数:如果指令中有操作数,则它是指参加操作的数据或数据的地址。例如一条传送指令的书写格式为:MOVA,45H;(45H)A它表示将45H存储单元的内容送到累加器A中。,3.2寻址方式指令系统的寻址方式规定了操作数的访问方式。80C51指令系统有寄存器寻址、直接寻址、间接寻址、立即寻址、基址变址寻址和相对寻址等七种寻址方式。3.2.1汇编指令中的符号约定Rn(n07)-当前选中的8个工作寄存器R0R7,它在片内数据存储器中的地址由PSW中RSl、RS0确定;Ri(i0或1)-当前选中的用于间接寻址的工作寄存器R0、R1,它在片内数据存储器中的地址由RS0、RS1确定;direct-8位直接地址,可以是片内RAM单元地址或SFR地址;data8-8位常数;datal6-16位常数;,addrl6-16位目的地址,寻址空间64K字节程序存储器;addr11-11位目的地址;rel-补码形式的8位地址偏移量,用于相对转移指令中bit-位地址,片内RAM或SFR的可寻址位的位地址;-间接寻址寄存器的前缀;-位操作数的取反操作前缀。以下符号仅出现在指令注释或功能说明中。X-片内RAM的直接地址(包含位地址)或寄存器。(X)-表示X中的内容。(X)-在间接寻址方式中,表示由间址寄存器X指出的地址单元中的内容。-指令操作流程,将箭头左边内容送入箭头右边的单元内。,1.立即数寻址方式立即数(指令中的常数)直接参与指令操作。立即数前必须加“#”标记。指令中的立即数有8位立即数#data8和16位立即数#data16。例1MOVA,#3AH;立即数3AH送累加器A图3-1MOVA,#3AH指令执行示意图,2.直接寻址方式,在这种寻址方式中,操作数项给出的是参加运算的操作数的地址。可寻址空间有特殊功能寄存器、内部数据存储器以及位地址。其中特殊功能寄存器和位地址空间只能用直接寻址方式来访问。例1MOVA,3AH;把A的内容送3AH单元。例2MOVP1,#10H;将立即数10H送P1口。注意:例2中的目的操作数P1是直接寻址方式,这里用符号P1代替了直接地址90H。,图3-3MOVA,3AH指令执行示意图,3.寄存器寻址方式寄存器寻址是对选定的工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR和进位CY中的数进行操作。例1.MOVA,R2;将当前工作寄存器的内容送累加器A。(指令代码为1字节EA注意R2在片内RAM的位置,它由RS0、RS1决定。如PSW中RS1、RS0的值分别为1、0,则现在的R2属于第二组工作寄存器,那么它的地址为12H。现已知12H中存放着数值4AH,则执行该指令后,4AH就被送到A累加器中。,图3-4MOVA,R2指令执行示意图,4.寄存器间接寻址方式,在这种寻址方式中,操作数所指定的寄存器中存放的不是操作数本身,而是操作数的地址。这种寻址方式用于访问片内数据存储器或片外数据存储器。间接寻址寄存器:Ri(8位地址指针)和DPTR(16位地址指针),间接寻址寄存器前加表示间址操作。例1MOVR0,#50HMOVA,R0例2MOVDPTR,#2760HMOVXDPTR,A,图3-5MOVA,R0指令执行示意图,5.变址寻址(基址寄存器变址寄存器的间接寻址)变址寻址方式中使用DPTR或PC作基址寄存器,累加器A作变址寄存器。采用变址寻址的指令只有三条:MOVCA,A+DPTRMOVCA,A+PCJMPA+DPTR前两条用于程序存储器的查表操作,后一条用于程序的分支散转。,例1现假设MOVCA,ADPTR指令存放在70H单元,ACC中原存放值为E0H,DPTR中值为2000H,则ADPTR形成的地址为20E0H。20E0H单元中内容为47H,则执行该指令后,ACC中原E0H被47H代替。该指令执行过程示于图3-7。,6.相对寻址方式相对寻址是将程序转移到相对地址的转移指令。是将程序计数器PC中的当前内容(转移指令的下一条指令地址)与转移指令第二字节所给出的偏移量相加,其结果作为跳转指令的转移地址。偏移量为带符号的数,其范围为+127128。程序设计中,相对地址可以用指令标号或直接地址偏移量数值,但要注意,相对转移地址的偏移量不得超过+127128。,例1JC03H,该指令表示若进位C0,则程序顺序执行,PCPC+2;若进位C1,则以PC中的当前内容为基地址,加上偏移量03H后所得到的结果为该转移指令的目的地址。,图3-8JC03H指令执行示意图,7.位寻址方式位寻址空间:片内RAM的位寻址区(20H2FH单元的128位)和SFR中的可位寻址的位单元。位累加器:在进行位操作时,借助于进位位C作为操作累加器。位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码来区分,使用时需予以注意。例1SETB3DH;将片内RAM位地址3DH即27H单元的第5位置“1”。例2ANLC,3DH;将3DH的位状态与进位位C相与,结果保留在C中。,操作数寻址方式与寻址空间,33指令系统分类介绍,3.3.1数据传送类指令(共24条)1内部RAM数据传送指令下面分类介绍:(1)累加器为目的操作数的指令MOVA,Rn;(Rn)AMOVA,direct;(direct)AMOVA,Ri;(Ri)AMOVA,data;dataA(2)以寄存器Rn为目的操作数的指令MOVRn,A;(A)RnMOVRn,direct;(direct)RnMOVRn,data;dataRn,(3)以直接地址为目的操作数的指令MOVdirect,A;(A)(direct)MOVdirect,Rn;(Rn)(direct)MOVdirect,direct;(direct)(direct)MOVdirect,Ri;(Ri)(direct)MOVdirect,data;data(direct)(4)以间接地址为目的操作数的指令MOVRi,A;(A)(Ri)MOVRi,direct;(direct)(Ri)MOVRi,data;data(Ri)(5)16位数据传送指令MOVDPTR,data16;dataHDPH,datalDPL,2外部数据传送指令MOVXDPTR,AMOVXA,DPTRMOVXRi,AMOVXA,Ri由于在80C51指令系统中,没有专门对外设的输入/输出指令,因此80C51单片机只能用这四条指令与外部设备交换数据。后2条指令使用不方便,很少使用.,例5把程序存储器ROM中起始地址为1000H,长度为20H的数据块传送到以1A00H为起始地址的外部RAM中,要求使用两个DPTR数据指针来简化程序,注意辅助寄存器AUXR1的地址为A2H。,解:根据题意可编程序如下:MOVDPTR,#1A00H;1A00H作为外部RAM首地址ORLA2H,#1;选择DPTR1MOVDPTR,#1000H;1000H作为程序存储器首地址MOVR1,#20H;数据块长度R1LP2:MOVCA,A+DPTR;取程序存储器中的数据INCDPTR;DPTR1加1ANLA2H,#0FEH;恢复RAM的指针MOVXDPTR,A;数据送到外部RAM中INCDPTR;DPTR0加1ORLA2H,#01;恢复ROM的指针DJNZR1,LP2;数据没有传送完继续,3查表指令在80C5l指令系统中,有2条极有用的查表指令,其数据表格放在程序存储器中。MOVCA,APC;(PC)lPC,(A)(PC)AMOVCA,ADPTR;((A)(DPTR)A4堆栈操作指令PUSHdirect;(SP)1SP,(direct)(SP)POPdirect;(SP)(direct),(SP)-1SP,例6执行如下程序300H:MOVA,0DH;0DHA302H:MOVCA,APC;(0DH303H)A303H:MOVR0,A;(A)R0数据表格:310H:07H311H:04H312H:0AH结果:A07H,R007H,PC304H例7执行如下程序,104H:MOVA,12H;12HA106H:MOVDPTR,2000H;2000HDPTR109H:MOVCA,A+DPTR;(12H+2000H)A数据表格:2010H:22H,34H,06H,48H结果:A06H,PC100AH,例8已知片内RAM60H单元中存放数值为86H,设堆栈指针为30H,把此数值压入堆栈,然后再弹出到50H单元中。,根据题意编写指令如下:MOVSP,#30H;30HSPPUSH60H;(SP)+1SP,(60H)(31H)POP50H;(31H)(50H),(SP)-1SP程序执行过程示于图3-11。,5交换指令XCHA,Rn;ARnXCHA,direct;A(direct)XCHA,Ri;A(Ri)XCHDA,Ri;A.3A.0(Ri.3Ri.0)SWAPA;A.3A.0A.7A.4这组指令的前三条为全字节交换指令。后两条为半字节交换指令。图3-13XCHDA,R0指令执行示意图,传送指令使用注意事项:片内存储器可以以直接寻址的方式将数据从一个单元送到另一个单元;片内存储器的任一单元可以与工作寄存器或间址寄存器指定的地址单元间相互传送数据,但是,工作寄存器之间不能直接传送数据,也不能通过间址寄存器与片内存储器传送数据;立即数可以送到以寄存器间接寻址、直接寻址的方式的片内存储器的任一单元或工作寄存器;堆栈操作只能采用直接寻址方式。传送类指令一般不影响标志位,只有堆栈操作可以直接修改程序状态字PSW。另外,传送目的操作数为ACC的指令将影响奇偶标志P。,3.3.2算术运算类指令(共23条)算术运算类指令主要是对8位无符号数据进行算术操作,其中包括加(ADD)、带进位加(ADDC)、带借位减法(SUBB)、乘(MUL)、除(DIV)、加1(INC)、减1(DEC)指令;借助溢出标志,可对有符号数进行补码运算;借助进位标志,可进行多精度加、减运算;也可以对压缩BCD数进行加法运算。,1加法指令ADDA,Rn;(A)(Rn)AADDA,direct;(A)(direct)AADDA,Ri;(A)(Ri)AADDA,data;(A)dataA2带进位加法指令ADDCA,Rn;(A)(Rn)CYAADDCA,direct;(A)(direct)CYAADDCA,Ri;(A)(Ri)CYAADDCA,data;(A)dataCYA位,3带借位减法指令SUBBA,Rn;(A)(Rn)CYASUBBA,direct;(A)(direct)CYASUBBA,Ri;(A)(Ri)CYASUBBA,data;(A)dataCYA4乘法指令MULAB;(A)(B)BA,B158,A705除法指令DIVAB;(A)(B)的商A,余数B6加一指令INCA;(A)1AINCRn;(Rn)1RnINCdirect;(direct)1(direct)INCRi;(Ri)1(Ri)INCDPTR;(DPTR)1DPTR,7减一指令DECA;(A)1ADECRn;(Rn)1RnDECdirect;(direct)l(direct)DECRi;(Ri)1(Ri)8十进制调整指令DAA,算术运算类指令汇总图,算术运算操作对PSW中标志位的影响,算术运算指令应用举例,例1已知(A)DBH,(R4)73H,CY1,执行指令“SUBBA,R4”则结果如下:(A)67H,CY0,OV1例2试编写计算1234H减0FE7H的程序,将和的高8位存入41H,低8位存入40H单元。CLRC;进位位C清“0”MOVA,#34H;34HASUBBA,#0E7H;(A)E7HCYAMOV40H,A;(A)(40H)MOVA,#12H;12HASUBBA,#0FH;(A)0FHCYAMOV41H,A;(A)(41H),3.3.3逻辑运算类指令(共25条)逻辑运算类指令主要用于对两个操作数按位进行逻辑操作,操作结果送到A累加器或直接寻址单元,若直接地址为I/O端口,则为“读-改-写”操作。这类指令执行的操作主要有“与”(ANL)、“或”(ORL)、“异或”(XRL)以及累加器自身的循环移位、取反(CPL)、清除(CLR)等。这些指令执行时一般不影响程序状态字寄存器PSW,仅当目的操作数为ACC时对奇偶标志位有影响。,1.逻辑“与”指令ANLA,Rn;(A)(Rn)AANLA,direct;(A)(direct)AANLA,Ri;(A)(Ri)AANLA,#data;(A)dataAANLdirect,A;(direct)(A)(direct)ANLdirect,#data;(direct)data(direct)2逻辑或指令ORLA,Rn;(A)+(Rn)AORLA,direct;(A)+(direct)AORLA,Ri;(A)+((Ri)AORLA,data;(A)+dataAORLdirect,A;(direct)+(A)(direct)ORLdirect,data;(direct)+data(direct),3逻辑异或指令XRLA,Rn;(A)(Rn)AXRLA,direct;(A)(direct)AXRLA,Ri;(A)(Ri)AXRLA,data;(A)dataAXRLdirect,A;(direct)(A)(direct)XRLdirect,data;direct)data(direct),4循环移位指令,5取反指令CPLA;,A,5取反指令CPLA;,A,5取反指令CPLA;(/A)A6清0指令CLRA;0A,2.逻辑运算指令举例,例1已知(A)1AH,(R0)45H,(45H)39H,执行指令ORLA,R0,则操作如下:00011010(1AH)+)00ll1001(39H),00111011(3BH)结果(A)3BH,(R0)45H,(45H)39H,P1,例2将累加器A中低4位的状态,通过P1口的高4位输出。解:根据题意可编程如下:ANLA,0FH;屏蔽A.7A.4SWAPA;高、低半字节交换ANLP1,0FH;清P1口高4位ORLP1,A;使P1.7P1.4按A中初始值的A.3A.0值置位,3.3.4转移操作类指令(共17条)这类指令的功能主要是控制程序从原顺序执行地址转移到其它指令地址上。包括跳转、调用、散转、返回及空操作等操作。1无条件转移指令LJMPaddrl6;addrl6PCAJMPaddrl1;(PC)2PC,addr11PC.10PC.0SJMPrel;(PC)2relPC2条件转移JZrel;A0:(PC)2relPCA0:(PC)2PC,JNZrel;A0:(PC)2relPCA0:(PC)2PC,DJNZRn,re1;(Rn)-1Rn,(Rn)0:(PC)2relPC(Rn)0:(PC)2PC,DJNZdirect,rel;(direct)1(direct),(direct)0:(PC)3relPC(direct)0:(PC)3PC,CJNEA,direct,rel;A(direct):(PC)3PC,0CA(direct):(PC)3relPC,0CA(direct):(PC)3re1PC,1C,CJNEA,data,rel;(A)data(PC)3PC,0C(A)data(PC)3relPC,0C(A)data:(PC)3relPC,1C,CJNERn,data,rel;(Rn)data:(PC)3PC,0C(Rn)data:(PC)3relPC,0C(Rn)data:(PC)3relPC,1C,CJNERi,data,rel;((Ri)data:(PC)3PC,0C(Ri)data:(PC)3relPC,0C(Ri)data:(PC)3relPC,1C,3间接转移指令JMPADPTR;(A)(DPTR)PC4调用子程序及返回指令LCALLaddr16;(PC)3PC,(SP)1SP,(PC.7PC.0)(SP),(SP)1SP,(PC.15PC.8)(SP),addr16PCACALLaddr11;(PC)2PC,(SP)1SP,(PC.7PC.0)(SP),(SP)1SP,(PC.15PC.8)(SP),addr11PC.10PC.0RET;(SP)PC.15PC.8,(SP)-1SP,(SP)PC.7PC.0,(SP)-1SPRETI;除具有RET指令的功能外,还将清除优先级状态触发器,详见第6章5空操作指令NOP,转移指令应用举例,例1根据R7的内容,转向各个操作程序。R70,转入OPR0R71,转入OPR1R7n,转入OPRn解:MOVDPTR,JPTAB1;跳转表首地址送数据指针MOVA,R7;R72A(修正变址值)ADDA,R7JNCNOAD;判有否进位INCDPH;有进位则加到高字节地址NOAD:JMPADPTR;转向形成的散转地址入口JPTAB1:AJMPOPR0;直接转移地址表AJMPOPR1AJMPOPRn,例2某子程序SUB1入口地址是340BH,调用指令LCALLSUB1地址为2042H,该段程序调用过程中PC及SP的变化如下:地址指令注释2040HMOVSP,#20H;设置堆栈指针,20HSP2042HLCALLSUB1;调用子程序,2045HPC,21HSP,45H(21H),22HSP,20H(22H),340BHPC340BHSUB1:MOVA,R03412HRET;(22H)PCH,(21H)PCL,此时PC2045H,SP20H,例3、根据A中数值,置相应的标志位。当#dataLA#dataH,标志位F0清零;否则F0置1。,解:ORG2000HST:CLRF0CJNEA,#dataH,HCNTRETHCNT:JCLCSF0:SETBF0RETLC:CJNEA,#dataL,LCNTRETLCNT:JCSF0RET,3.3.5位操作类指令(共17条)包括位变量传送、逻辑运算、控制程序转移等指令。在进行位操作时,位累加器C为进位标志CY。在汇编语言中位地址的表达方式有如下几种:(l)直接(位)地址方式:如D4H;(2)点操作符号方式:如PSW.4,(D0H).4;(3)位名称方式:如RS1;(4)用户定义名方式:如用伪指令BIT定义下式:SUB.REGbitRS1经定义后,指令中可以用SUB.REG代替RS1。上面4种方式都可表达PSW(

温馨提示

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

评论

0/150

提交评论