欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    [信息与通信]第3章80C51的指令系统.ppt

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

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

    [信息与通信]第3章80C51的指令系统.ppt

    第3章 80C51的指令系统,指令格式及常用符号,3.1,80C51的寻址方式,3.2,数据传送指令 (29条),3.3,算数运算指令 (24条),3.4,逻辑运算与循环类指令(24条),3.5,控制转移类指令 (17条),3.6,位操作类指令 (17条),3.7,指令: CPU按照人们的意图完成某种操作的命令。 指令系统: 一台计算机的CPU所能执行的全部指令的集合。 机器指令:计算机能直接识别和执行的指令,是二进制编码(特点:运行速度快,占内存容量小,比高级语言编写的程序效率高得多,故广泛用于实时控制;指令本身是二进制代码,记忆困难)。 符号指令:采用助记符和其他一些符号来编写指令程序(经过一种称为汇编程序的软件的翻译,可变成机器可执行的目标程序)。,(1)指令执行时间短。单机器周期指令64条,双机器周期指令45条,四机器周期指令2条(乘法和除法指令)。 (2)指令编码字节少。单字节指令49条,双字节指令45,三字节指令17条。 (3)具有丰富的位操作指令。,80C51单片机指令系统特点(共111条),3.1 指令格式及常用符号,3.1.1 机器指令的字节编码形式,8位编码仅为操作码,单字节指令(49条),如:INC A 编码为:,即:04H,8位编码含操作码和寄存器编码,如:MOV A,R0 编码为:,即:E8H,操作码,操作码,寄存器编码,在80C51指令中,一般指令主要由操作码、操作数组成。,指令中“A”表示累加器,“ACC”表示累加器对应的地址(E0H)。,双字节指令(45条),三字节指令(17条),如:MOV A,#50H 编码为:,即:74H 50H,如:MOV 20H,#50H 编码为:,即:75H 20H 50H,操作码,操作数,操作码,操作数,操作数,书写格式,注意: 操作助记符不能缺少 操作数个数可为:1、2、3个 2个操作数的指令,目的操作数在左边,一般格式 操作助记符 目的操作数,源操作数;注释,3.1.2 符号指令的书写格式,比较:MOV A,#30H MOV ACC,#30H,机器码:74H、30H 机器码:75H、E0H、30H,描述符号,Rn(n=07)-当前工作寄存器组中的寄存器R0R7之一 Ri(i=0,1)-当前工作寄存器组中的寄存器R0或R1 -间址寄存器前缀 #data -8位立即数 #data16-16位立即数 direct-片内低128个RAM单元地址及SFR地址 addr11-11位目的地址,用于2K范围内寻址 addr16-16位目的地址,用于64K范围内寻址 rel-8位地址偏移量,范围:128127 bit-片内RAM位地址、SFR的位地址 / -位操作数的取反操作前缀 (×)-表示 × 地址单元或寄存器中的内容 (×)-表示以×单元或寄存器内容为地址 所指定单元的内容 -数据传送方向 -数据交换,3.2 80C51的寻址方式,在程序行中,操作码代表了该句指令的功能,而功能的对象却由操作数决定,由操作数指出参与运算的数或该数所在的地址。指令中所规定的寻找(源)操作数或指令转移地址的方式叫寻址方式。寻址方式与计算机的存储空间结构是密切相关的。灵活运用各种寻址方式,可以大大的提高程序的运行效率。,80C51基本七种寻址方式,3.2.1 寄存器寻址,操作数在寄存器中 寻址空间 R0R7 A(使用符号ACC表示累加器时属于直接寻址) B(以AB寄存器对形式出现) DPTR,特点 传送和执行速度快,【例】若(R0)=30H,,执行MOV A,R0后,(A)=30H,3.2.2 直接寻址,操作码后字节存放的是操作数的地址 寻址空间 片内RAM低128字节 SFR(符号形式) 例:MOV A,90H MOV A,P1,另一类直接寻址是转移目标地址的寻址。如: LJMP ADDR16 LJMP ADDR11,【例】若(50H)=3AH ,,执行MOV A,50H后,(A)=3AH,3.2.3 寄存器间接寻址,寄存器中的内容是操作数的地址 寻址空间 片内RAM的00H-7FH单元中的数据 (Ri、SP) 片外RAM的00H-7FH单元中的数据 (Ri) 片外RAM的全部64K单元 (DPTR),【例】若(R0)=30H, (30H)=5AH,执行MOV A,R0后, (A)=5AH,片内:MOV 片外:MOVX,寄存器间址指令不能用于寻址特殊功能寄存器; 寄存器间接寻址用符号“”。,MOV A, R0; (R0)A,MOV A, R0; R0A,3.2.4 立即寻址,操作数在指令编码中 操作数是一个8位二进制数或16位二进制数,操作码后面的内容就是操作数,用“#”表示,指令中出现的操作数称为立即数。 寻址空间 ROM,对于MOV DPTR,#2100H指令,操作码为90H 立即数高8位“21H”装入DPH,低8位“00H”装入DPL,【例】执行MOV A,#50H,结果:(A)=50H,比较:MOV A,#50H,3.2.5 变址寻址(基址寄存器+变址寄存器间接寻址),操作数地址:基地址+偏移量 以某个寄存器的内容为基地址,在这个基本地址的基础上加上地址偏移量才是真正的操作数地址,并将这个地址单元的内容作为指令的操作数。 寻址空间:ROM 80C51 有两个基址寄存器:DPTR、PC 地址偏移量是A的内容,应为8位无符号数,变址寻址还用于跳转指令,如JMP A+DPTR,MOVC A , A+DPTR; (DPTR+A)A,MOVC A , A+PC; PC+1 PC, (A+ PC) A,例:MOVC A,A+DPTR 设 DPTR=2000H,A=E0H,20E0H,47,指令代码,机器码:93H,例:MOVC A,A+PC 设 A=E0H,2121H,45,当前PC,指令代码,机器码:83H,3.2.6 相对寻址,用于跳转指令,实现程序分支 以当前PC的内容作为基地址,加上指令中给定的偏移量rel形成实际的转移地址(一般将相对转移指令操作码所在的地址为源地址,转移后的地址为目的地址)。 相对地址偏移量rel,是一个带符号的8位二进制补码,取 值范围为-128+127 80C51有两类相对转移指令:双字节相对转移指令和三字节 相对转移指令 目的地址=源地址+2或3(相对转移指令字节数)+rel,二字节的转移指令 SJMP rel; (PC+2 +rel) PC (相对转移指令),PC: 2000H 机器码: 8054H (rel=54H),目的地址=2000H+02H+54H=2056H,例:SJMP rel,2056H,2056H ,2002H,54H,2002H,指令代码,当前PC,【例】若rel为75H,PSW.7为1,JC rel存于1000H开始的单元。,执行JC rel指令后,程序将跳转到1077H单元取指令并执行。,编程时,常将目标地址用一个自定义的符号地址表示。,3.2.7 位寻址,寻址位数据(对位地址中的内容进行操作的寻址方式) 寻址空间 片内RAM位空间 SFR位空间,【例】位地址00H内容为1,MOV C,00H执行后,位地址PSW.7的内容为1。,位寻址方式实质属于位的直接寻址。,例:CLR ACC.0,3.3 数据传送类指令(29条),一般不影响标志寄存器PSW的状态(除了目的操作 数为ACC的指令影响奇偶标志P),传送类指令有两大类 一般传送( MOV ) 特殊传送,如: MOVC MOVX PUSH、POP XCH、XCHD SWAP,通用格式: MOV , 属“复制”性质,而不是“搬家”。,3.3.1 一般传送指令,16位传送(仅1条),MOV DPTR,#data16; DPTR data16,例:执行指令 MOV DPTR,#1234H 后 (DPH)=12H,(DPL)=34H。,目的字节,源字节,源字节与目的字节不同(除direct外) Rn寄存器寻址与寄存器间接寻址(R1间不相互传送),以A为目的,【例】若(R1)= 20H,(20H)= 55H。执行指令 MOV A,R1 后,(A)= 55H。,8位传送,以Rn为目的,【例】执行指令 MOV R6,#50H 后,(R6)= 50H,以direct为目的,【例】若(R1)=50H,(50H)=18H,执行指令 MOV 40H,R1 后,(40H)=18H,SFR空间只能采用直接寻址方式访问。形式上通常采用寄存器符号名称代替具体地址。,MOV SBUF,A MOV 99H,A,汇编后目标代码:F5H,99H,以Ri为目的,【例】若(R1)=30H,(A)=20H,执行指令 MOV R1,A 后,(30H)=20H。,3.3.2 特殊传送指令,以DPTR内容为基址,读ROM中常数表项指令MOVC,ROM中可以存放程序代码,还经常存放常数表,MOVC A,A+DPTR;A (A)+(DPTR),以PC内容为基址,MOVC A,A+PC ;PC PC+1, A(A+ PC),常数表存放约束小,称为远程查表指令。占用DPTR,常数表存放约束大,称为近程查表指令。不占用DPTR,MOVC、MOVX、PUSH、POP、XCH、XCHD、SWAP 。,读片外RAM,读片外RAM及接口单元数据的指令MOVX,片外RAM中经常存放数据采集与处理的中间数据,MOVX A,DPTR ;A (DPTR) MOVX A,Ri ;A (Ri),写片外RAM,MOVX DPTR,A ;(DPTR)A MOVX Ri,A ;(Ri)A,注意:用Ri寻址时,高8位地址由P2口提供,1.在80C51中,与外部存储器RAM打交道的只可以是A累加器。 所有需要送入外部RAM的数据必需要通过A送去,而所有 要读入的外部RAM中的数据也必需通过A读入。 内外部RAM的区别:内部RAM间可以直接进行数据的传 递,而外部则不行。 例如,要将外部RAM中某一单元(设为0100H单元的数据) 送入另一个单元(设为0200H单元),也必须先将0100H 单元中的内容读入A,然后再送到0200H单元中去。,说明,2.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用 读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPTR,A,注意:片外扩展的I/O接口也要利用读、写片外RAM指令进行数据的输入/输出。,【例】若(P2)=20H,(R1)=48H,(A)=66H,执行指令 MOVX R1,A 后,外部RAM单元2048H的内容为66H。,入栈指令PUSH,堆栈操作指令PUSH和POP,堆栈是一片存储区,遵循“后进先出”原则,栈顶由SP指示。 80C51的堆栈设在片内RAM低端的128个单元,向上生长(地址增大)。,PUSH direct ;SP(SP)1,(SP)(direct),出栈指令POP,POP direct ;(direct)(SP),SP (SP)1,注:堆栈用于子程序调用时保护返回地址,或者用于保护子程序调用之前的某些重要数据(即保护现场),还可以用于数据交换。,利用堆栈完成40H与50H单元内容的交换的示例,MOV SP,#6FH;将堆栈设在70H以上RAM空间 PUSH 40H ;将40H单元的“23H”入栈,之后(SP)=70H PUSH 50H ;将50H单元的“45H”入栈,之后(SP)=71H POP 40H ;将SP指向的71H单元的内容弹到40H单元,之后(SP)=70H POP 50H ;将SP指向的70H单元的内容弹到50H单元,之后(SP)=6FH,(a)初始状态 (b)2条PUSH指令执行后 (c)2条POP指令执行后,注:如果将PUSH ACC写成PUSH A,有的汇编器可能无法识别;POP指令也一样。,字节交换指令XCH,数据交换指令XCH、XCHD和SWAP,数据交换属于同时进行的双向传送,【例】若(R0)=80H,(A)=20H。 执行指令 XCH A,R0 后, (A)=80H,(R0)=20H。,半字节交换指令XCHD,XCHD是间址操作数的低半字节与A的低半字节互换 SWAP是累加器的高低4位互换,例:已知A中的内容为34H MOV R6, #29H XCH A, R6 SWAP A XCH A, R6 XCHD A, R0,;R6=29H ;A=29H,R6=34H ;A=92H ;A=34H,R6=92H ;A=36H,(R0)=54H (设原来R0 ;指向的单元的内容为56H),3.4 算数运算类指令(24条),算数运算结果要影响PSW中标志位,CY为1,无符号数(字节)加减发生进位或借位 OV为1,有符号数(字节)加减发生溢出错误 AC为1,十进制数(BCD码)加法的结果应调整 P为1,存于累加器A中操作结果的“1”的个数为奇数,标志位意义,标志位与相关指令影响,算数运算影响标志位示例,【例】有2个参与相加的机器数,一个是84H,另一个是8DH。试分析运算过程及其对状态标志的影响。,结果:CY为1;AC为1 ;OV为1 ;P为0,3.4.1 加法,不带进位加法,【例】若有2个无符号数存于累加器A和RAM的30H单元,即(A)=84H,(30H)=8DH,试分析执行指令 ADD A,30H 后的结果。,由于对无符号数相加,要考察CY。由上页图可知,CY=1,因此知道运算的结果发生了进位,即实际值应该是100H+11H。,所以,编程者应确保单字节无符号数运算结果不要超过255。,【例】若有2个有符号数存于累加器A和RAM的30H单元,即(A)=84H,(30H)=8DH,试分析执行指令 ADD A,30H 后的结果。,有符号数相加,只需考察溢出标志OV即可。由上图可见OV=1,因此可知运算的结果发生了溢出,这说明累加器A中的结果已经不是正确的值了。,编程者应确保单字节有符号数运算结果不超过-128127。否则,就要将数据用多字节表示或在程序运行中对状态标志进行判断:,无符号数用JNC或JC,有符号数要用JNB或JB。,带进位加法(这组指令方便了多字节加法的实现),加1,十进制调整,DA A ;调整A的内容为正确的BCD码,两个压缩的BCD码按二进制相加后,必须经过调整方能得到正确的和。,当A中低4位出现了非BCD码(10101111)或低4位的进位AC=1,则应在低4位加6调整。 当A中高4位出现了非BCD码(1010 1111)或高4位的进位CY=1,则应在高4位加6调整。,执行十进制调整指令后,PSW中的CY表示结果的百位值,3.4.2 减法,带借位减法,用此组指令完成不带借位的减法,只需先清CY为0即可,CY为1,表示D7位需借位 AC为1,表示D3位需借位 OV为1,表示“D6有借位D7无借位”或“D7有借位D6无借位”,【例】若(A)=C9H,(R2)=54H,(CY)=1,试分析指令SUBB A,R2执行后,累加器的内容及状态标志。,即:(A)=74H,(CY)=0,(AC)=0,(OV)=1,(P)=0。,分析:数据为无符号类型。该指令执行前CY=1,说明此指令不是运算的最低字节,即在此指令执行之前,一定执行过低字节的减法并产生了借位。因此,本次相减(201-1-84=116=74H)结果为74H。,减1,这组指令仅 DEC A 影响P标志。其余指令都不影响标志位的状态。,3.4.3 乘法,仅有一条乘法指令,MUL AB ;A与B相乘,无符号 结果:B中为积的高8位,A中为积的低8位。 CY总是被清0;OV=1表示积大于FFH,3.4.4 除法,仅有一条除法指令,DIV AB ;A除以B,无符号 结果:A中为商的整数部分,B中为余数 CY总是被清0;OV=1表示除数为0,3.5 逻辑运算与循环类指令(24条),3.5.1 逻辑与,逻辑:与、或、异或、清0和取反 循环:左、右移,带进位位左、右移,【例】(A)=C3H,(R0)=AAH,执行指令 ANL A,R0 后,(A)=82H,与操作常用于对某些不关心位进行“清0”,同时“保留”另一些关心位,【例】检测P1口低4位,高4位不关心。可执行指令 MOV A,P1 ANL A,#0FH;A的高4位清0,低4位与P1口低4位状态相同,3.5.2 逻辑或,【例】(A)=C3H,(R0)=55H,执行指令 ORL A,R0 后,(A)=D7H,或操作常用于对某些关心位进行“置1”,不关心位保持不变,【例】将P1口的高4位设置为高电平,其他位不变。可执行指令 ORL A,#0F0H,3.5.3 逻辑异或,【例】(A)=C3H,(R0)=AAH,执行指令 XRL A,R0 后,(A)=69H,异或操作常用于对某些关心位进行“取反”,不关心位保持不变,【例】(P1)=59H,高4位取反,其他位不变。可执行指令 XRL P1,#0F0H;(A)=A9H,3.5.4 逻辑清0和取反,3.5.5 累加器循环移位,3.6 控制转移类指令(17条),3.6.1 无条件转移,短跳转,AJMP addr11 ;PC (PC)+ 2,PC100 addr11,PC高5位 (保持不变),PC低11位,操作码(第一字节),操作数(第二字节),11位转移地址的形成示意图,程序计数器PC,AJMP addr11 ; PC+2PC, addr11 PC.10PC.0,【例】若标号“NEWADD”为转移目的地址0123H,PC的当前值为0343H。执行指令 AJMP NEWADD 后,(PC)=0345H(指定页:0000H07FFH,即页0)。,PC,PC(PC)+2,0123H,AJMP指令落在某页的后2个单元时(如0FFEH、0FFFH),目标地址将在下一页内。,长跳转,LJMP addr16 ;PC addr16,相对转移,SJMP rel ;PC (PC)+ 2,PC (PC)+ rel,目标地址rel 对应范围为 127 128。,【例】若“NEWADD”为地址1022H,PC的当前值为1000H。执行指令 SJMP NEWADD 后,程序将转向1022H处执行(rel=20H= 1022H1000H2)。,散转移,JMP A+DPTR;PC (PC)+ 1,PC (A)+(DPTR),可完成多条判跳指令的功能,【例】功能:当(A)=00H时,程序将转到 ROUT0处执行;当(A)=02H时,程序将转到 ROUT1处执行;。,MOV DPTR,#TABLE JMP A+DPTR TABLE:AJMP ROUT0 AJMP ROUT1 AJMP ROUT2 AJMP ROUT3,无条件转移指令 的几点说明,短跳转指令: AJMP addr11 长跳转指令: LJMP addr16 相对转移指令:SJMP rel 散转移指令: JMP A+DPTR,(1)前三条指令,可理解成:PC值改变,即跳转到一个标号处。 它们的区别在于:,跳转的范围不同,绝对转移指令:AJMP addr11,2KB 长转移指令: LJMP addr16,64KB 短转移指令: SJMP rel,-128+127,指令构成不同,AJMP、LJMP后跟的是绝对地址, SJMP后跟的是相对地址,指令长度不同 原则上,所有用SJMP或AJMP的地方都可以用LJMP来替代,变址方式的转移指令:JMP A+DPTR,这条指令的用途也是跳转,具体跳转到什么地方,不能由标号简单地决定。 转移地址由A+DPTR形成,并直接送入PC。指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,多用于多分支程序结构中。,(2)第四条指令与前三条指令相比有所不同,表3-1 程序存储器空间32个2K地址范围,3.6.2 条件转移,累加器判0转移,【例】若(A)=00H,则: JNZ L1 ;程序继续执行 INC A ;(A)=01H JNZ L2 ;程序转向L2处执行,比较不等转移,减1不为0转移,【例】有一段程序如下,该程序执行后, (A)=10+9+8+7+6+5+4+3+2+1=37H,MOV 23H,#0AH CLR A LOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP $,3.6.3 调用与返回,调用,指令执行时将返回地址入栈 SP应设为合适值(默认值07H),两者区别: 对短调用指令,被调用子程序入口地址必须与调用指令的下一条指令的第一字节在相同的2KB存储区之内。,【例】若(SP)=07H,标号“XADD”表示的实际地址为0345H,PC的当前值为0123H。 执行指令 ACALL XADD 后: 返回地址为:(PC)+2=0125H。其低8位的25H压入堆栈的08H单元,其高8位的01H压入堆栈的09H单元(低地址对应于低字节)。 (PC)=0345H,程序转向目标地址0345H 处执行。,返回,RETI专用于中断服务程序返回,它具有清除内部相应的中断状态触发器(以保证正确的中断逻辑)的功能。,3.6.4 空操作,NOP ;PC (PC)+ 1,占1个周期、一个字节,堆栈栈顶内容(2字节,调用时保存的当前PC值)弹出给PC,实现返回。,执行时,不作任何操作(即空操作),仅将程序计数器PC的内容加1,使CPU指向下一条指令继续执行程序。这条指令常用来产生一个机器周期的时间延迟。,3.7 位操作类指令(17条),位操作是以位为单位进行的各种操作。位操作指令中的位地址有4 种表示形式:,直接地址 (如,0D5H); 点操作符 (如,0D0H.5、PSW.5等); 位名称 (如,F0); 伪指令定义(如,MYFLAG BIT F0)。 以上几种形式表示的都是PSW中的位5。,位操作指令中,位累加器要用“C”表示(注:而CY与具体的直接位地址D7H对应)。,3.7.1 位传送,MOV bit,C ;bit(CY) MOV C ,bit ;CY (bit),3.7.2 位状态设置,位清0,位置位,3.7.3 位逻辑运算,位逻辑与,位逻辑或,位取反,判CY转移,判bit转移,3.7.4 位判跳(条件转移),;若(CY)=1,PC(PC)+2+rel,否则顺次执行。 ;若(CY)=0;PC(PC)+2+rel;否则顺次执行。,;(bit)=1,PC(PC)+3+rel,否则顺次执行。 ;(bit)=1,PC(PC)+3+rel,bit 0,否则顺次执行 ;(bit)=0,PC(PC)+3+rel,否则顺次执行,功能:分别检测指定位是1还是0,若条件符合,则CPU转向指定的目标地址去执行程序;否则,顺序执行下条指令。,

    注意事项

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

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开