单片机原理及应用(3b).ppt_第1页
单片机原理及应用(3b).ppt_第2页
单片机原理及应用(3b).ppt_第3页
单片机原理及应用(3b).ppt_第4页
单片机原理及应用(3b).ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1,单 片 机 原 理 及 应 用,穆道明 电气与自动化工程学院自动化系,2,第3章 80C51 单片机指令系统,指令的功能:,指令是实现编程人员的逻辑思维的载体。,指令集合-程序,3,第3章 80C51 单片机指令系统,3.1 单片机指令系统概述,指令是规定计算机基本操作的语句或命令。一条指令代表一项基本操作。,指令由操作码和操作数两部分组成 MOV A,#23H 74H,23H 74H为操作码 23H为操作数,指令的原始代码用二进制代码表示,指令是以二进制代码的形式存在程序存储器中。,这种二进制代码表示的指令称为机器语言!,4,第3章 80C51 单片机指令系统,为了人们的记忆,便使用符号来表示指令,即以指令的英文名称的缩写来表示指令,以起到助记的作用。以助记符表示的指令称为汇编指令。,汇编指令和二进制代码指令是一一对应的。,一个计算机所能执行的指令集合,即为指令系统。,为什么使用汇编语言编程:,汇编语言的编程长度短、执行速度快。,5,源程序编写的过程 称为编辑。,用汇编语言编写的程序称为汇编语言源程序。,单片机指令,伪指令,宏指令,源程序,编辑程序,交叉汇编程序,目标文件,列表文件,用于单片机的运行,第3章 80C51 单片机指令系统,6,第3章 80C51 单片机指令系统,MCS-51指令中使用的部分符号的意义 Rn 当前寄存器组的8个通用寄存器R0R7 ,n=07 Ri 可用作间接寻址的寄存器,只能是R0、R1,i=0,1 direct 八位直接地址,在指令中表示直接寻址方式,寻址范围256B 单元 #data 八位立即数 #data16 16位立即数 addr16 16位目的地址,只能在LCALL 和LJMP指令中使用 addr11 11位目的地址,只能在ACALL 和AJMP指令中使用 rel 相对转移指令中的偏移量,为8位带符号的补码树 DPTR 数据指针 A 累加器 ACC 直接寻址方式的累加器 B 寄存器 Baddr16 16位目的地址,只能在LCALL 和LJMP指令中使用 C 进位标志位,是布尔处立即的累加器 间接寻址寄存器的前缀标志,7,第3章 80C51 单片机指令系统,3.2 80C51 单片机指令的寻址方式,取得操作数的方式 寻址方式。,80C51 指令系统共有 七 种寻址方式。,1. 寄存器寻址方式,操作数在寄存器中指定寄存器就能得到操作数。,MOV A,Rn n=07,MOV DPTR,#0300H DPTR为寄存器寻址方式,MUL AB AB为寄存器寻址方式,8,2. 直接寻址方式,第3章 80C51 单片机指令系统,指令中操作数直接以存储单元地址的形式给出。,MOV A,30H ;内部RAM的低128B MOV A,P1 ;特殊功能寄存器,3. 寄存器间接寻址方式 “”,MOV A,Ri ; 内部RAM低128字节的寻址范围,MOVX A,DPTR;外部RAM的64K MOVX A,Ri ;外部RAM的64K,PUSH 32H ; 压栈指令,9,第3章 80C51 单片机指令系统,4. 立即寻址 方式 “ ”,MOV A,#50H (74H,23H) 50H A MOV DPTR,#0300H(90H,03H,00H) MOV 30H,#00H(75H,00H) 片内RAM里的内容为00H,30H,00H,就是操作数在指令中直接给出。,10,第3章 80C51 单片机指令系统,5:变址寻址方式,MOVC A,A+DPTR,JMP A+DPTR,MOVC A,A+PC,变址寻址是为了访问程序存储器中的数据表格。,以DPTR或PC作为基址寄存器,以A为变址寄存器。并以两者内容相加的和形成16位的地址作为操作数的地址。,11,第3章 80C51 单片机指令系统,6. 位寻址方式,位寻址指令中直接指出操作数的位地址。,MOV C,3AH,位地址可以是:,内部RAM的位寻址区00H0FFH(20H2FH)128位。,专用寄存器的可寻址位,25H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH,C=“1”,12,第3章 80C51 单片机指令系统,7. 相对寻址方式,此种寻址是解决程序转移的地址而设置的,PC = PC +rel,偏移量(为代符号数-128+127)。,当前指令的下条指令的地址,得数为要转移的地址。,13,第3章 80C51 单片机指令系统,3.3 80C51 单片机指令分类介绍,MCS-51指令系统共有:111条指令。,分为数据传送、数据传送、逻辑运算及位移、控制程序转移、位操作五大类,其中:,数据传送类: 29条,算术运算类: 24条,逻辑运算及位移类:24,控制程序转移类:17,位操作类:17,14,第3章 80C51 单片机指令系统,指令长度: 单字节指令:49 双字节指令:46 三字节指令:16,执行时间: 单机器周期:64 双周期:45 四周期:2,15,第3章 80C51 单片机指令系统,3.3.1 数据传送类指令,传送指令共有29条 ,使用最频繁 ,操作码助记符为: MOV,(1) 片内数据传送指令,目标,源,A,Rn,#data,direct,Ri,A,Rn,Ri,direct,DPTR,-,E5H,F8HFFH,74H,78H7FH,76H77H,90H,16位,F6F7H,F5H,E8HEFH,E6HE7H,A8HAFH,A6A7H,88H8FH,86H87H,85H,-,-,-,-,-,-,-,-,75H,注:n=07 i=0,1,16,第3章 80C51 单片机指令系统,例 : MOV A,32H,32H,A,5AH,5AH,35H,结果 A= 5AH, 32H单元的内容不变,17,第3章 80C51 单片机指令系统,例 : MOV R0,33H,(R0=30H 即R0的内容为30H),33H,32H,31H,30H,(R0),源操作数,目标操作数,5AH,45H,6BH,78H,执行,5AH,结果 R0=(30H)=5AH,18,第3章 80C51 单片机指令系统,(2)访问片外RAM的传送指令 只有4条(MOVX),MOVX A,Rj MOVX Rj, A 8位地址 MOVX A, DPTR MOVX DPTR, A 16地址,19,第3章 80C51 单片机指令系统,(3)访问程序存储器的传送指令: (MOVC) 因为程序存储器为只读存储器 ,所以指令只有以 A为目的操作数的指令 MOVC A , A + DPTR MOVC A , A+PC,例 MOVC A,A+DPTR,A= 02H,DPTR= 2000H,2000H,2001H,2002H,2003H,20H,43H,64H,BCH,执行,DPTR+A= 2000H+02H=2002H,A,02H,64H,片内,片外,20,第3章 80C51 单片机指令系统,例 MOVC A,A+PC,A= 02H,本指令的地址为2000H,2000H,2001H,2002H,2003H,20H,43H,64H,BCH,执行,PC+A= 2001H+02H=2003H,A,02H,64H,BCH,片内,片外,21,第3章 80C51 单片机指令系统,(4)交换指令 有5条 A 为目标操作数 XCH A,Ri XCH A, Rj XCH A, direct XCHD A, Rj SWAP A,例: A=34H,R1=35H, (35H)=5AH 执行 XCHD A,R1,35H,A,3,4,H,H,H,5,A,执行,R1=35H,22,5AH,第3章 80C51 单片机指令系统,(5) 堆栈操作指令 PUSH direct 进栈 SP+1 SP ,(direct) (SP) POP direct 出栈(SP) (direct), SP-11 SP,例: 入栈指令 (Acc =5AH, SP=68H)时 运行 指令,67H,68H,69H,6AH,6BH,片内RAM,SP=68H,Acc=5AH,32H=,执行,SP=69H,PUSH Acc,POP 32H,5AH,00H,注意:在传送指令中,只有以A为目标操作数的指令 才影响PSW 中的P 位。,23,第3章 80C51 单片机指令系统,3.3.2 算术运算类指令,80C51 指令中,算术运算指令都是按 8 位无符号数进行的。,1. 加法指令组,加法指令的目标操作数总是 A,源操作数有立即数、直接、间接和寄存器4种寻址方式。,ADD A,Rn,ADD A,direct,ADD A, Ri,ADD A,#data,(A)+data,A,(A)+(direct),A,(A)+(Ri),A,(A)+(Rn),A,指令影响程序状态字PSW 的相应位。,24,第3章 80C51 单片机指令系统,例 (A)=5BH , (R0)=0C8H ADD A,R0,执行,A,R0,C=,结果,0,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,25,第3章 80C51 单片机指令系统,2. 带进位的加法指令组,特点:是带进位位加,就是三个数相加。,ADDC A,Rn,ADDC A,direct,ADDC A, Ri,ADDC A,#data,(A)+data +(CY ),A,(A)+(direct) +(CY ),A,(A)+(Ri) +(CY ),A,(A)+(Rn) +(CY ),A,26,第3章 80C51 单片机指令系统,例 (A)=5BH , (R0)=0C8H,(CY)=1 ADDC A,R0,执行,A,R0,CY=,结果,0,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,27,第3章 80C51 单片机指令系统,3. 带借位减法指令组,带借位减法指令的功能是从A中减去减数和进位 CY,其差值再送回A。,减法指令只有带借位减法指令组,SUBB A,Rn,SUBB A,direct,SUBB A, Ri,SUBB A,#data,(A)-data -(CY ),A,(A)-(direct) -(CY ),A,(A)-(Ri) -(CY ),A,(A)-(Rn) -(CY ),A,28,第3章 80C51 单片机指令系统,例 (A)=5BH , (R0)=0C8H,(CY)=1 SUBB A,R0,执行,A,R0,CY=,结果,0,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,29,第3章 80C51 单片机指令系统,4. 加1指令组,INC A,INC direct,INC Ri,INC Rn,INC DPTR,5. 减1指令组,DEC A,DEC direct,DEC Ri,DEC Rn,这些指令不影响标志位,30,第3章 80C51 单片机指令系统,6. 乘除指令组,80C51 有乘除指令各一条,都是一个字节的指令。并且都是指令系统中执行时间最长的指令。指令周期为 4个机器周期。,(1) 乘法指令 MUL AB,A 被乘数 B 乘数,结果:A 积的低位字节, B 积的高位字节。,(CY)=0、积大于 255则 (OV)=1,31,第3章 80C51 单片机指令系统,(2) 除法指令 DIV AB,A 被除数, B 除数,结果:A 商, B 余数。,(CY)=0、 除数为0 则 (OV)=1,7. 十进制条整指令,DA A,本指令应紧跟在加法、减法指令之后,32,第3章 80C51 单片机指令系统,3.3.3 逻辑运算及移位类指令,逻辑指令都是按位进行的,有 “与”、“或”、“异或”和“反”等4组。,影响标志位。移位影响 ,ANL A,#data ORL A,#data XRL A,#data ANL A, Ri ORL A, Ri XRL A, Ri ANL A, Rj ORL A, Rj XRL A, Rj ANL A, direct ORL A, direct XRL A, direct ANL direct ,A ORL direct ,A XRL direct ,A ANL direct ,#data ORL direct ,#data XRL direct ,#data 取反 清零 CPL A CLR A,与,或,异或,33,第3章 80C51 单片机指令系统,(3)移位指令 共有4条 累加器 A 循环移位,RL A,RR A,RLC A,RRC A,1,0,1,0,CY,CY,34,第3章 80C51 单片机指令系统,3.3.4 控制转移类指令,控制 程序指针 PC 的改变。以达到改变指令执行的顺序。,分为两类: 无条件转移、有条件转移。,1. 无条件转移指令组: 共有 4 条,(1) 长转移指令,LJMP addr16,02H,64K地址空间内转移,3字节2周期指令,LJMP,2000H,(PC)=,1200H,2000H,由于计算机待执行的指令是靠 PC这个指挥者指定的,这就决定了下面的要执行的指令时2000H单元里的指令。,35,第3章 80C51 单片机指令系统,02H,20H,00H,1200H,1201H,2000H,1202H,1203H,74H,67H,LJMP 2000H,MOV A,67H,执行过程:,PC=1200H,读取指令的第一字节 02H,分析 02H,是转移指令,读取20H、00H,把2000H 送入 PC,PC= 2000H,PC+(指令长度)03H=2003HPC,执行指令,指令执行完毕,指令在程序存储器中的存储情况,36,第3章 80C51 单片机指令系统,(2) 绝对转移指令,AJMP addr11,2K地址空间内转移,2字节2周期指令,0,0,0,0,1,A10,A9,A8,指令码,PC,A12,A11,A15,A14,A13,A10,A9,A8,有此可看出,本指令只能在 2K 的地址空间转移。而且是在 本指令的下一条指令的2K 的地址空间,37,第3章 80C51 单片机指令系统,(3) 短转移指令,无条件相对转移指令,SJMP rel,80H,2字节2周期指令,目标地址=(PC)+2+rel (有符号数),本指令的首地址,例 2002H SJMP 81H,1F85H,2002H,80H,81H,2003H,2004H,执行,取指令,(PC)+2=2004,(PC)-7F=1F85H,(PC)=,1F85H,256字节地址空间内转移,38,第3章 80C51 单片机指令系统,(4) 变址寻址转移指令,JMP A+DPTR,73H,64K地址空间内转移,1字节2周期指令,以上是无条件转移指令。,39,第3章 80C51 单片机指令系统,2. 条件转移指令组,满足条件 :转移,不满足: 顺序执行,(1) 累加器判零转移指令,指令代码,指令功能,字节数,周期数,若 (),则 (),若 (),则 (), ,条件转移指令都是 相对 转移指令,累加器内容为零则跳转。,40,第3章 80C51 单片机指令系统,指令代码,指令功能,字节数,周期数,若 (),则 (),若 (),则 (),JNZ ,累加器内容为不零则跳转。,41,第3章 80C51 单片机指令系统,(2) 数值比较转移指令,CJNE A,#data ,rel,累加器内容与立即数比较,不等则转移。,指令代码,指令功能,字节数,周期数,B4H,若(A)=data ,则 (PC)=(PC)+3 ,CY=0 若(A)data ,则 (PC)=(PC)+3 +rel ,CY=0 若(A)data ,则 (PC)=(PC)+3 +rel ,CY=1,3,3,像 C 语言中的 WHILE 语句,42,第3章 80C51 单片机指令系统,CJNE A,direct ,rel,累加器内容与直接寻址单元比较,不等则转移。,指令代码,指令功能,字节数,周期数,B5H,若(A) ( direct),则 (PC)=(PC)+3 +rel ,CY=1,3,3,若(A)( direct) ,则 (PC)=(PC)+3 +rel ,CY=0,若(A)=(direct),则 (PC)=(PC)+3 ,CY=0,本条指令执行结果有三种!,43,CJNE Rn,#data ,rel,寄存器内容与立即数比较,不等则转移。,指令代码,指令功能,字节数,周期数,B8H BFH,若(Rn)=data ,则 (PC)=(PC)+3 ,CY=0 若( Rn )data ,则 (PC)=(PC)+3 +rel ,CY=0 若( Rn )data ,则 (PC)=(PC)+3 +rel ,CY=1,2,3,第3章 80C51 单片机指令系统,44,第3章 80C51 单片机指令系统,CJNE Ri,#data ,rel,间接寻址单元内容与立即数比较,不等则转移。,指令代码,指令功能,字节数,周期数,若(Ri) =data ,则 (PC)=(PC)+3 ,CY=0 若(Ri) data ,则 (PC)=(PC)+3 +rel ,CY=0 若(Ri) data ,则 (PC)=(PC)+3 +rel ,CY=1,2,3,B6H B7H,45,第3章 80C51 单片机指令系统,(3) 减1条件转移指令,DJNZ Rn,rel,(寄存器减1条件转移),指令代码,指令功能,字节数,周期数,Rn (Rn)1 若(Rn) 0 则 (PC)=(PC)+2 +rel 若(Rn) data ,则 (PC)=(PC)+2,2,2,D8H DFH,DJNZ 像FOR 语句。,46,第3章 80C51 单片机指令系统,(3) 减1条件转移指令,DJNZ direct,rel,(直接寻址单元减1条件转移),指令代码,指令功能,字节数,周期数,direct (direct)1 若(direct) 0 则 (PC)=(PC)+3 +rel 若(direct) data ,则 (PC)=(PC)+3,3,2,D5H,47,第3章 80C51 单片机指令系统,3. 子程序调用与返回指令组,(1) 绝对调用指令,ACALL addr11,指令代码,指令功能,字节数,周期数,PC (PC)+2 SP (SP)+1,(SP) (PC)70 SP (SP)+1,(SP) (PC)158 PC100 addr11,11H,31H, ,F1H,2,2,48,第3章 80C51 单片机指令系统,(1) 长调用指令,LCALL addr16,指令代码,指令功能,字节数,周期数,PC (PC)+3 SP (SP)+1,(SP) (PC)70 SP (SP)+1,(SP) (PC)158 PC150 addr16,12H,3,2,49,第3章 80C51 单片机指令系统,(3) 返回指令,RET ( 子程序返回),指令代码,指令功能,字节数,周期数,PC158 (SP), SP (SP)-1 PC7 0 (SP), SP (SP)-1,22H,1,2,RETI (中断服务子程序返回),指令代码,指令功能,字节数,周期数,PC158 (SP), SP (SP)-1 PC7 0 (SP), SP (SP)-1,32H,1,2,50,第3章 80C51 单片机指令系统,(4) 空操作指令,NOP,00H,1 字节,1周期,PC (PC)+1,两个返回指令从表面上看是同样的功能,但是实际是不同的,不能混用。,51,第3章 80C51 单片机指令系统,3.3.5 位操作指令,所谓位操作就是以位(bit)为单位进行的运算和操作。,位变量也称为:,布尔变量,开关量,位操作有:,位传送、置1、清0、取反、位判断转移、位逻辑、 位输入和位输出。,供用户使用的位处理硬件资源有:,(1)位累加器 CY,相当于字节操作的累加器A。,(2)内部RAM位寻址区的128个可寻址位。,(3)专用寄存器中的可寻址位,累加器A中的位的表示为ACC.x。,(4)I/O口的可寻址位。,52,第3章 80C51 单片机指令系统,1. 位传送指令组,位传送指令都是通过CY (指令中的C)。,MOV C, bit,A2H,2 字节,1周期,MOV bit, C,92H,2 字节,1周期,53,第3章 80C51 单片机指令系统,CLR C,C3H,1字节,1周期,CLR bit,C8H,2字节,1周期,2. 位置位复位(置1,清0)指令组,SETB C,D3H,1字节,1周期,SETB bit,D2H,2字节,1周期,54,第3章 80C51 单片机指令系统,3. 位逻辑运算指令组,ANL C,bit,82H,2字节,2周期,ANL C,/bit,B0H,2字节,2周期,ORL C,bit,72H,2字节,2周期,ORL C,/bit,A0H,2字节,2周期,CPL C,B3H,1字节,1周期,CPL bit,B2H,2字节,1周期,55,第3章 80C51 单片机指令系统,4. 位控制转移指令组,位控制转移指令时以位状态作为实现程序转移的控制条件,指令代码,指令功能,字节数,周期数,40 ,若 (CY)1,则 (),若 (CY)1,则 (),JC ,56,第3章 80C51 单片

温馨提示

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

评论

0/150

提交评论