欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第3章指令系统.ppt

    • 资源ID:6356714       资源大小:979.51KB        全文页数:66页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第3章指令系统.ppt

    3.1 指令系统基本概念,标号:操作码 操作数;注释,3.1.1 指令基本格式,第3章 80C51系列单片机指令系统和汇编程序设计,标号:指令的符号地址。,用于一段功能程序的识别标记或控制转移地址。,指令前的标号代表该指令的地址,是用符号表示的地址。,一般用英文字母和数字组成。,标号必须用冒号“:”与操作码分隔。,操作码:表示指令的操作功能。,操作码用助记符表示,它代表了指令的操作功能。,操作码是指令的必需部分,是指令的核心,不可缺少。,操作数:参加操作的数据或数据地址。,操作数与操作码之间用空格分隔,操作数与操作数之间用逗号“,”分隔。,操作数可以是数据,也可以是数据的地址、数据地址的地址或操作数的其他信息。,操作数可分为目的操作数和源操作数。,操作数可用二进制数、十进制数或十六进制数表示。,操作数的个数可以是03个。,注释:指令功能说明。,注释属于非必需项,是为便于阅读,对指令功能作的说明和注解。,注释必须以“;”开始。,3.1.2 指令分类,按指令功能分类:可分为数据传送类、算术运算类、逻辑运算类、位操作类和 控制转移类 等5大类指令。,80C51共有111条指令。,按指令长度分类:可分为1字节、2字节和3字节指令。,按指令执行时间分类:可分为1机周、2机周和4机周指令。,3.1.3 指令系统中的常用符号,bit:位地址。代表片内RAM中的可寻址位00H7FH及SFR中的可寻址位。,#:立即数符。#data:8位立即数;#data16:16位立即数。,direct:8位直接地址代表内RAM 00H7FH或SFR的80HFFH。,:间接寻址符。如Ri,DPTR,A+PC,A+DPTR。,addr11:11位目的地址。addr16:16位目的地址。,rel:带符号的8位偏移地址。用于转移指令,其范围是相对于下一条指令第1字节地址的-128+127个字节。,3.2 MCS-51系列单片机的寻址方式,【例】,寻址就是寻找操作数的地址。,立即寻址,立即寻址是直接给出操作数,操作数前有立即数符“#”。,MOV A,#30H;将立即数30H传送至A中MOV DPTR,#5678H;将立即数5678H传送至DPTR,直接寻址,MOV A,3AH;将内RAM 3AH单元中的数据传送至A中MOV A,P0;将特殊功能寄存器P0口中的数据传送至A中说明:3AH和P0是以direct形式出现的直接地址,直接寻址是给出操作数的直接地址。直接寻址范围为内RAM 128B和特殊功能寄存器。,【例】,寄存器寻址,MOV A,R0;将R0中的数据传送至A中,寄存器寻址的操作数在规定的寄存器中。规定的寄存器有:工作寄存器R0R7 累加器A 数据指针DPTR这些被寻址寄存器中的内容就是操作数,【例】,寄存器间接寻址,MOV A,R0;将以R0中内容为地址的存储单元中的数据 传送至A中MOVX A,DPTR;将外RAM DPTR所指存储单元中的数据 传送至A中,间接寻址是根据操作数地址的地址寻找操作数。间接寻址用间址符“”作为前缀。,【例】,变址寻址,MOVC A,A+DPTR,【例】,在变址寻址中,操作数地址基址变址用于读ROM数据操作。,;将A的内容与DPTR内容相加,得到一个新地址,从该地址 ROM中读取数据送入A中。,MOVC A,A+PC,相对寻址一般用于相对转移指令,转移目的地址当前PC值相对偏移量rel。,;将位地址07H(字节地址20H中最 高位)中的数据传送至进位位Cy。,相对寻址,6 位寻址,位寻址是对内RAM和特殊功能寄存器中的可寻址位进行操作的寻址方式。,【例】,MOV C,07H,3.3 MCS-51系列单片机的指令系统,MOV A,Rn;RnA,n=07 MOV A,Ri;(Ri)A,i=0、1 MOV A,direct;(direct)A MOV A,#data;dataA,3.3.1 数据传送类指令,内RAM数据传送指令,以累加器A为目的字节的传送指令(4条),MOV Rn,A;ARn,n=07 MOV Rn,direct;(direct)Rn,n=07 MOV Rn,#data;dataRn,n=07,以工作寄存器Rn为目的字节 的传送指令(3条),以直接地址为目的字节的传送指令(5条),MOV direct,A;A(direct)MOV direct,Rn;Rn(direct),n=07 MOV direct,Ri;(Ri)(direct),i=0、1 MOV direct1,direct2;(direct2)(direct1)MOV direct,#data;data(direct),以寄存器间址为目的字节的传送指令(3条),MOV Ri,A;A(Ri),i=0、1 MOV Ri,direct;(direct)(Ri),i=0、1 MOV Ri,#data;data(Ri),i=0、1,2、16位数据传送指令,MOV DPTR,#data16;data16DPTR,【例】,MOV DPTR,#1234H;DPTR=1234H该指令也可以用两条8位数据传送指令实现:MOV DPH,#12H;DPH=12HMOV DPL,#34H;DPL=34H,DPTR=1234H,MOVX A,Ri;(Ri)A,i=0、1 MOVX A,DPTR;(DPTR)A MOVX Ri,A;A(Ri),i=0、1 MOVX DATR,A;A(DATR),外RAM传送指令(4条),读ROM指令(2条),内RAM(包括特殊功能寄存器):用MOV指令传送;外RAM:用MOVX指令传送;ROM:用MOVC指令传送。,MOVC A,A+DPTR;(A+DPTR)A MOVC A,A+PC;PC+1PC,(A+PC)A,三个不同的存储空间用三种不同的指令传送:,其中“MOVC A,A+DPTR”指令以DPTR作为基址,加上累加器A的内容后,所得的16位二进制数作为待读出的程序存储器单元地址,并将该地址单元的内容传送到累加器A中。这条指令主要用于查表,例如在程序存储器中,依次存放0F的七段数码显示器的字模码3F、06、5B、4F、66、6D、7D、07、7F、6F、77、7C、39、5E、79、71,则当需要在P1口输出某一数码,如“3”时,可通过如下指令实现:,查 表 指 令,MOV DPTR,#2000H;假设字模存放在2000H开始的程序存储器中,通过该指令将字模首地址;传送到DPTR寄存器中 MOV A,#03H;把待显示的数码传送到累加器A中 MOVC A,A+DPTR;2000H+03H,即2003H单元的内容(4F)读 到累加器A中 MOV P1,A;将数码“3”对应的字模码“4F”输出到P1口 ORG2000H DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,从程序存储器中读出某一字节时,也可以使用PC内容作为基址,通过“MOVC A,A+PC”取出,但使用这条指令读取ROM中表格数据时,表格数据项必须位于该指令后,灵活性差,例如:MOV A,#03H;把待显示的数码传送到累加器A中MOVC A,A+PC;PC+03H单元内容(4F)读到累加器A中DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H 由于程序存储器只能读出,不能写入,因此,也就没有写程序存储器指令。,PUSH direct;SP+1SP,(direct)(SP)POP direct;(SP)(direct),SP-1SP,堆栈操作指令(2条),PUSH为入栈指令例PUSH 30H;(30H)=2BH,具体操作是:,先将堆栈指针SP的内容(0FH)加1,指向堆栈顶的一个空单元,此时SP=10H;然后将指令指定的直接寻址单元30H中的数据(2BH)送到该空单元中。,POP为出栈指令例 POP 40H;(40H)=4CH,具体操作是:,先将SP所指单元0FH(栈顶地址)中的数据(4CH)弹出,送到指定的内RAM单元40H,(40H)=4CH;然后SP-1SP,SP=0EH,SP仍指向栈顶地址。,交换指令(5条),XCH A,Rn;ARn,n=07 XCH A,Ri;A(Ri),i=0、1 XCH A,direct;A(direct),SWAP A;A74A30,字节交换指令,半字节交换指令,XCHD A,Ri;A30(Ri)30 高4位不变。i=0、1,累加器高低四位互换,3.3.2 算术运算类指令,ADD A,Rn;A+RnA(n=07)有进位,Cy=1;无进位,Cy=0 ADD A,Ri;A+(Ri)A(i=0、1)有进位,Cy=1;无进位,Cy=0 ADD A,direct;A+(direct)A 有进位,Cy=1;无进位,Cy=0 ADD A,#data;A+dataA 有进位,Cy=1;无进位,Cy=0,加法指令,不带Cy加法指令(4条),带Cy加法指令(4条),ADDC A,Rn;A+Rn+CyA(n=07)有进位,Cy=1;无进位,Cy=0 ADDC A,Ri;A+(Ri)+CyA(i=0、1)有进位,Cy=1;无进位,Cy=0 ADDC A,direct;A+(direct)+CyA 有进位,Cy=1;无进位,Cy=0 ADDC A,#data;A+data+CyA 有进位,Cy=1;无进位,Cy=0,减法指令(4条),SUBB A,Rn;A-Rn-CyA,(n=07),有借位,Cy=1;无借位,Cy=0 SUBB A,Ri;A-(Ri)-CyA,(n=01),有借位,Cy=1;无借位,Cy=0 SUBB A,direct;A-direct-CyA,有借位,Cy=1;无借位,Cy=0 SUBB A,#data;A-data-CyA,有借位,Cy=1;无借位,Cy=0,INC A;A+1A INC Rn;Rn+1Rn,n=07 INC Ri;(Ri)+1(Ri),i=0、1 INC direct;(direct)+1(direct)INC DPTR;DPTR+1DPTR,加1减1指令,加1指令(5条),减1指令(4条),DEC A;A-1A DEC Rn;Rn-1Rn,n=07 DEC Ri;(Ri)-1(Ri),i=0、1 DEC direct;(direct)-1(direct),加1减1指令涉及 A时,会影响P,但不影响其他标志位。,DIV AB;(AB)商A,余数B Cy=0,OV=0,BCD码调整指令,DA A,功能:对加法运算结果进行BCD码调整。,乘除法指令,乘法指令(1条),MUL AB;ABBA,除法指令(1条),3.3.3 逻辑运算及移位指令,ANL A,Rn;ARnA ANL A,Ri;A(Ri)A ANL A,#data;AdataA ANL A,direct;A(direct)A ANL direct,A;(direct)Adirect ANL direct,#data;(direct)datadirect,逻辑“与”运算指令(6条),逻辑“或”运算指令(6条),ORL A,Rn;ARnA ORL A,Ri;A(Ri)A ORL A,#data;AdataA ORL A,direct;A(direct)A ORL direct,A;(direct)Adirect ORL direct,#data;(direct)datadirect,逻辑“异或”运算指令(6条),XRL A,Rn;A RnA XRL A,Ri;A(Ri)A XRL A,#data;A dataA XRL A,direct;A(direct)A XRL direct,A;(direct)Adirect XRL direct,#data;(direct)datadirect,CLR A;0A CPL A;AA,清零和取反指令,循环移位指令(4条),循环左移:RL A,带Cy循环左移:RLC A,循环右移:RR A,带Cy循环右移:RRC A,MOV C,bit;(bit)Cy MOV bit,C;Cybit,3.3.4 位操作类指令,位传送指令(2条),(1)位地址(2)位定义名(3)寄存器名.位累加器必修表示成:ACC.0ACC.7,位取反指令:CPL C;CC CPL bit;(bit)bit,位修正指令(6条),位清0指令:CLR C;0C CLR bit;0bit,位置1指令:SETB C;1C SETB bit;1bit,位逻辑“与”运算指令:ANL C,bit;C(bit)C,位逻辑“或”运算指令:ORL C,bit;C(bit)C,位逻辑运算指令(4条),短转移指令 SJMP rel;PC+2PC,PC+relPC,3.3.5 控制转移类指令,无条件转移指令(3条),长转移指令 LJMP addr16;addr150PC,,绝对转移指令 AJMP addr11;PC+2PC,addr100PC100,PC1511不变,间接转移指令 JMP A+DPTR;A+DPTRPC,LJMP、AJMP、SJMP三条无条件转移指令的区别:,转移范围不一样。LJMP转移范围是64KB;AJMP转移范围是与当前PC值同一2KB;SJMP转移范围是当前PC-128B+127B。使用AJMP和SJMP指令应注意转移目标地址是否在转移范围内,若超出范围,程序将出错。,指令字节不一样。LJMP是3字节指令;AJMP、SJMP是2字节指令。,条件转移指令(13条),条件转移指令根据判断条件可分为:判C转移 判bit转移 判A转移 减1非0转移 比较不相等转移指令 满足条件,则转移;不满足条件,则程序顺序执行。,C=0转移指令:JNC rel;PC+2PC,若Cy=0,则PC+relPC,转移 若Cy=1,则程序顺序执行。,判C转移指令(2条),C=1转移指令:JC rel;PC+2PC,若Cy=1,则PC+relPC,转移 若Cy=0,则程序顺序执行。,(bit)=1转移并清0指令:JBC bit,rel;PC+3PC,;若(bit)=1,则PC+relPC,转移,且0(bit);若(bit)=0,则程序顺序执行,判bit转移指令(3条),(bit)=1转移指令:JB bit,rel;PC+3PC,若(bit)=1,则PC+relPC,转移 若(bit)=0,则程序顺序执行,(bit)=0转移指令:JNB bit,rel;PC+3PC,若(bit)=0,则PC+relPC,转移 若(bit)=1,则程序顺序执行,A=0转移指令:JZ rel;PC+2PC,若A=0,则PC+relPC,转移 若A0,则程序顺序执行,判A转移指令(2条),A0转移指令:JNZ rel;PC+2PC,若A0,则PC+relPC,转移 若A=0,则程序顺序执行,减1非0转移指令(2条),DJNZ direct,rel;PC+3PC,(direct)-1direct 若(direct)=0,则程序顺序执行 若(direct)0,则PC+relPC,转移,DJNZ Rn,rel;PC+2PC,Rn-1Rn,若Rn=0,则程序顺序执行 若Rn0,则PC+relPC,转移,比较转移指令(4条),CJNE A,direct,rel;PC+3PC,;若A=(direct),则程序顺序执行;若A(direct),则PC+relPC,转移;且若A(direct),Cy=0;若A(direct),Cy=1,CJNE A,#data,rel;PC+3PC,;若A=data,则程序顺序执行;若Adata,则PC+relPC,转移;且若Adata,Cy=0;若Adata,Cy=1,CJNE Rn,#data,rel;PC+3PC,;若Rn=data,则程序顺序执行;若Rndata,则PC+relPC,转移;且若Rndata,Cy=0;若Rndata,Cy=1,CJNE Ri,#data,rel;PC+3PC,;若(Ri)=data,则程序顺序执行;若(Ri)data,则PC+relPC,转移;且若(Ri)data,Cy=0;若(Ri)data,Cy=1,产生当前PC:PC+3PC,(PC+3是因为该指令为三字节指令)断口地址低8位保存到堆栈中:SP+1SP,(PC)07(SP)断口地址高8位保存到堆栈中:SP+1SP,(PC)815(SP)形成转移目标地址:addr16PC,调用和返回指令,LCALL addr16;PC+3PC,SP+1SP,(PC)07(SP);SP+1SP,(PC)815(SP);addr16PC,长调用指令,LCALL指令执行步骤:,产生当前PC:PC+2PC,(PC+2是因为该指令为双字节指令)断口地址低8位保存到堆栈中:SP+1SP,(PC)07(SP)断口地址高8位保存到堆栈中:SP+1SP,(PC)815(SP)形成转移目标地址:addr11PC010,PC1115不变,短调用指令,ACALL addr11;PC+2PC,SP+1SP,(PC)07(SP);SP+1SP,(PC)815(SP);addr010PC010,PC1115不变,ACALL指令执行步骤:,(SP)PC815,SP-1SP;(SP)PC07,SP-1SP。,返回指令:,返回指令有子程序返回和中断返回两种:,RET;子程序返回 RETI;中断返回,返回指令执行步骤:,空操作指令(1条),NOP为单机周指令,在时间上占用一个机器周期,常用于时间“微调”。,NOP;PC+1PC,3.4.1 汇编程序伪指令,在汇编时起控制作用,自身并不产生机器码,而仅是为汇编服务的一些指令,称为伪指令。伪指令不属于80C51指令系统。常用的伪指令有以下几种:,起始伪指令 ORG(Origin),功能:规定ORG下面目标程序的起始地址。,格式:ORG 16位地址,功能:将一个数据或特定的汇编符号赋予规定 的字符名称。,结束伪指令 END,功能:汇编语言源程序的结束标志。在END后面的指令,汇编程序不再处理。,格式:END,等值伪指令 EQU(Equate),格式:字符名称 EQU 数据或汇编符号,数据地址赋值伪指令 DATA,格式:字符名称 DATA 表达式,功能:将数据地址或代码地址赋予规定的 字符名称。,定义字节伪指令DB(Define Byte),格式:DB 8位二进制数表,功能:从指定的地址单元开始,定义若干 个8位内存单元的数据。数据与数据之间用“,”分割。,格式:字符名称 BIT 位地址,定义字伪指令DW(Define Word),格式:DW 16位二进制数表,功能:从指定的地址单元开始,定义 若干个16位数据。,定义位地址伪指令BIT,功能:将位地址赋予所规定的字符名称。,汇编和调试,程序设计的基本方法,编写程序要求:不仅要完成规定的功能任务,而且还要求:执行速度快、占用内存少、条理清晰、阅读方便、便于移植、巧妙而实用。一般应按以下几个步骤进行:,分析问题,确定算法或解题思路,画流程图,编写源程序,顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。顺序程序结构虽然比较简单,但也能完成一定的功能任务,是构成复杂程序的基础。,3.4.2 顺序程序,CONT:MOV A,R0;读低8位CPL A;取反ADD A,#1;加1MOV R2,A;存低8位MOV A,R1;读高8位CPL A;取反ADDC A,#80H;加进位及符号位MOV R3,A;存高8位RET;,【例】已知16位二进制负数存放在R1R0中,试求其补码,并将结果存在R3R2中。,解:二进制负数的求补方法可归结为“求反加1”,符号位不变。利用CPL指令实现求反;加1时,则应低8位先加1,高8位再加上低位的进位。注意这里不能用INC指令,因为INC指令不影响标志位。,程序如下:,根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。80C51指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。,3.4.3 分支程序,【例】已知电路如下图所示,要求实现:,按键按下,绿灯亮,按键弹出蓝灯亮。,解:程序如下:mov a,#0ffhmov P1,a aa:jnb p1.2,loop1loop:clr p1.0setb p1.1jmp aaloop1:clr p1.1setb p1.0jmp aaend,循环程序一般包括以下几个部分:循环初值;循环体;循环修改;循环控制;以上四部分可以有两种组织形式,其结构如下图所示。,3.4.4 循环程序,【例】编写延时10ms子程序,fosc=12MHz。解:fosc=12MHz,一个机器周期为1s。DY10ms:MOV R6,#20;置外循环次数DLP1:MOV R7,#250;置内循环次数DLP2:DJNZ R7,DLP2;2机周250=500机周 DJNZ R6,DLP1;500机周20=10000机周 RET;说明:MOV Rn指令为1个机器周期;DJNZ指令为2个机器周期;RET指令为2个机器周期;(2机周250)+1+220+1+21s/机周=10063s10ms,设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反相三态缓冲/驱动器)接8只发光二极管,如下图所示。当输出位为“1”时,发光二极管点亮,输出位为“0”时为暗。试编程实现:每个灯闪烁点亮10次,再转移到下一个灯闪烁点亮10次,循环不止。,【例】编制一个循环闪烁灯的程序。,org 00jmp flashDY100ms:MOV R6,#200;置外循环次数DLP1:MOV R7,#250;置内循环次数DLP2:DJNZ R7,DLP2;2机周250=500机周 DJNZ R6,DLP1;500机周20=10000机周 ret FLASH:MOV A,#0feH;置灯亮初值FSH0:MOV R2,#0AH;置闪烁次数FLOP:MOV P1,A;点亮 LCALL DY100ms;延时1s MOV P1,#0ffH;熄灭 LCALL DY100ms;延时1s DJNZ R2,FLOP;闪烁10次 RL A;左移一位 SJMP FSH0;循环 end,解:程序如下:,延时子程序可根据延时长短,自行编写。,

    注意事项

    本文(第3章指令系统.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开