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

    单片机3 1ppt课件.ppt

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

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

    单片机3 1ppt课件.ppt

    第三章 89C51单片机指令系统,Exit,3.3 89C51单片机指令系统,3.1 汇编语言,3.2 寻址方式,3.4 程序设计举例,指令学习要点 了解指令的操作 了解指令的寻址格式 了解指令对程序状态字的影响 合理使用指令,3.1 汇编语言,3.1.1 指令和程序设计语言3.1.2 指令格式,BACK,3.1 汇编语言,计算机指令系统是一套控制计算机操作的编码,称为机器语言。 计算机只能识别和执行机器语言的指令。 为了便于记忆和使用,通常用符号指令(即汇编语言)来描述计算机的指令系统。 不同的计算机有不同的汇编语言。,BACK,3.1.1 指令和程序设计语言,指令: 是CPU根据人的意图来执行某种操作的 命令。指令系统:一台计算机所能执行的全部指令的集合。要使计算机按照人的思维完成一项工作,就必须让CPU按顺序执行各种操作。 即一步步地执行一条条的指令。,3.1.1 指令和程序设计语言,程序:按人的要求编排的指令操作序列称为程序。程序设计:编写程序的过程就叫作程序设计。,3.1.1 指令和程序设计语言,程序设计语言是实现人机交换信息的基本工具,分为:机器语言汇编语言高级语言,3.1.1 指令和程序设计语言,机器语言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言。用机器语言编写的程序称为机器语言程序或指令程序(机器码程序)。 因为机器只能直接识别机器码程序,所以又称它为目标程序。,3.1.1 指令和程序设计语言,机器语言举例:要做“10+20”的加法,在MCS-51中可用机器码指令编程:01110100 00001010 把10放到累加器A中;00100100 00010100 A加20,结果仍放在A中为了便于书写和记忆,可采用十六进制表示指令码:74 0AH24 14H,3.1.1 指令和程序设计语言,机器语言特点:用机器语言编写程序不易记忆,不易查错,不易修改。,3.1.1 指令和程序设计语言,汇编语言:用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。它与机器语言指令是一一对应的。,3.1.1 指令和程序设计语言,汇编语言举例:例如:“10+20”例子可写成:汇编语言程序 机器语言程序MOV A,#0AH 74 0AHADD A,#14H 24 14H,3.1.1 指令和程序设计语言,汇编语言特点:用与CPU的硬件结构紧密相关。不同的CPU其汇编语言是不同的。 汇编语言程序不能移植,使用不便。用汇编语言进行程序设计必须了解所使用的CPU硬件的结的与性能,对程序设计人员有较高的要求。,3.1.1 指令和程序设计语言,高级语言:脱离具体机器的语言。,3.1.2 指令格式,89C51汇编语言指令由操作码助记符字段和操作数字段两部分组成。指令格式如下: 操作码 目的操作数,源操作数;注释例如:MOVA,#00H,3.1.2 指令格式,操作码部分 规定了指令所实现的操作功能,由2-5个英文字母表示。例如,JB, MOV,DJNZ,LCALL等。,3.1.2 指令格式,操作数部分 指出了参与操作的数据来源和操作结果存放的目的单元。 操作数可以直接是一个数(立即数), 或者是一个数据所在的空间地址,即在执行指令时从指定的地址空间取出操作数。,3.1.2 指令格式,操作码和操作数都有对应的二进制代码,指令代码由若干字节组成。 对于不同的指令,指令的字节数不同。89C51指令系统中,有: 1、单字节指令 、双字节指令 、三字节指令。,1、单字节指令,单字节指令中的8位二进制代码 既包含操作码的信息,也包含操作数的信息。 这种指令有两种情况。1)指令码中隐含着对某一种寄存器的操作2)由指令中的rrr三位的不同编码指定某一寄存器,1、单字节指令,1)指令码中隐含着对某一种寄存器的操作INC DPTR指令代码:A3H=,1 1 1 0 1 r r r,1、单字节指令,2)由指令中的rrr三位的不同编码指定某一寄存器 MOV A,Rn指令代码:,2、双字节指令,用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。格式为:,操作码,立即数或地址,3、三字节指令,一个字节操作码,两个字节操作数。格式为:,操作码,立即数或地址,立即数或地址,3.2 寻址方式,3.2.0 寻址的概念3.2.1 寻址方式的种类3.2.2 寻址空间及符号注释,3.2.0 寻址的概念,寻址:就是寻找指令中操作数或操作数所在地址。寻址方式:就是如何找到存放操作数的地址,把操作数提取出来的方法。 寻址方式是计算机的重要性能指标之一,也是汇编语言程序设计中最基本的内容之一,必须十分熟悉,牢固掌握。,3.2.1 寻址方式的种类,1、寄存器寻址2、直接寻址3、立即数寻址4、寄存器间接寻址 5、变址寻址6、相对寻址 7、位寻址,1、寄存器寻址,由指令指出寄存器组R0R7中的某一个或其他寄存器(A,B,DPTR等)的内容作为操作数。例如: MOV A,R0; (R0)A MOV P1,A; (A)P1口 ADD A,R0; (A)+(R0)A,2、直接寻址,在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。例如: MOV A,3AH; (3A) A MOV A,P1; (P1口) A 或: MOV A,90H; 90H是P1口的地址,2、直接寻址,直接寻址方式可访问:片内RAM的128个单元、所有的SFR。对于SFR,既可以使用它们的地址,也可以使用它们的名字。直接寻址的地址占一字节,所以,一条直接寻址方式的指令至少占内存两个单元。,2、直接寻址,注意下面指令的区别:MOV A,20HMOV C,20H,3、立即数寻址,指令操作码后面紧跟的是一字节或两字节操作数,用“#”号表示,以区别直接地址。例如:MOV A,3AH;(3AH)AMOV A,#3AH;3AHAMOV DPTR,#2000H;2000HDPTR ;(DPH)=20H ;(DPL)=00H,4、寄存器间接寻址,操作数的地址事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。89C51规定R0、R1为间接寻址寄存器,它可寻址内部地址RAM低位的128B单元内容。还可采用DPTR作为间接寻址寄存器,寻址外部数据存储器的64KB空间。例如,例如:将片内RAM 65H单元内容47H送A,可执行指令“MOV A,R0”。其中R0内容为65H。如图所示:,5、变址寻址(基址寄存器+变址寄存器间接寻址),以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。89C51中没有专门的变址寄存器。而是采用DPTR或PC为变址寄存器,A的内容为地址偏移量。变址寻址只能访问程序存储器,访问范围为64KB。例如,例如:MOVC A,A+DPTR,0302H,ROM,DPTR,A,A,02F1H,11H,1EH,+,DPTR内容与A的内容之和为程序存储器地址,程序存储器内容送A,6、相对寻址,相对寻址只出现在相对转移指令中。以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。当前的PC值是指执行完相对指令后的PC值;相对转移指令操作码所在地址称为源地址;转移后的地址称为目的地址。,6、相对寻址,目的地址=源地址+相对转移指令字节数+relrel为补码表示的有符号数。,7、位寻址,采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLR bit;位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。,7、位寻址,位寻址空间:片内RAM的20H-2FH的16个字节单元中的128位(位地址:00HFFH)部分SFR(字节地址能被8整除的SFR),3.2.2 寻址空间及符号注释,1、寻址空间2、符号注释,1、寻址空间,2、符号注释,Rn(n=0-7):当前选中的工作寄存器组R0-R7。Ri(i=0,1):作为地址指针两个工作寄存器R0, R1。#data:8位立即数。#data16:16位立即数。direct:8位片内RAM单元(包括SFR)的直接地址。addr11:11位目的地址,用于ACALL和AJMP指 令中。addr16:16位目的地址。用于LCALL和LJMP指 令中。,2、符号注释,rel:补码表示的8位地址偏移量。 范围:-128 +127D。bit:片内RAM或SFR的直接寻址位地址。:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。():中的内容。():指出的地址单元中的内容。:指令操作流程方向。,3.3 89C51单片机指令系统,3.3.0 绪3.3.1 数据传送指令3.3.2 算术运算指令3.3.3 逻辑运算及移位指令3.3.4 控制程序转移指令3.3.5 位操作指令(布尔操作),3.3.0 绪,89C51指令系统由111条指令组成。单字节指令49条,双字节指令45条,三字 节指令17条。 单周期指令64条,双周期45条, 只有乘、除指令为4个周期。,3.3.0 绪,指令系统可分为五大类:数据传送指令:28条算术运算指令:24条逻辑运算及移位指令:25条控制转移指令:17条位操作指令(布尔操作):17条,3.3.1 数据传送指令,1.以累加器A为目的操作数的指令 (4条,即4种寻址方式) 2.以寄存器Rn为目的操作数的指令(3条) 3.以直接地址为目的操作数的指令(5条) 4.以间接地址为目的操作数的指令(3条),最基本、最重要的操作。,3.3.1 数据传送指令,5.十六位数据传送指令(1条)6.查表指令(2条)7.累加器A与片外RAM传送指令(4条)8.栈操作指令(2条)9.交换指令(4条),1、以累加器A为目的操作数的指令 (4条,即4种寻址方式),MOV A, Rn MOV A, directMOV A, RiMOV A, #data,例:(30H)=11H, (R1)=30H,MOV A,#30H ;(A)=30H MOV A, 30H ;(A)=11H MOV A,R1 ;(A)=11H MOV A,R1 ;(A)=30H,2 、以寄存器Rn为目的操作数的指令(3条),MOV Rn, A MOV Rn, directMOV Rn, #data,注意: 在8051指令系统中没有 “MOV Rn,Rn”传送指令。,例如:(A)=78H,(R5)=47H,(70H)=F2H,执行指令:,MOV R5,A ; (R5)=78HMOV R5,70H ; (R5)=F2HMOV R5,#A3H; (R5)=A3H,3 、以直接地址为目的操作数的指令(5条),MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, Ri MOV direct, #data,这组指令的功能是把源操作数所指定的内容送入由直接地址direct所指出的片内存储单元中。源操作数有寄存器寻址,直接寻址,寄存器间接寻址和立即寻址等方式。,3 、以直接地址为目的操作数的指令(5条),4 、以间接地址为目的操作数的指令(3条),MOV Ri, A MOV Ri, direct MOV Ri, #data,(Ri)表示Ri中的内容为指定的RAM单元。 Ri 为 R0, R1,5、 十六位数据传送指令(1条),这条指令的功能是把16位常数送入DPTR。DPTR由DPH和DPL组成。,MOV DPTR, #data16,例: MOV DPTR, #1000H(DPTR)=1000H, (DPH)=10H, (DPL)=00H,5、 十六位数据传送指令(1条),6 、查表指令(2条),MOVC A,A+DPTR; 先(PC)+1PC, 后(A)+(DPTR) A (远程查表),MOVC A, A+PC; 先(PC)+1PC, 后(A)+(PC) A (近程查表),基地址寄存器+变址寄存器间接寻址PC+A(程序存储器0-64K),基地址寄存器+变址寄存 器间接寻址DPTR+A(程序存储器0-64K),A寄存器,程序存贮器传送,例:若初始ROM内容为:,执行程序:,所以,最后结果为:(A)=02 (R0)=02 (PC)=1004H,例:若初始ROM内容为:,执行程序:,所以,最后结果为:(A)=02 (PC)=100EH (DPTR)=原值,7、 累加器A与片外RAM传送指令(4条),MOVX A, RiMOVX A, DPTRMOVX Ri, AMOVX DPTR, A,在8051指令系统中,CPU对片外RAM的访问只 能用寄存器间接寻址的方式,且仅有四条指令.第2,4两条指令以DPTR为片外数据存储器16位 地址指针,寻址范围达64KB。其功能是DPTR所 指定的片外数据存储器与累加器A之间传送数据第1,3两条指令是用R0或R1作低8位地址指针, 由P0口送出,寻址范围是256字节。这两条指令 完成以R0或R1为地址指针的片外数据存储器与 累加器A之间的传送数据。上述四条指令的操作如图,7、 累加器A与片外RAM传送指令(4条),累加器,寄存器间接寻址R1、R0(片外RAM0-255字节),寄存器间接寻址DPTR (片外RAM0-64KB),外部数据存储器传送操作,MOV R1, #30H;(R1)=30HMOVX A, R1 ;(A)=02HMOV R0, A ;(R0)=(A)=02HMOV A,R1 ;(A)=(R1)=01HMOV R2, A ;(R2)=(A)=01H,例: 若:片内RAM (30H)=01H,片外RAM (30H)=02H,执行下面程序段后的结果如何。,8 、栈操作指令(条),PUSH direct ; 先(SP)+1(SP) 后(direct)(SP)POP direct ; 先(SP) (direct) 后(SP) -1(SP),8 、栈操作指令(条),片内RAM128B单元中,可设定一个区域作为堆栈 一般可设在30H-7FH单元中, 栈顶由堆栈指针SP指出。 89C51复位后,(SP)=07H,若要更改则需重新 给SP赋值。 本操作不影响标志位。 堆栈中数据的压入和弹出遵循“先进后出”规则。,例:设(SP)=60H,(ACC)=40H, (B)=80H,执行下面指令: PUSH ACC PUSH B结果:(61H)=40H,(62H)=80H, (SP)=62H,例:设(SP)=62H,(61H)=40H, (62H)=80H,执行下面指令: POP DPH POP DPL结果:(DPTR)=8040H,(SP)=60H,例:,继续上例:,9、 交换指令(4条),XCH A, RnXCH A, directXCH A, Ri,(1) 字节交换指令,将第二操作数所指定的工作寄存器Rn(R0R7),直接寻址和间接寻址的单元内容与累加器A中内容互换.,9、 交换指令(4条),XCHD A, Ri,(2) 半字节交换指令,Ri间接寻址的单元内容与累加器A中内容的低4位互换,高4位内容不变。该指令影响标志位P。,例:,例:设(A)=16H,(R0)=40H, (40H)=35H执行下面指令: XCHD A, R0结果:(A)=15H,(40H)=36HA: 0001 0110 (40H): 0011 0101 0001 0101 (15H) 0011 0110 (36H),3.3.2 算术运算指令,1、不带进位加法指令(条)2、带进位加法指令(条)3、带借位减法指令(条)4、乘法指令(1条)5、除法指令(1条)6、加1指令(5条)7、减1指令(4条)8、十进制调整指令(1条),1、不带进位加法指令(条),ADD A, Rn ; (A)+(Rn)AADD A, direct ; (A)+(direct)AADD A, Ri ;(A)+(Ri)AADD A,#data ;(A)+#dataA,1、不带进位加法指令(条),这些指令是将工作寄存器、内部RAM单元内容或立即数的8位无符号二进制数和累加器A中的数相加, 所得的“和”存放于累加器A中。 当“和”的第3位或第7位有进位时,分别将AC,CY标志位置1,否则为0。 上述指令的执行将影响标志位AC,CY,OV,P。 溢出标志OV只有带符号数运算时才有用。,例:,2、带进位加法指令(条),ADDC A, Rn ;(A)+CY+(Rn)AADDC A, direct ; (A)+CY+(direct)AADDC A, Ri ; (A)+(Ri)+CYAADDC A,#data ;(A)+#data+CYA,2、带进位加法指令(条),这组指令的功能是同时把源操作数所指出的内容和进位标志位CY都加到累加器A中, 结果存放在A中, 其余功能和ADD指令相同。当运算结果第3,7位产生进位或溢出时,分别置位AC,CY和OV标志位。 本指令的执行将影响标志位AC,CY,OV,P。本指令常用于多字节加法。,例:设(A)=0C3H,(R0)=0AAH,(CY)=1。执行指令“ADDC A,R0”后的结果及标志位如何?,例:编程,将(30H),(31H)单元中的数与 (40H),(41H)单元中的数相加,结果存于(30H),(31H)单元中。,、带借位减法指令(条),SUBB A, Rn ; (A)-CY-(Rn)ASUBB A, direct ;(A)-CY-(direct)ASUBB A, Ri ; (A)-CY-(Ri)ASUBB A,#data ;(A)-CY-#dataA,、带借位减法指令(条),这组指令的功能是, 从累加器A中减去源操作数所指出的内容及进位位CY的值,差保留在累加器A中。 由于89C51指令系统中没有不带借值的减法指令,如需要的话, 可以在“SUBB”指令前用“CLR C”指令将CY清0。 两个数相减,如果位7有借位,则CY置1,否则清0若位3有借位,则AC置1,否则清0。 两个带符号数相减,还要考查OV标志,若OV为l,表示差数溢出,即破坏了正确结果的符号位。,例:设(A)=0C9H,(R2)=54H,Cy=1。 执行指令“SUBB A, R2”的结果如何?,4、 乘法指令(1条),指令的功能是,把累加器A和寄存器B中两个8位无符号数相乘,所得16位积的低字节存放在A中,高字节存放在B中。若乘积大于0FFH,则OV置1,否则清0(即B的内容为0)。CY总是被清0。,MUL AB,例:(A)=4EH,(B)=5DH, 执行指令“MUL AB”后结果如何?,5、 除法指令(1条),DIV AB,功能是进行A除以B的运算,A和B的内容均为8 位无符号整数。指令操作后,整数商存于A中,余数存于B中, CY和OV均被清0。若原(B)=00H,则结果无法确定,用OV=l表 示,而CY仍为0。,6、 加1指令(5条),INC A ; (A)+1AINC Rn INC direct INC Ri INC DPTR,6、 加1指令(5条),指令功能是将操作数所指定的单元内容加1.其操作不影响PSW。 若原单元内容为FFH,加1后溢出为00H, 也不会影响PSW标志。,7、 减1指令(条),DEC A ; (A)-1ADEC Rn DEC direct DEC Ri (没有)DEC DPTR,7、 减1指令(条),指令的功能是将操作数所指的单元内容减1其操作不影响标志位CY。,8、 十进制调整指令(1条),调整累加器内容为BCD码。 这条指令跟在ADD或ADDC指令后,将相加后存 放在累加器A中的结果进行十进制调整,完成十 进制加法运算功能。两个压缩型BCD码按二进制数相加后,必须经本 指令调整才能得到压缩型BCD码的和的正确值。,DA A,8、 十进制调整指令(1条),若(A03)9或AC=l,则(A03)+6A03若(A47)9或CY=l,则(A47)+6A47 。,8、 十进制调整指令(1条),执行DA A后,CPU根据累加器A的原始数值和 PSW的状态,由硬件自动对累加器A进行加06H, 60H或66H的操作。 必须注意,本指令不能简单地把累加器A中的16进 制数变换成BCD码。也不能用于十进制减法的调整。,例: 设累加器A内容为:01010110B(56的BCD码),寄存器R3的内容为01100111B(67的BCD码),CY内容为1。求执行下列指令后的结果。 ADDC A,R3 DA A,3.3.3 逻辑运算及移位指令,1.累加器清零、取反指令(2条) 2. 移位指令(4条) 3. 累加器半字节交换指令(1条) 4. 逻辑“与”指令(6条) 5. 逻辑“或”指令(6条) 6. 逻辑“异或”指令(6条),1.累加器清零、取反指令(2条),CLR A ; 0A, 清0累加器A,只影响标志位P。CPL A ; AA , 累加器A逐位取反,不影响标志位。,例:设(A)=01010101B=55H,执行指令: CPL A结果:(A)=10101010B=0AAH,2 .移位指令(4条),RL A ; 累加器A循环左移 RR A ; 累加器A循环右移RLC A ; 累加器A连同进位位循环左移 RRC A ; 累加器A连同进位位循环右移,前两条指令的功能分别是,将累加器A的内容循环左 移或右移一位, 后两条指令的功能分别是,将累加器A的内容连同进 位位CY一起循环左移或右移一位。 通常用RLC A指令将累加器A的内容做乘2运算。,2 .移位指令(4条),2 .移位指令(4条),RL A,RR A,2 .移位指令(4条),RLC A,RRC A,3. 累加器半字节交换指令(1条),SWAP A,指令功能:将累加器A的高低两半字节交换。,例:(A)=FAH。执行指令“ SWAP A”结果:为(A)=AFH。,4. 逻辑“与”指令(6条),ANL A,Rn ANL A,direct ANL A , Ri ANL A,#data ANL direct, A ANL direct, #data,这组指令中前四条指令是将累加器A的内容和操作数所指出的内容按位进行逻辑“与”,结果存放在A中。后两条指令是将直接地址单元中的内容和操作数所指出的单元的内容按位进行逻辑“与”,结果存入直接地址单元中。若直接地址正好是I/O端口,则为“读改写”操作。,4. 逻辑“与”指令(6条),例:设(A)=07H,(R0)=0FEH,执行指令:ANL A,R0结果:(A)=06H 0000 0111 (07H) 1111 1110 (FEH) 0000 0110 (06H),4. 逻辑“与”指令(6条),5. 逻辑“或”指令(6条),ORL A,Rn ORL A,direct ORL A , Ri ORL A,#data ORL direct, A ORL direct, #data,这组指令中前四条指令是将累加器A的内容和操作数所指出的内容按位进行逻辑“或”,结果存放在A中。后两条指令是将直接地址单元中的内容和操作数所指出的单元的内容按位进行逻辑“或”,结果存入直接地址单元中。若直接地址正好是I/O端口,则为“读改写”操作。,5. 逻辑“或”指令(6条),例:设(P1)=04H,(A)=33H,执行指令: ORL P1,A结果:(P1)=37H 0000 0100 (04H) 0011 0011 (33H) 0011 0111 (37H),5. 逻辑“或”指令(6条),6. 逻辑“异或”指令(6条),XRL A,Rn XRL A,direct XRL A , Ri XRL A,#data XRL direct, A XRL direct, #data,这组指令中前四条指令是将累加器A的内容和操作数所指出的内容按位进行逻辑“异或”,结果存放在A中。后两条指令是将直接地址单元中的内容和操作数所指出的单元的内容按位进行逻辑“异或”,结果存入直接地址单元中。若直接地址正好是I/O端口,则为“读改写”操作。,6. 逻辑“异或”指令(6条),例:设(A)=91H,(R3)=73H,执行指令: XRL A,R3结果:(A)=0E2H 1001 0001 (91H) 0111 0011 (73H) 1110 0010 (E2H),6. 逻辑“异或”指令(6条),上述逻辑操作类指令操作均只影响标志位P。,3.3.4 控制程序转移类指令,1 . 无条件转移指令(4条) 2 . 空操作指令(1条) 3 . 条件转移指令(8条) 4 . 调用和返回指令(4条),89C51单片机有丰富的转移类指令(17 条)。包括无条件转移、条件转移和调用指令 及返回指令等。所有这些指令的目标地址都是在64K字节 程序存储器地址空间范围内。,1、无条件转移指令(4条),无条件转移指令是当程序执行到该指令时,程序无条件的转移到指令所提供的地址处执行。无条件转移指令有长转移、短转移、相对转移和间接转移4条指令。,1、无条件转移指令(4条),短转移指令 AJMP addrll 长转移指令 LJMP addrl6 相对转移(短转移)指令 SJMP rel间接转移指令JMP A+DPTR,短转移指令 AJMP addrll,先(PC)+2PC,addrllPC100,(PC1511)不变这条指令提供了11位地址,可在2K范围内无条件转移到由a10-a0所指出的地址单元中。因为高5位为原PC11-15位值,因此,转移的目标地址必须在AJMP指令后面指令的第一个字节开始的同一2K字节范围内。,长转移指令 LJMP addrl6,addr16PC 指令直接提供16位目标地址, 所以程序可转向64KB程序存储器地址空间的任何单元。 3字节指令,相对转移(短转移)指令SJMP rel,先(PC)+2PC,后(PC)+relPC 指令的操 作数是相对地址,rel是一个带符号的偏移字节数(2的补码), 其范围为-128+12700H7FH对应表示0+127,80HFFH对应表示-128-1。,相对转移(短转移)指令SJMP rel,负数表示反向转移,正数表示正向转移。该指令为双字节指令,执行时先将PC内容 加2,再加相对地址rel,就得到了转移目标地址。,例如,在(PC)=0100H地址单元有条 “SJMP rel”指令,若rel=55H(正数),则正向转移到 0102H+0055H=0157H地址上;若rel=F6H(负数)则反向转移到 0102H+FFF6H=00F8H地址上。 (-10),编写程序时,rel可以是一个转移目的地址的标号,由汇编程序在汇编过程中自动计算偏 移地址,并且填入指令代码中。在手工汇编时,我们可用转移目的地址减转 移指令所在源地址,再减转移指令字节数2 得到偏移字节数rel。,间接转移指令 JMP A+DPTR,(A)+(DPTR) PC 该指令的转移地址由数据指针DPTR的16位 数和累加器A的8位数进行无符号数相加形 成,并直接送入PC。指令执行过程对DPTR,A和标志位均无影响这条指令可代替众多的判别跳转指令,具有 散转功能(又称散转指令)。,从程序中看出,当(A)=00H时,散转到CCS0;当(A)=01H时,散转到CCS1;。由于AJMP是双字节指令,散转前A中的键值应乘2。,2、 空操作指令(1条),NOP ; (PC)+lPC,这是一条单字节指令,除PC加l外,不影响其 他寄存器和标志位。NOP指令常用来产生一个机器周期的延迟,3 、条件转移指令(8条),(1)判零转移指令(2条)(2)比较转移指令(4条)(3)循环转移指令(2条),(1) 判零转移指令,JZ和JNZ指令分别对累加器A的内容为全零和不为全零进行检测并转移,,JZ rel ;(PC)+2PC。.。JNZ rel,(1) 判零转移指令,当不满足条件时,程序继续往下执行;当满足条件时, 程序转移向指定的目标地址其目标地址是以下一条指令第一个字节的地址为基础,加上指令的第二个字节中的相对偏移量。相对偏移量为一个带符号的8位数。本指令不改变累加器A的内容;也不影响任何标志位。,(2)比较转移指令(4条),对指定的目的字节和源字节进行比较。若它们的值不相等,则转移。转移的目标地址为当前的PC值加3后,再加指令 的第三字节偏移量(rel),CJNE (目的字节), (源字节), rel ;三字节指令,(2)比较转移指令(4条),若目的字节内的数大于源字节内的数,则清0进 位标志位CY;若目的字节数小于源字节数,则置位进位标志位 CY;若二者相等,则往下执行。本指令执行后不影响任何操作数。这类指令有四种寻址方式,即4条指令:,(2)比较转移指令(4条),CJNE A, direct, relCJNE A, #data, relCJNE Rn, #data, relCJNE Ri, #data, rel,(2)比较转移指令(4条),CJNE A, direct, rel;(PC)+3PC;若(direct)(A),则(PC)+relPC,且1CY;若(direct)=(A),则顺序执行,且0CY;,(2)比较转移指令(4条),CJNE A, #data, rel;(PC)+3PC;若#data(A),则(PC)+relPC,且1CY;若#data=(A),则顺序执行,且0CY;,(2)比较转移指令(4条),CJNE Rn, #data, rel;(PC)+3PC;若#data(Rn),则(PC)+relPC,且1CY;若#data=(Rn),则顺序执行,且0CY;,(2)比较转移指令(4条),CJNE Ri, #data, rel;(PC)+3PC;若#data(Ri),则(PC)+relPC,且1CY;若#data=(Ri),则顺序执行,且0CY;,(3)循环转移指令(2条),程序每执行一次本指令,将第1操作数的字 节变量减1,并判字节变量是否为0。若不为0,则继续执行循环程序段;若为0,则终止循环程序段的执行,程序往 下执行。,DJNZ Rn, relDJNZ direct, rel,(3)循环转移指令(2条),DJNZ Rn, rel; (PC)+2PC, (Rn)-lRn; 当(Rn)0时,则(PC)+relPC; 当(Rn)=0时,则结束循环,程序往下执行。,(3)循环转移指令(2条),DJNZ direct, rel; (PC)+2PC, (direct)-ldirect; 当(dierct)0时,则(PC)+relPC; 当(direct)=0时,则结束循环,程序往下执行,4、 调用和返回指令,程序设计,有时需反复执行某段程序,这段程序能被公用。这样可减少程序编写工作量,于是引进了主程序和子程序的概念。通常把具有一定功能的公用程序段作为子程序,指令系统中一般都有主程序调用子程序的指令和从 子程序返回主程序的指令。子程序的最后一条指令为返回主程序指令(RET),4、 调用和返回指令,短调用指令 ACALL addr11长调用指令 LCALL addr16返回指令 RET返回指令 RETI,短调用指令,ACALL addr11;(PC)+2PC;(SP)+1SP; (PC07)(SP);(SP)+1SP; (PC815)(SP);addr010PC010; (PC1115)不变,短调用指令,短调用指令提供11位目标地址,限定在2KB地址空间内调用。双字节、双周期指令。执行完本指令,程序计数器内容先加2,指向下一条指令的地址;然后将PC值压入堆栈保存,栈指针(SP)加2;接着将11位目标地址(addr010)送程序计数器的低11位(PC010),PC值的高5位(PC1115)不变。,例如:设符号地址“SUBRTN”所对应的程 序存储器实际地址为0345H,在 (PC)=0123H处 执行指令ACALL SUBRTN,(SP)=09H,SUBRTN=0345H送PC,(PC)=0345H,程序转向子程序首地址0345H单元开始执行。这里PC值得高5为内容不变,仅把123H变成345H。寻址在0125H为起始地址的同一个2K字节范围内。,长调用指令,LCALL addr16;(PC)+3PC;(SP)+1SP; (PC07)(SP);(SP)+1SP; (PC815)(SP);addr015PC015;,例如:设(SP)=07H,符号地址“SUBRTUN” 指向程序存储器的5678H(PC)=0123H。从0123H处执行指令 LCALL SUBRTUN,返回指令,RET;(SP)PC815,(SP)-lSP,;(SP)PC07,(SP)-lSP。从子程序返回指令。当程序执行到本指令时,表示子程序结束返回调用指令(ACALL或LCALL)的下一条指令处(断点)继续往下执行。,返回指令(中断),RETI;(SP)PC815,(SP)-lSP,;(SP)PC07,(SP)-lSP。RETI指令是中断返回指令,除具有RET指令的功能外,还将开放中断逻辑。,3.3.5 位操作指令(布尔操作),0、绪1、位数据传送指令(2条)2、位修正指令(6条)3、逻辑运算指令(4条)4、位条件转移类指令(5条),89C51硬件结构中有个位处理机(布尔处理机),它具有一套处理位变量的指令集,包括位变量传送、逻辑运算、控制程序转移等指令。在进行位操作时,位累加器C即为进位标志CY,0、绪,位寻址区:片内RAM字节地址20H-2FH单元中连续的128个位(位地址00H-7FH)和 SFR中字节地址能被8整除的特殊功能寄存器。,0、绪,在汇编语言中,位地址的表达方式有:直接(位)地址方式,如D4H 点操作符号方式,如PSW.4 位名称方式,如RS1 用户定义名方式,如用伪指令bit SUB.REG bit RS1经定义后,允许指令中用SUB.REG代替RS1。 上面四种方式都可表示PSW(D0H)中的第4位。,0、绪,1、 位数据传送指令(2条),上述指令把源操作数指定的位变量传送到目 的操作数指定的位单元中。一个操作数为位地址,另一个必定为布尔累 加器C(即进位标志位CY)。,MOV C,bitMOV bit,C,1、 位数据传送指令(2条),此指令不影响其他寄存器或标志位。位地址bit若为00H-7FH,则位地址在片内 RAM(20H-2FH单元)中共128位。bit若为80H-FFH,则位地址在11个特殊功 能寄存器中。4个8位并行I/O口,每位均可单独进行操作因此,布尔I/O口共有32个:P0.0-P0.7, P 1.0-P1.7, P2.0-2.7, P3.0-P3.7。,2、位修正指令(6条),CLR C ; 位清0指令CLR bit ; 位清0指令SETB C ; 位置l指令SETB bit ; 位置l指令CPL C ; 位取反指令CPL bit ; 位取反指令,这类指令的功能分别是清除、取反、置位 进位标志C或直接寻址位,执行结果不影响其他标志位。当直接位地址为端口中某一位时,具有“ 读-改-写功能。,2、位修正指令(6条),3、 逻辑运算指令(4条),(2)位逻辑“或”指令 ORL C, bit ORL C, /bit,(1)位逻辑“与”指令 ANL C, bit ANL C, /bit,3、 逻辑运算指令(4条),这组指令的功能是,把位累加器C的内容与直接位地址的内容进行逻辑“与”、“或”操作,结果再送回C中。斜杠“/”表示对该位取反后再参与运算,但不改变原来的数值。,4、位条件转移类指令(5条),(1)判布尔累加器转移指令JC relJNC rel,4、位条件转移类指令(5条),分别对进位标志位C进行检测,当(C)=1(前一条)或(C)=0(后一条)时,程序转向目标地址;否则,顺序执行下一条指令。目标地址是(PC)+2后的PC当前值(指向下一条指令)加上指令的第二字节中带符号的相对地址(rel)之和。,(1)判布尔累加器转移指令,4、位条件转移类指令(5条),(2)判位变量转移指令JB bit ,relJNB bit,rel,4、位条件转移类指令(5条),检测指定位,若位变量为1(前一条指令)或位变量为0(后一条指令),则程序转向目标地址去执行;否则,顺序执行下一条指令。对该位变量进行测

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开