《片机指令系统》PPT课件.ppt_第1页
《片机指令系统》PPT课件.ppt_第2页
《片机指令系统》PPT课件.ppt_第3页
《片机指令系统》PPT课件.ppt_第4页
《片机指令系统》PPT课件.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

,51单片机共有111条指令,分成6类,它的主要特点是: 1、指令较短,最长的只有3个字节,所以执行速度快。 请看下面 3 条指令:,第2章 MCS 51 单片机的指令系统,2、功能强大,8位的乘除运算可用一条指令完成。 3、位操作丰富,适于进行开关量的控制。 4、片内RAM统一编址,片外存储器独立编址,端口操作直接用传送命令(MOV),使用方便。,指令的构成: 标号: 操作码 目的操作数,源操作数;注释 AAA: MOV A, #20H ;将立即数20H送累加器A,1,指令中的常用符号: Rn: n=07,表示当前工作寄存器R0R7中的一个 Ri: i=0、1,代表R0和R1寄存器中的一个,用作间接寻址寄存器。 dir: 8 位直接寻址的字节地址(片内 RAM 和 SFR ) data: 8位立即数,即8位常数。可以为2进制(B)、 10进制、 16进制(H)、 字符( )等 data16: 表示16位立即数,即16位常数,取值范围为#0000H#0FFFFH addr16: 表示16位地址 addr11: 表示11位地址 rel: 相对偏移量(为一字节补码)用于相对转移指令中 bit:位地址,在位地址空间中 $:表示当前指令的地址 ():用来表示存储单元的内容 :间接寻址的前缀 A,B,C: 分别是累加器、B寄存器和进位标志位 / : 位操作时的取反前缀,2,2.1 寻址方式 寻址就是寻找操作数的地址,在计算机中,就是用来确定操作数,用什么方式从什么地方来找到所需要的操作数。 寻址方式是衡量 CPU 的性能的重要指标之一,因为寻址方式的快捷就决定了执行速度,寻址方式的多样性就决定了编程的灵活程度。 MCS 51 具有 7 种寻址方式,它们是:立即、直接、寄存器直接、寄存器间接、变址、相对和位寻址。 1、立即寻址 指令中直接给出操作数的寻址方式。在51系列单片机的指令系统中,立即数用一个前面加 “#“号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。立即寻址中的数,称为立即数。 立即数不能做源地址。 例如: MOV A,#30H MOV DPTR,#1234H,3,3、寄存器寻址 操作数存放在寄存器中。 寻址空间:工作寄存器组和所有的SFR寄存器。 A 在使用PUSH、POP指令的时候要记作ACC。 例如:MOV A,R0 ; R0A MUL AB ;A*BBA INC DPTR ;DPTR+1DPTR PUSH ACC ;将ACC压入堆栈,2、直接寻址 操作数的地址直接出现在指令中。 寻址空间:51系列片内的128字节的RAM和SFR中的寄存器,对SFR操作的时候,既可使用它的地址,也可以直接使用寄存器名。52系列内部RAM有256个字节时,80H之后的地址空间只能使用寄存器间接的方式来寻址。 例如: MOV 30H,40H MOV R5, DPH ( 等价于 MOV R5,83H ),4,4、寄存器间址(寄存器间接寻址) 操作数存放在以寄存器内容为地址的单元中。 寻址空间:片内RAM 00H-FFH的地址空间和片外数据存储器0000H-FFFFH的地址空间。可使用的寄存器只有DPTR和Ri,用它们之前要先把要寻的地址装入这些寄存器中。 凡是间接寻址的寄存器之前都要加 号来和直接寻址的方式区分。可用于间接寻址的寄存器只有工作寄存器组中的 R0 和 R1,DPTR 和 SP(SP是隐含的,不出现在指令中)。当采用寄存器间接寻址方式时,由于片内的存储单元只有128个,所以只用 R0 或 R1 就够了;如果是访问外部存储单元时,由于有16位地址,所以要先设置好P2高8位,再通过R0 或 R1送低 8 位(通过P0口),或者就由 DPTR 直接给出16位地址到 P2 和 P0 口来实现地址的查找。 例如:MOV R0,#20H MOV R0,A ;A(20H) 地址的内部RAM MOVX A,R1 ;外部RAM(地址P2 R1)的内容A MOVX DPTR,A;A以DPTR内容为地址的外部RAM,5,5、位寻址 寻址空间:片内RAM中20H2FH中的128个位地址及SFR中的可位寻址的位地址寻址。通常把进位位C当作位操作的累加器,为直观起见,当位地址有地址名时,建议选地址名做地址。 例如:MOV C,20H;20H位的内容送CY标志位,C称为位累加器。 MOV 5FH,C ANL C,P1.0 SETB TR0 CLR 8CH 由于位地址和字节地址相同,所以在编程的时候注意如何将其区分,一般的方法有3种: 用地址的别名,别名是唯一的,所以不会弄错且便于程序的阅读。 有专门的位操作指令(SETB、CLR、CPL),可凭借位指令的操作码来区别。 根据指令的操作数,是字节还是位来予以区分。 例如:MOV C,P0.0 SETB 20H MOV 5FH,P1.1,6,6、变址寻址 主要用于程序存储器的寻址,所以有专门的MOVC 指令。它的寻址方法是将 PC 或 DPTR 作为基址,再加上作为偏移量的 A 寄存器的内容,形成一个完整的16位的地址,将某程序存储单元的内容读出。,7,7、相对寻址 主要用于各种跳转。它的寻址方法是以当前的PC为基址,加上指令给出的一个字节的补码,让PC指针实现前跳或者后跳,由于跳转指令自身有2字节或3字节之分,相对寻址的执行是在跳转指令执行之后,所以通常计算的公式是:PC + 2(3)+ 指令给出的补码。,SJMP,13H,。,5112H,+13H,SJMP 13H,片外ROM,5112H,PC,+2,5127H,执行完后PC的位置,5112H+2+13H=5127H,8,2.2 传送与交换指令 为了能简洁地介绍指令功能和操作规则,采用图解的方式来加以说明,先介绍符号及方法: 箭头: 指出源操作数到目的操作数的方向,其上的英文是操作码符 圆框: 累加器A 或 C的符号 实线矩形框: 操作数 虚线操作数: 表示立即数 2.2.1 传送类指令MOV 1、MOV:内部RAM、SFR之间的传送指令(共18条),9,2、堆栈操作指令 入栈指令:PUSH dir ;SPSP+1,(SP) (dir ) 出栈指令:POP dir ;(dir )(SP),SPSP-1,SP,错误的: PUSH A PUSH DPTR PUSH R0 PUSH R1 .,10,3、外部程序存储器和A累加器之间的传送(共2条),11,4、外部数据存储器和A累加器之间的传送(共4条),12,2.2.2 数据交换指令(共5条),13,2.3 逻辑运算和算术运算指令 2.3.1 对标志位的影响 P标志仅对A操作的指令有影响。 传送类、加1、减1和逻辑运算指令不影响CY,OV,AC。 加减运算影响OV,CY,P和AC;乘除指令使CY=0;当乘积大于255或除数为0,OV=1。,2.3.2 逻辑运算类指令(25条),14,2.3.3 算数运算类指令(23条),Rn,Ri,direct,#data,ADD,ADDC,SUBB,ADD,ADDC,SUBB,ADD,ADDC,SUBB,INC,DEC,DA,ADD,ADDC,SUBB,B,INC DEC,INC DEC,INC DEC,MUL DIV,DPTR,INC,1、乘除指令 MUL AB ; A*BBA DIV AB ; A/BA(商) B(余数) 2、十进制调整指令 DA 它只能对用BCD码进行加法运算之后存放在累加器中的结果进行操作。它调整的规则如下:,15,16,2.3.4 综合例子:,17,18,2.4 控制转移指令(共23条),这一类指令的功能是改变指令的执行顺序,转到指令指示的新的PC地址执行。 MCS-51单片机的控制转移指令有以下类型: 无条件转移:无需判断,执行该指令就转移到目的地址。 条件转移:需判断标志位是否满足条件,满足条件转移到目的地址,否则顺序执行。 绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。 相对转移:转移的目的地址用相对于当前PC的偏差(偏移量)指示,通常为条件转移。 长转移或长调用(16位):目的地址可以在整个 64KB地址范围内。 绝对转移或绝对调用(11位):目的地址在当前的 2KB地址范围内。 短转移(8位):目的地址距当前PC(-128)-(+127)地址范围。 上面转移指令类型虽然多,功能都是转移到新地址执行。差别仅在于有条件还是无条件及目的地址在指令机器码中的表现形式。实际源程序编程中,转移的目的地址均是以符号地址表示,它对应机器码会由编译系统自行填入。,19,2.4.1 调用和返回指令 1、长调用指令: LCALL Addr16(3字节指令) 2、绝对调用指令: ACALL Addr11(2字节指令) 它们都是绝对调用,只是一个调用的空间可达64K(16位地址),另一个只能在规定的2K(11位地址)的范围内调用。 3、子程序返回指令:RET 4、中断子程序返回指令: RETI 它们必须出现在子程序的结尾,执行后从栈顶弹出断点到PC,返回原来的断点处继续执行。,20,解: 根据程序存储区域的分布,0100 H 和 0205H 都位于0000H 0800H 的第一个2K 的区域,所以,只要入口为0205H 的子程序的长度不超过800H 的范围,就可以使用 ACALL 的指令。,2.4.2 转移指令 1、无条件转移指令 (1)长转移指令 LJMP addr16 (2)绝对转移指令 AJMP addr11 (3)间接转移(散转)指令 JMP A+DPTR 可以用它来实现多分支转移。,2、条件转移指令 根据右图,很容易地可写出相应的指令: JZ rel JNZ rel DJNZ Rn,rel DJNZ direct,rel,CJNE Ri,#data,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE A,direct,rel,21,2.4.3 空操作指令 NOP 该指令经取指,译码后不进行任何操作(空操作)而转到下一条指令,常用于产生一个机器周期的延时,或上机修改程序时作填充指令,以方便增减指令。,例1:试说明以下一段程序运行后A中的结果。 MOV 23H,#0AH CLR A LOOP:ADD A,23H DJNZ 23H,LOOP SJMP $,根据程序分析可知: A=10+9+8+7+6+5+4+3+2+1=55=37H,2.4.4 应用举例,例2:编写程序,要求读P1 端口上的信息,若不为55H,则程序等待,直到P1端口为55H时,程序才往下继续执行。 MOV A,#55H ;A55H CJNE A,P1,$ ;P155H, 则程序循环 执行,22,23,2.5 位操作指令,MCS-51单片机的特色之一就是具有丰富的位处理功能,以进位标志CY为位累加器C,使得开关量控制系统的设计变得十分方便。 在程序中位地址的表达有多种方式: 用直接位地址表示,如D4H。 用“”操作符号表示,如PSW.4,或D0H.4 用位名称表示,如RS1。 用用户自定义名表示。如

温馨提示

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

评论

0/150

提交评论