欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机汇编指令精.ppt

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

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

    单片机汇编指令精.ppt

    单片机片机汇编指令指令第1页,本讲稿共97页项目引入项目引入1.项目描述利用P1口外接的8只LED发光二极管模拟彩灯。2.硬件电路与工作原理让学生根据任务分析硬件要求,画出具体电路,并在实验开发板上接线3.程序设计(给出控制程序)8051第2页,本讲稿共97页开始55H送P1口延时0.3秒AAH送P1口延时0.3秒流水式彩灯控制程序框图第3页,本讲稿共97页控制程序ORG 0000H LOOP:MOV P1,#55H ;将立即数55H送P1端口LCALL TIME ;调延时子程序TIMEMOV P1,#0AAH ;将立即数AAH送P1端口LCALL TIME ;调延时子程序TIMESJMP LOOP ;转移到LOOPTIME:MOV R6,#200 ;延时子程序TIMETIME1:MOV R7,#200 TIME2:NOPNOPNOPDJNZ R7,TIME2DJNZ R6,TIME1RETEND第4页,本讲稿共97页高级语言:汇编语言:机器语言:用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。独立于机器,面向过程,接近自然语言和数学表达式.2.2.1 1 汇编语言与指令系统简介汇编语言与指令系统简介 一、汇编语言程序设计的意义一、汇编语言程序设计的意义什么是程序?什么是程序?完成某项特定任务的指令的集合。完成某项特定任务的指令的集合。计算机按程序一条一条地依次执行指令,从而完成指定任务。计算机按程序一条一条地依次执行指令,从而完成指定任务。要让计算机完成各项任务,就应设计各种程序。要让计算机完成各项任务,就应设计各种程序。程序设计语言:程序设计语言:第5页,本讲稿共97页汇编语言程序的每一条语句都与计算机的某一条指令对应,所以必需熟悉指令系统。指令=操作码+操作数操作码表示了该指令所能执行的操作功能。操作数表示参加操作的数的本身或操作数所在的地址。MCS-51指令格式:标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由18个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号。标号:操作码助记符第一操作数,第二操作数;注释第6页,本讲稿共97页操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。操作数或操作数地址表示参加运算的数据或数据的有效地址。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPL A指令;有两个操作数,如MOV A,#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。注释是对指令的解释说明,用以提高程序的可读性;注释前必须加分号。第7页,本讲稿共97页二、MCS-51系列单片机的指令系统111条指令,共分五大类:数据传送类;(29条)算术运算类;(24条)逻辑运算类;(24条)控制转移类;(17条)位操作类。(17条)第8页,本讲稿共97页指令中操作数的描述符号:Rn工作寄存器R0R7Ri间接寻址寄存器R0、R1Direct直接地址,包括内部128BRAM单元地址、26个SFR地址。#data8位常数#data1616位常数addr1616位目的地址addr1111位目的地址rel8位带符号的偏移地址DPTR16位外部数据指针寄存器bit可直接位寻址的位第9页,本讲稿共97页A累加器B寄存器BC进、借位标志位,或位累加器间接寄存器或基址寄存器的前缀/指定位求反(x)x地址单元中的内容(x)x地址单元中的内容为地址的单元中的内容当前指令的地址第10页,本讲稿共97页三、三、寻 址址 方方 式式操操作作数数是是指指令令的的重重要要组组成成部部分分,指指出出了了参参与与操操作作的的数数据据或或数数据据的的地地址址。寻寻找找操操作作数数地地址址的的方方式式称称为为寻寻址址方方式式。一一条条指指令令采采用用什什么么样样的的寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。MCS-51指令系统共使用了指令系统共使用了7种寻址方式,包括寄存器寻址、直接种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。第11页,本讲稿共97页1.寄存器寻址寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOVR1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。如果程序状态寄存器PSW的RS1:RS0=01(选中1组工作寄存器,对应地址为08H0FH),设累加器A的内容为20H,则执行MOVR1,A指令后,内部RAM09H单元的值就变为20H,如图2.1所示。第12页,本讲稿共97页 采用寄存器寻址的指令如下:MOV P1,A;将累加器A的内容送 到P1口 MOV P1,R4 ;将寄存器R4的内容送到P1口 CLR A;将累加器A清0 CPL A;将累加器A中的内容取反 RL A;将累加器A的内容循环左移第13页,本讲稿共97页图图2.1 寄存器寻址示意图寄存器寻址示意图 第14页,本讲稿共97页2.直接寻址直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。例如,指令MOVA,3AH执行的操作是将内部RAM中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址。设内部RAM3AH单元的内容是88H,那么指令MOVA,3AH的执行过程如图2.2所示。第15页,本讲稿共97页 图图2.2 直接寻址示意图直接寻址示意图 采用直接寻址的指令如下:MOVP1,20H;将20H单元的内容传送到P1口第16页,本讲稿共97页3.立即数寻址立即数寻址是指将操作数直接写在指令中。例如,指令MOVA,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。注意:立即数前面必须加“#”号,以区别立即数和直接地址。该指令的执行过程如图2.3所示。第17页,本讲稿共97页图图2.3 立即数寻址示意图立即数寻址示意图第18页,本讲稿共97页采用立即数寻址的指令如下:MOV20H,#55;将立即数55H送20H单元MOVA,#0F0H;将立即数0F0H送累加器AMOV R4,#0FH;将立即数0FH送寄存器R4中MOVR0,#20H;将立即数20H送寄存器R0口第19页,本讲稿共97页ANDA,#0FH;累加器A的内容与立即数0FH进行逻辑与操作ORA,#0F0H;累加器A的内容与立即数0F0H进行逻辑或操作MOVA,#01H;将立即数01H送累加器A中MOVA,#55H;将立即数55H送累加器A中第20页,本讲稿共97页 4.寄存器间接寻址 寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,称为寄存器间接寻址寄存器。注意:间接寻址寄存器前面必须加上符号“”。例如,指令MOVA,R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中。第21页,本讲稿共97页设设R0=3AH,内内部部RAM 3AH中中的的值值是是65H,则则指指令令MOV A,R0的的执执行行结结果果是是累累加加器器A的的值值为为65H,该该指指令令的的执执行行过过程程如如图图2.4所示。所示。第22页,本讲稿共97页图图2.4 寄存器间接寻址示意图寄存器间接寻址示意图第23页,本讲稿共97页5.变址寻址变址寻址变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。例如,指令MOVC A,A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中。设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVC A,A+DPTR的执行结果是累加器A的内容为55H。该指令的执行过程如图2.5所示。第24页,本讲稿共97页图图2.5 变址寻址示意图变址寻址示意图第25页,本讲稿共97页 6.相对寻址相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。例如,指令SJMP54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。设指令SJMP54H的机器码80H,54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。该指令的执行过程如图2.6所示。第26页,本讲稿共97页图图2.6 相对寻址示意图相对寻址示意图第27页,本讲稿共97页7.位寻址位寻址是指按位进行的寻址操作,而上述介绍的指令都是按字节进行的寻址操作。MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。位寻址区包括专门安排在内部RAM中的两个区域:一是内部RAM的位寻址区,地址范围是20H2FH,共16个RAM单元,位地址为00H7FH;二是特殊功能寄存器SFR中有11个寄存器可以位寻址,参见有关章节中位地址定义。第28页,本讲稿共97页例如,指令SETB3DH执行的操作是将内部RAM位寻址区中的3DH位置1。设内部RAM27H单元的内容是00H,执行SETB3DH后,由于3DH对应内部RAM27H的第5位,因此该位变为1,也就是27H单元的内容变为20H。该指令的执行过程如图2.7所示。第29页,本讲稿共97页图图2.7 位寻址示意图位寻址示意图第30页,本讲稿共97页2 2-2 -2 数据传送类指令数据传送类指令一、内部RAM数据传送类1、一般数据传送指令片外程序存储器ROMEPROM特殊功能寄存器SFR片内RAM128字节片外数据存储器RAMMOVCMOVXMOVPUSHPOPXCHXCHD第31页,本讲稿共97页数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部RAM、寄存器、外部RAM以及程序存储器之间的数据传送。数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。数据目的地址源地址第32页,本讲稿共97页 1.内部8位数据传送指令(15条)内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式:MOV,第33页,本讲稿共97页回忆前述操作数描述符:A,direct,Rn,Ri,#data,DPTR等。经排列组合可写出下列指令:MOVA,Rn;ARn以下类似。MOVA,directMOVA,RiMOVA,#dataMOVRn,ARnAMOVRn,directMOVRn,#data第34页,本讲稿共97页MOVdirect,RnMOVdirect,directMOVdirect,RiMOVdirect,#dataMOVRi,A(Ri)AMOVRi,directMOVRi,#dataMOVDPTR,#data16;唯一的16位数据传送指令。上述指令不影响任何标志位,但PSW的P位除外。(direct)AMOVdirect,A;第35页,本讲稿共97页上述指令不影响任何标志位,但PSW的P位除外。注意:MOVRn,RnMOVRi,RiMOVRn,RiMOV#data,A等等指令是非法指令。哇!好容易出错啊!第36页,本讲稿共97页例2.1已知相应单元的内容如下,请指出每条指令执行后相应单元内容的变化。累加器A40H寄存器R050H内部RAM:40H30H内部RAM:50H10H第37页,本讲稿共97页(1)MOVA,#20H(2)MOVA,40H(3)MOVA,R0(4)MOVA,R0解:(1)MOVA,#20H执行后A=20H。(2)MOVA,40H执行后A=30H。(3)MOVA,R0执行后A=50H。(4)MOVA,R0执行后A=10H。第38页,本讲稿共97页例2.2已知相应单元的内容如下,请指出下列指令执行后各单元内容相应的变化。寄存器R050H寄存器R166H寄存器R630H内部RAM:50H60H内部RAM:66H45H内部RAM:70H40H第39页,本讲稿共97页(1)MOVA,R6(2)MOVR6,70H(3)MOV70H,50H(4)MOV40H,R0(5)MOVR1,#88H解:(1)MOVA,R6执行后A=30H。(2)MOVR6,70H执行后R6=40H。(3)MOV70H,50H执行后(70H)=60H。(4)MOV40H,R0执行后(40H)=60H。(5)MOVR1,#88H执行后(66H)=88H第40页,本讲稿共97页二、外部RAM数据传送MOVXA,RiMOVXA,DPTRMOVXRi,AMOVXDPTR,A例:若DPTR=3020H,外部RAM(3020H)=48H,执行指令MOVXA,DPTR后,A=?第41页,本讲稿共97页注意:外部RAM只能通过累加器A进行数据传送。累加器A与外部RAM之间传送数据时只能间接寻址方式,间接寻址寄存器为DPTR,R0,R1。以上传送指令结果通常影响程序状态字寄存器PSW的P标志。第42页,本讲稿共97页例2.3 把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。解:MOVDPTR,#2040HMOVXA,DPTR;先将2040H单元的内容传送到累加器A中MOVDPTR,#2560HMOVXDPTR,A;再将累加器A中的内容传送到2560H单元中第43页,本讲稿共97页三、字节交换指令XCHA,RnARnXCHA,directA(direct)XCHA,RiA(Ri)XCHDA,Ri半字节交换,低4位交换,高4位不变 A30(Ri)30SWAPA半字节交换不影响任何标志位。第44页,本讲稿共97页四、栈操作指令PUSHdirectPOPdirect不影响任何标志位。PUSHdirect指令执行中,机器自动进行两步操作:(1)SPSP+1(2)(SP)(direct)例2.4、设SP=09H,(DPTR)=0123H,分析:执行PUSHDPLPUSHDPH后,各单元中的内容。第45页,本讲稿共97页POPdirect指令执行中,机器也自动进行两步操作:(1)(direct)(SP)(2)SP(SP)1例2.5、设SP=0BH,(0BH)=01H,(0AH)=23H执行POPDPHPOPDPL后,各单元中的内容。第46页,本讲稿共97页注意:注意:堆栈是用户自己设定的内部RAM中的一块专用存储区,使用时一定先设堆栈指针,堆栈指针缺省为SP=07H。堆栈遵循后进先出的原则安排数据。堆栈操作必须是字节操作,且只能直接寻址。将累加器A入栈、出栈指令可以写成:PUSH/POPACC或PUSH/POP0E0H而不能写成:PUSH/POPA堆栈通常用于临时保护数据及子程序调用时保护现场和恢复现场。以上指令结果不影响程序状态字寄存器PSW标志。第47页,本讲稿共97页 例2.6设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现该功能的程序段。解:MOVSP,#30H;设置堆栈指针,SP=30H为栈底地址PUSHACC;SP+1SP,SP=31H,ACC(SP)PUSHDPH;SP+1SP,SP=32H,DPH(SP)第48页,本讲稿共97页PUSH DPL;SP+1SP,SP=33H,DPL(SP)POP DPL;(SP)DPL,SP-1,SP=32HPOPDPH;(SP)DPH,SP-1,SP=31HPOP ACC;(SP)ACC,SP-1,SP=30H第49页,本讲稿共97页例例2.7:设(:设(10H)01H,(,(20H)1AH。将内部。将内部RAM的的10H与与20H两单元的内容交换。两单元的内容交换。解:解:PUSH 10H PUSH 20H POP 10H POP 20H第50页,本讲稿共97页五、查表指令与ROM之间的数据传送。MOVCA,A+DPTRMOVCA,A+PCMOVC含义是传送常数。以DPTR为基地址的指令,可在ROM的64KB范围内查表;而以PC为基地址的指令只能在(PC)+1为中心上、下256B范围内查表。第51页,本讲稿共97页2 2-3 -3 算术运算类指令算术运算类指令包括:加、减、乘、除;加一、减一。一、加法指令ADDA,Rn;AA+Rn以下类同。ADDA,directADDA,RiADDA,#data第52页,本讲稿共97页ADDC A,Rn;A A+Rn+C;以下类同。ADDC A,directADDC A,RiADDC A,#data 上述四条指令多用于多字节数相加。INC A;A A+1 ,以下类同。INC RnINC directINC RiINC DPTR第53页,本讲稿共97页例2.8分别指出指令INCR0和INCR0的执行结果。设R0=30H,(30H)=00H。解:INCR0;R0+1=30H+1=31HR0,R0=31HINCR0;(R0)+1=(30H)+1(R0),(30H)=01H,R0中内容不变第54页,本讲稿共97页DAA;二十进制调整指令。执行过程中,CPU能根据加法运算后,累加器中的值和PSW中的AC及C标志位的状况自动选择一个修正值(00H、06H、60H、66H)与原运算结果相加,进行二十进制调整。第55页,本讲稿共97页例2.9设A=56H为56的压缩的BCD码数,R3=67H,CY=1执行ADDCA,R3DAA结果为:124注意:1)DA指令只能跟在加法指令后面使用;2)调整前参与运算的两数是BCD码数;3)DA指令不能与减法指令配对使用,但可以实现对A中压缩BCD数进行减一操作。第56页,本讲稿共97页二、减法指令SUBBA,Rn;AARnC,以下类同。SUBBA,directSUBBA,RiSUBBA,#data注意:减法之前先清零C。DECA;AA1,以下类同。DECRnDECRiDECdirect第57页,本讲稿共97页例2.10设R0=7FH,在内RAM中,(7EH)=00H,(7FH)=40H执行:DECR0DECR0DECR0结果为:(7FH)=3FH R0=7EH,(7EH)=0FFH。第58页,本讲稿共97页三、乘法和除法指令乘法:MULAB;(A)(B),积的低8位在A中,积的高8位在B中。除法:DIVAB;(A)(B),商在A中,余数在B中。;若(B)=0,则结果不定,(OV)=1。第59页,本讲稿共97页例2.11设A=C2H,R1=AAH,CY=1,分析执行指令ADDCA,R1后的执行结果。第60页,本讲稿共97页2-4 逻辑运算类指令逻辑运算类指令共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。一、单字节逻辑操作指令CLRA;A0CPLAA中8位按位求反。循环左移、右移指令:RLARLCARRARRCA注:左移一位相当于乘2;右移一位相当于除2。第61页,本讲稿共97页二、双字节逻辑操作指令“与操作”:ANLA,Rn;AARn,以下类同。ANLA,directANLA,RiANLA,#dataANLdirect,AANLdirect,#data例2.12、P1=35H,使其高4位输出0,低4位不变。解:ANLP1,#0FH此做法称为“屏蔽”位。第62页,本讲稿共97页“或操作”:ORLA,Rn;AARn,以下类同。ORLA,directORLA,RiORLA,#dataORLdirect,AORLdirect,#data例2.13、将A中的低3位送入P1中,并且保持P1中高5位不变。ANLA,#07HANLP1,#0F8HORLP1,A;(P1)=P7P6P5P4P3A2A1A0这称为“数位组合”。第63页,本讲稿共97页“异或操作”:XRLA,Rn;AARn,以下类同。XRLA,directXRLA,RiXRLA,#dataXRLdirect,AXRLdirect,#data例2.14、设P1=0B4H=10110100B,执行:XRLP1,#00110001B结果按#00110001取反,即:P1=10000101B=85H这称为“指定位取反”。第64页,本讲稿共97页2-5 控制转移类指令控制转移类指令作用:改变程序计数器PC的值,从而改变程序执行方向。分为四大类:无条件转移指令;条件转移指令;调用指令;返回指令。一、无条件转移指令LJMPaddr16AJMPaddr11SJMPrelJMPA+DPTR第65页,本讲稿共97页LJMPaddr16;长跳转指令转移目的地址addr16(PC),0000HFFFFH,64KBAJMPaddr11;绝对转移转移目的地址的形成:先(PC)(PC)+2;然后PC1511不变,PC100addr10064KB=216=25211=322KB转移目的地址与(PC)+2在同一个2KB范围内。第66页,本讲稿共97页SJMPrel;短转移,相对寻址。转移目的地址=(PC)+2+rel,所以rel=转移目的地址(PC)2但,实际使用中常写成SJMPaddr16,汇编时会自动转换成rel。JMPA+DPTR;间接转移,散转移指令。转移目的地址=A+DPTR本指令不影响标志位。常用于多分支程序结构中,可在程序运行过程中动态地决定程序分支走向。第67页,本讲稿共97页例2.15、执行下列程序解:MOVDPTR,#TABLEJMPA+DPTRTABLE:AJMPROUT0AJMPROUT1AJMPROUT2AJMPROUT3第68页,本讲稿共97页比较LJMP、AJMP、SJMP、JMP转移的起点和范围:LJMPLJMPPC64KAJMPAJMP2KSJMPSJMPPC+2-128+127JMPJMPA+DPTRPCPC+2DPTR256第69页,本讲稿共97页二、条件转移指令实现按照一定条件决定转移的方向,分三类:判零转移指令比较转移指令循环转移指令JZrel:若A=0,则转移,否则顺序执行。JNZrel:若A0,则转移,否则顺序执行。转移目的地址=PC+2+rel 不影响任何标志位。1、判零转移第70页,本讲稿共97页例2.16、将外RAM的一个数据块(首地址为DATA1)传送到内部数据RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。解:MOVR0,#DATA2MOVDPTR,#DATA1LOOP1:MOVXA,DPTRJZLOOP2MOVR0,AINCR0INCDPTRSJMPLOOP1LOOP2:SJMPLOOP2第71页,本讲稿共97页2、比较转移指令功能:比较二个字节中的值,若不等,则转移。CJNEA,#data,rel;若A#data,则PCPC+3+rel,否则顺序执行;若AB吗?入口YN123第73页,本讲稿共97页例2.17、设P1口的P1.0P1.3为准备就绪信号输入端,当该四位为全1时,说明各项工作已准备好,单片机可顺序执行,否则,循环等待。解:WAIT:MOVA,P1ANLA,#0FHCJNEA,#0FH,WAIT;P1.0P1.3不为全1时,返回WAITMOVR2,A第74页,本讲稿共97页3、循环转移指令DJNZRn,rel;RnRn-1,若Rn0,则PCPC+2+rel,否则顺序执行(二字节指令)DJNZdirect,rel;(direct)(direct)-1,若(direct)0,则PCPC+3+rel,否则顺序执行(三字节指令)本指令也为双功能指令,即减1操作和判断转移操作。第一操作数内容减1后,若差值不为零,则转移;否则顺序执行。转移目的地址=PC+2或3+rel第75页,本讲稿共97页例2.18、将8031内部RAM的40H4FH单元置初值#A0H#AFH。解:MOVR0,#40HMOVR2,#10HMOVA,#0A0HLOOP:MOVR0,AINCR0INCADJNZR2,LOOP 第76页,本讲稿共97页LCALLaddr16;长调用ACALLaddr11;绝对调用LCALLaddr16;转移范围64KB,不影响标志位。执行中自动完成如下过程:PCPC+3SPSP+1(SP)PC70,保护断点地址低字节;SPSP+2(SP)PC158,保存断点地址高字节;PCaddr16,目的地址送PC,转子程序。三、调用指令第77页,本讲稿共97页LCALL34H56HMOV执行结果:SP=09H,(09H)=21H,(08H)=03H,PC=3456HSP07HSPSP08H09H2100H3456H外ROM内RAMPC+3PC2103HPC03H21H例2.19、设SP=07H,PC=2100H,子程序首地址为3456H,执行:LCALL3456HMOVA,20H第78页,本讲稿共97页ACALLaddr11:转移范围与(PC)+2在同一个2KB内。不影响任何标志位,执行中机器自动完成下列过程:PCPC+2SPSP+1(SP)PC70SPSP+2(SP)PC158PC100addr100第79页,本讲稿共97页三、返回指令从子程序返回主程序。RET;调用子程序返回;RETI;中断子程序返回。结论:RET返回地址事先已知,而RETI的返回地址在程序执行中产生的,不固定。不影响标志位,但PSW不能恢复到中断前的状态。其机器自动操作过程如下:PC158(SP)SPSP1PC70(SP)SPSP1第80页,本讲稿共97页例2.20、设SP=0BH,(0AH)=23H,(0BH)=01H执行:RETMOV(PC)=0123H(返回主程序)结果:SP=09H,01 23HSP0BHSPSP0AH09H3456H外ROM内RAMPCPC23H01H23H01H(PC)=第81页,本讲稿共97页空操作指令NOP;空操作不执行任何操作,仅仅使(PC)+1,继续执行下条指令,不影响标志位,在ROM中占一个字节。用于延时调整。第82页,本讲稿共97页2 2-6 -6 位操作类指令位操作类指令包括:位传送指令、条件转移指令、位运算指令。位操作由单片机内布尔处理器来完成。位地址的三种表示:1)使用直接位地址表示;如20H、30H、33H等;2)使用位寄存器名来表示;如C、OV、F0等;3)用字节寄存器名后加位数来表示;如PSW.4、P0.5、ACC.3等;第83页,本讲稿共97页一、位传送指令MOVC,bitMOVbit,C功能:C(bit);或(bit)C二、位状态控制指令CLRbit;(bit)0SETBbit;(bit)1CPLbit;(bit)(/bit)CLRCSETBCCPLC第84页,本讲稿共97页例2.21:若C=1,P3=1100 0101B,P1=0011 0101B,执行以下指令:MOV P1.3,C MOV C,P3.3 MOV P1.2,C第85页,本讲稿共97页ANLC,bit;CC(bit)ANLC,/bit;CC(/bit)ORL C,bit ;C C(bit)ORL C,/bit ;C C(/bit)三、位逻辑操作指令第86页,本讲稿共97页四、布尔条件转移指令有5条,分别对C和直接位地址进行测试,并根据其状态执行转移。1、判布尔累加器转移JC rel ;C=1,转移,否则顺序执行。JNC rel ;C=0,转移,否则顺序执行。不影响标志。转移地址:PC PC+rel 第87页,本讲稿共97页 解:MOV A,30H CJNE A,40H,LOOP1 SETB 7FH SJMP$LOOP1:JC LOOP2 MOV 20H,A MOV 21H,40H SJMP$LOOP2:MOV 20H,40H MOV 21H,ASJMP$例2.22、比较内部RAM的30H和40H单元中的二个无符号数的大小,将大数存入20H单元,小数存入21H单元,若二数相等,则使内RAM的第127位置1。第88页,本讲稿共97页2、判位变量转移JB bit,rel ;(bit)=1,则转移,否则顺序执行。JBC bit,rel ;(bit)=1,则转移,否则顺序执行,;且无论(bit)是否等于1,均使该位清零。JNB bit,rel ;(bit)=0,则转移,否则顺序执行。;不影响标志。第89页,本讲稿共97页例2.23、试判断A中的正负,若为正数,存入20H单元;若为负数则存入21H单元。解:JB ACC.7,LOOP MOV 20H,A SJMP$LOOP:MOV 21H,A SJMP$第90页,本讲稿共97页伪指令是告诉汇编程序,如何汇编源程序的指令。伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。1、起始地址伪指令 ORGORG addr16 用于规定目标程序段或数据块的起始地址,设置在程序开始处。2、汇编结束伪指令 END 告诉汇编程序,对源程序的汇编到此结束。一个程序中只出现一次,在末尾。2.7伪指令伪指令第91页,本讲稿共97页3、赋值伪指令 EQU 告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。格式:标号名称 EQU 数值或汇编符号 “标号名称”在源程序中可以作数值使用,也可以作数据地址、位地址使用。先定义后使用,放在程序开头。4、定义字节伪指令 DB 告诉汇编程序从指定的地址单元开始,定义若干字节存储单 元并赋初值。格式:标号:DB 字节数据或字节数据表5、定义字伪指令 DW 从指定地址开始,定义若干个16个位数据,高八位存入低地址;低八位存入高地址。第92页,本讲稿共97页例2.24 ORG 1000H PIOI:DW 7654H,40H、12、AB6、数据地址赋值伪指令 DATA 将表达式指定的数据地址赋予规定的字符名称 格式:字符名称 DATA 表达式注:该指令与EQU指令相似,只是,可先使用后定义,放于程序开头、结尾均可。第93页,本讲稿共97页7、定义空间伪指令 DS 从指定地址开始,保留由表达式指定的若干字节空间作为备用空间。格式:标号:DS 表达式例2.25、ORG 1000H DS 0AH DB 71H,11H,11H ;从100BH开始存放 ;71H11H、11H。注:DB、DW、DS 只能用于程序存储器;而不能用于数据存储器。第94页,本讲稿共97页8、位地址赋值伪指令 BIT将位地址赋予规定的字符名称。格式:字符名称 BIT 位地址例2.26、X1 BIT P12 相当于 X1 EQU 92H第95页,本讲稿共97页本章小结本章小结1 1、80518051指令基本格式由标号、操作码、操作数和注释组成指令基本格式由标号、操作码、操作数和注释组成2 2、80518051指令系统有七种寻址方式指令系统有七种寻址方式3 3、directdirect、RiRi、DPTRDPTR、RnRn、#data#data、(、(x x)、()、(x x)的含义)的含义4 4、111111条指令,共分几大类?条指令,共分几大类?数据传送类指令又分成多少类?数据传送类指令又分成多少类?5 5、算术运算类指令、算术运算类指令6 6、逻辑操作指令、逻辑操作指令第96页,本讲稿共97页作业作业P87P871 1、2 2、3 3、6 6、8 8、1111、1212、1414第97页,本讲稿共97页

    注意事项

    本文(单片机汇编指令精.ppt)为本站会员(石***)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开