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

    单片机指令系统.pptx

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

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

    单片机指令系统.pptx

    2关于汇编语言:特点:易于记忆,理解,但不能被计算机识别和执行。必须翻译成机器语言指令。汇编:把汇编语言编写的原程序翻译成机器语言的过程叫汇编。翻译工具称为汇编程序或汇编器。机器码汇编语言指令格式E562MOVA,62H操作码操作数第1页/共231页第2页/共231页汇编语言格式:用助记符表示指令的格式。80C51 80C51汇编语言典型的指令格式 操作码 操作数;注释 目的操作数,源操作数 操作码:是用助记符表示的字符串,它的作用 是命令CPUCPU做某种操作。操作数:是参与指令操作的数据或数据地址 MOV A MOV A,38H38H;(38H38H)A A 第3页/共231页3.2 80C513.2 80C51单片机寻址方式MOVA,38H;(38H)A指令的执行:在执行指令时,CPU首先要根据地址寻找参加运算的操作数,然后才能对操作数进行操作,操作结果还要根据地址存入相应存储单元或寄存器寻址方式:在计算机中,寻找操作数的方法定义为指令的寻址方式。80C51有7种寻址方式第4页/共231页80C51的寻址方式1.寄存器寻址2.直接寻址3.寄存器间接寻址4.立即寻址5.变址寻址6.位寻址7.相对寻址第5页/共231页1.寄存器寻址操作数在寄存器中。指定寄存器就能得到操作数。在指令中,以符号名称来表示寄存器。寻址范围:当前寄存器组R0-R7。部分专用寄存器,累加器A,寄存器B及数据指针等例:”INCR2”第6页/共231页北航p53图3-1第7页/共231页2.直接寻址方式是由指令直接给出操作数地址。也就是直接寻址指令的指令码中含有操作数地址,该地址通常是8位二进制数。E562MOVA,62H;A(62H)62H为直接寻址地址。第8页/共231页第9页/共231页直接寻址方式可访问三种地址空间(1)内部RAM的007F(片内RAM的低128字节)。E562MOVA,62H;A(62H)(2)高128个RAM中的专用寄存器(除了以单元地址形式出现外,还可以以寄存器符号)E581MOVA,SP;ASP(3)特定的位地址空间A220 MOV C,20H;Cy (20H)第10页/共231页注:是专用寄存器的唯一的寻址方法 可以直接写地址 部分可写名字 E581 MOV A E581 MOV A,SPSP;A SP A SP E581 MOVA E581 MOVA,81H;A 81H;A(81H)(81H)第11页/共231页3.寄存器间接寻址指令码中含有操作数地址的寄存器号。计算机执行这类指令时,首先根据指令码中寄存器号找到所需要的操作数地址,再由操作数地址找到操作数。MOVA,R0;寄存器R0中存放着地址,操作数在该地址中。第12页/共231页第13页/共231页寻址范围:(1)内部数据RAM:低128个RAM,只能使用R0,R1作间接寻址寄存器(2)外部RAM64KB,间接寻址寄存器为DPTRMOVXA,DPTR(3)外部低256单元:可用DPTR,R0,R1间址寄存器采用Ri,DPTR区别于寄存器寻址的标记第14页/共231页注意:Ri用于片内RAM的寻址007F也可以用于片外RAM000000FFDPTR:寻址范围可覆盖片外64K不能用于寻址特殊功能寄存器SFR例如,如下程序不能访问SPMOVR0,#81H;MOVA,R0第15页/共231页4立即寻址操作数在指令中直接给出“#”为立即数指示符,没有就是直接地址如:7462 MOV A,#62H;A 62H立即数,一般为8位,16位立即数作地址MOVDPTR,#data16;第16页/共231页5.变址间接寻址以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,这两者内容之和形成新的16位地址作为操作数地址.如:MOVCA,A+DPTR第17页/共231页累加器A中应预先存放有被寻址操作数地址对基地址的偏移量,该地址偏移量应是00H-FFH范围内的无符号数.第18页/共231页专门针对程序存储器的寻址方式第19页/共231页6位寻址方式位寻址指令的指令码中含有位地址。根据位地址可以找到位操作数。如:ANLC,30H;位寻址范围:(1)内部RAM寻址区,20H2FH,128位(2)某些特殊功能寄存器SFR,其特征是它们的物理地址应能被8整除。分布在80HFFH的字节区。第20页/共231页第21页/共231页第22页/共231页位寻址时,指令中位的表示方法(1)直接使用物理位地址表示法MOVC,7FH;Cy(7FH)(2)采用第几字节单元第几位的表示MOVC,2FH.7;Cy(7FH)(3)可以位寻址的特殊功能寄存器直接采用寄存器名加位数MOVC,ACC.7;(4)经伪指令定义过的字符名称第23页/共231页7.相对寻址方式:为程序转移而设置,只为转移指令所使用在相对转移指令中使用.是以PC的当前值为基准,加上指令中给出的相对偏移量(rel),形成有效转移地址.地址的相对偏移量是一个带符号的8位二进制数.常以补码的形式出现。其取值范围-128-+127.例如:1000HSJMPrel;设rel=36H,指令放在1000H目的地址:转移指令地址+转移指令字节数+rel第24页/共231页第25页/共231页转移范围:以PC的当前值为起始地址,相对偏移在-128-+127个字节单元之间两类相对转移指令:双字节相对转移指令,又称短转移指令三字节相对转移指令,又称长转移指令第26页/共231页机器数的原码,反码和补码机器数的原码:二进制数符号化以后的表现形式。定义为最高位为符号位,其余位为数值位。符号位的0表示该数为正数。符号位为1表示它是负数。机器数有原码,反码和补码共三种表示方法。反码:正数的反码和原码相同,负数反码的符号位和负数原码的符号位相同,数值位是按位取反补码:正数的补码与正数的原码,反码相同。负数的补码符号位为1。负数的补码是反码加1。-Y补=Y+1符号位数值位第27页/共231页已知X=+1010B,Y=-01010B,试分别写出它们在8位微机中的补码,反码和补码X原=00001010B Y原=10001010BX反=00001010B Y反=11110101BX补=00001010B Y补=11110110B第28页/共231页 8位有符号数表示的范围:原码:-127+127反码:-127+127补码:-128+127运算的结果超过此范围则发生溢出。第29页/共231页教材表5.1P134相对寻址位寻址第30页/共231页练习:1.指出下列每条指令源操作数的寻址方式和功能MOVA,#40HMOVA,40HMOVA,R1MOVCA,A+PCMOVA,R3SJMPLOOP第31页/共231页注1 1:在指令系统中,字节地址和位地址是有区别的,前者表示direct后者表示bitE520MOVA,20H;A(20H)A220MOVC,20H;Cy(20H)第32页/共231页注2 2:在80C5180C51指令系统中,累加器有A A,ACCACC和E0HE0H三种表现形式,分属于不同的寻址方法,但执行效果完全相同。04 INC A 04 INC A;05E0 INC ACC 05E0 INC ACC;05E0 INC 0E0H;05E0 INC 0E0H;在指令系统中累加器的助记符A A,作为直接地址时的助记符ACCACC第33页/共231页3.380C51单片机指令系统111条5大类:1数据传送指令(29条)2算术运算类指令(24条)3逻辑运算及移位类指令(24条)4控制转移指令(17条)5位操作类(17条)第34页/共231页教材45页指令中符号意义说明:在分类介绍指令之前,先把指令中使用的一些符号意义作简单说明/-加在位地址的前面,表示对该位状态取反。()-某寄存器或某单元的内容。()-由间接寻址的单元中的内容。箭头左边的内容被箭头右边的内容所取代。第35页/共231页Rn-当前寄存器组的8个通用寄存器R0R7,所以n=07。Ri-可用作间接寻址的寄存器,只能是R0、R1两个寄存器,所以i=0,1。direct-内 部 RAM的 8位 地 址。既可以是内部RAM的低128个单元地址,也可以是专用寄存器的单元地址或符号。因此在指令中表示直接寻址地址。#data-8位立即数。#data16-16位立即数。addr16-16位目的地址,只限于在LCALL和LJMP指令中使用。第36页/共231页addr11-11位目的地址,只限于在ACALL和AJMP指令中使用。rel-相对转移指令中的偏移量,为8位带符号补码数。DPTR-数据指针。bit-内部RAM(包括专用寄存器)中的直接寻址位。A-累加器。(直接寻址方式的累加器表示为ACC)B-B寄存器。C-进位标志位,它是布尔处理机的累加器,也称之为累加位。-间址寄存器的前级标志。第37页/共231页3.3.1数据传送指令(数据流动的路径)用于数据的保存和交换内部RAM数据传送(MOV)数据传送外部数据传送(MOVX)程序存储器数据传送 (MOVC)数据交换AB堆栈操作第38页/共231页1.内部RAM数据传送指令组 包括:寄存器,累加器,RAM,专用寄存器间数据传送(1)立即传送指令位立即数传送指令(条)MOVA,#data;AdataMOVdirect,#data;directdata内部个RAM和部分专用寄存器MOVRn,#data;RndataMOVRi,#data;(Ri)data 01111rrrdata第39页/共231页16位立即数传送指令(1条)(三字节指令)MOV DPTR,#data 16;DPTR data16例题例题:已知:R0=20H,8031执行如下指令后,累加器A,R7,20H和21H单元中的内容是什么MOVA,#18H;MOVR7,#28H;MOVR0,#38H;MOV21H,#48H;解:A=18H,R7=28H,(20H)=38H,(21H)=48H第40页/共231页(2)内部内部RAM单元之间的数据传送指令(单元之间的数据传送指令(5条)条)MOVdirect2,direct1;direct2(direct1)MOV direct,Rn;(direct)(Rn)MOVRn,direct;Rn(direct)MOV direct,Ri ;direct((Ri))MOV Ri,direct;(Ri)(direct)功能:把上述逗号右侧所规定的源操作数传送到逗号左侧的目的存储单元。内部RAM单元之间的数据传送可以使用直接寻址,寄存器寻址以及寄存器间接寻址第41页/共231页例题:已知:R1=32H,(30H)=AAH,(31H)=BBH,(32H)=CCH,试问如下指令执行后累加器A,50H,R6,32H和P1口中的内容是什么MOVA,30H;MOV50H,A;MOVR6,31H;MOVR1,30H;MOVP1,32H;解:A=AAH,(50H)=AAH,R6=BBH,(32H)=AA,P1=AAH第42页/共231页(3)通过累加器的数据传送指令()通过累加器的数据传送指令(6条):条):MOVA,Rn;ARnMOVRn,A;RnAMOV A,direct;A(direct)MOVdirect,A;directAMOVA,Ri;A(Ri)MOVRi,A;(Ri)A功能:实现累加器与不同寻址方式的内部RAM单元之间的数据传送第43页/共231页例题已知(40H)=11H,(41H)=22H,R0=40H,R1=41H,试问如下指令执行后,A,40H,41H和42H单元的内容是什么。MOVA,R0;MOVR1,A;MOV42H,R1;A=11H、(40H)=11H,(41)=11H,(42H)=11H第44页/共231页数据交换的方式第45页/共231页注意:以累加器A为目的地址的传送指令会影响PSW中的奇偶标志位。其余传送指令对所有标志均无影响。正确估计指令字节数的方法:凡指令中含有直接地址或立即数的,指令字节数均应在原有基础上加1。MOV A,Ri;单字节指令MOVA,direct;双字节指令MOVdirect,#data;三字节指令注意程序的合法性:MOVRn,Ri;MOV#data,A第46页/共231页3.3.1数据传送指令(数据流动的路径)用于数据的保存和交换内部数据传送(MOV)数据传送外部数据传送(MOVX)程序存储器数据传送 (MOVC)数据交换AB堆栈操作第47页/共231页2外部RAM数据传送指令外部数据存储器的读/写指令为MOVXMOVX对外部数据存储器读/写只能通过累加器A A使用间接寻址方式进行。间接寻址寄存器可以是DPTRDPTR和RiRi累加器A寄存器间接寻址R1R08位指针寻址外部256个单元寄存器间接寻址DPTR16位指针外部寻址64K第48页/共231页1.使用DPTR进行间接寻址MOVXA,DPTR;A(DPTR)MOVXDPTR,A;(DPTR)(A)DPTR所指定的片外数据存储器与累加器之 间 传 送 数 据。访 问 外 部 RAM的 64K区0000H-FFFFH2.使用R1,R0进行间接寻址MOVXA,Ri;A(Ri)MOVXRi,A;(Ri)(A)完成R0,R1为地址指针的片外存储器与累加器之间的数据传送。访问RAM的低地址区。0000H-00FFH(注意:p53)第49页/共231页例题若已知片内RAM的(30H)=88H,编写程序将30H中的内容送到片外RAM的1200H单元。解:内部RAM30H单元中的数是不能直接传送到外部RAM的1200H单元的,必须通过累加器A的转送。相应程序为:MOVR0,#30H;MOVA,R0;A(30H)MOVDPTR,#1200;MOVXDPTR,A;1200HA第50页/共231页传送过程片内RAM30H88H片外RAM1200H88H累加器A第51页/共231页3.程序存储器数据传送指令(向A传送指令)功能是对存放在程序存储器中的数据表格进行查找传送.只能向累加器A传送无论是内部程序存储器还是外部程序存储器,读指令为MOVC只能向A传送,采用变址寻址方式。第52页/共231页只有两条读指令:MOVCA,A+DPTR;A(A)(DPTR)MOVCA,APC;A(A)(PC)累加器A基址寄存器+变址寄存器变址寻址PC+A(程序存储器0-256K)基址寄存器+变址寄存器变址寻址DPTR+A(程序存储器0-64K)第53页/共231页例:第54页/共231页MOVCA,A+DPTR;执行过程:第55页/共231页两条指令的区别:DPTR 作基址寄存器,可灵活地查询64KB空间的数据(远程查表)PC作基址寄存器,只能查询当前PC至PC256个字节范围内的数据(近程查表)第56页/共231页第57页/共231页3.3.1数据传送指令(数据流动的路径)用于数据的保存和交换内部数据传送(MOV)数据传送外部数据传送(MOVX)程序存储器数据传送 (MOVC)数据交换AB堆栈操作第58页/共231页4数据交换指令组(RAM与A的交换)整字节半字节1.整字节交换指令(3条)XCHA,Rn;(A)(Rn)XCH A,direct;(A)(direct)XCH A,Ri;(A)(Ri)2.半字节交换指令(低4位交换)XCHDA,Ri;A30(Ri)303.累加器高低半字节交换指令SWAPA;(A)30(A)74第59页/共231页例:设(A)57H,(20H)=68H,(R0)30H,(30H)39H代码结果XCHA,20H;(A)68H,(20H)57HXCHA,R0;(A)39H,(30H)57HXCHA,R0;(A)30H,(R0)57HXCHDA,R0;(A)59H,(30H)37HSWADA,;(A)75H第60页/共231页5。堆栈操作指令组堆栈操作指令是一种特殊的数据传送指令,其特点是根据堆栈指示器SPSP中栈顶地址进行数据交换。1.1.进栈指令:PUSH PUSH direct direct ;(sp)(sp)(sp)+1,(sp)+1,((spsp))(direct)(direct)其功能内部低128128个单元或专用寄存器内容送栈顶单元。或者说把直接地址中的数压入堆栈。第61页/共231页2 2.出栈指令:POP POP directdirect;(direct)(direct)(sp),(sp)(sp),(sp)(sp)-1(sp)-1把栈顶中的数弹出到直接地址。注意:是对直接寻址单元的内容进行操作:内部RAMRAM低128128个单元或专用寄存器第62页/共231页例:PUSHDPL;保护DPL内容PUSHDPH;保护DPH内容PUSHPSW;保护PSW内容PUSHACC;保护累加器内容.POPACC;恢复累加器内容POPPSW;恢复PSW内容POPDPH;恢复DPH内容POPDPL;恢复DPL内容以上是对DPTR、PSW,A中内容的保护第63页/共231页A:代表累加器ACC:代表累加器的地址堆栈操作只有直接寻址方式注:正确指令错误指令PUSHACCPUSHAPUSH00HPUSHR0POPACCPOPAPOP00HPOPR0第64页/共231页数据传送类指令一览表第65页/共231页第66页/共231页对指令的几点说明:(1)不同的寻址方式可实现相同的数据传递。如:(26H)(A)1.MOV26H,A寄存器寻址方式两字节F5H26H2.MOVR0,#26HMOVR0,A3.MOV26H,ACC直接寻址方式三字节85H26HE0H4.MOV26H,E0H5.PUSHACCPOP26H(2)两条指1、3令看起来类似,但是是两条不同的指令数据传送,不影响程序状态字PSW。第67页/共231页(3)数据传送,除了在以累加器A为目的操作数时会对奇偶标志P有影响外,其余不影响程序状态字PSW。第68页/共231页3.3.2算数运算类指令ADD类指令:共4条(1)ADDA,Rn;AA+(Rn)(2)ADDA,direct;AA+(direct)(3)ADDA,Ri;AA+(Ri)(4)ADDA,#data;AA+data1加法指令ADD:不带进位的加法运算指令ADDC:带进位的加法运算指令第69页/共231页加法指令对程序状态字的影响如果位3有进位,则辅助进位标志AC置“1”,反之AC清“0”如果位7有进位,则进位标志CY置“1”,反之清“0”如果位6有进位而位7没有进位或位7有进位而位6没有进位,则溢出标志OV置“1”,反之OV清“0”。OV=C6C7溢出标志的状态只有在有符号加法运算时。无符号运算时,用CY判断是否有溢出第70页/共231页 程序状态字寄存器PSW各位的意义:CYACF0RS1RS0OV P进位位半进位位溢出位奇偶位用户标志工作寄存器选择位高位进位标志位CY,简称C:反映算术运算时,最高位D7向更高位有无进位或借位,若有CY=1;若无CY=0。11011010001001111+10000001-1000000010011010111001111CY=1有进位CY=1有借位F1第71页/共231页半进位标志AC:反映算术运算时,低半字节向高半字节有无进位或借位,若有AC=1;若无AC=0。1010110110100101+10101000-0001100010101010110001101D3位相加向D4位有进位D3位相减向D4位有借位AC=1CY=1AC=1CY=0溢出标志位OV:反映运算的结果是否发生溢出,有溢出OV=1;无溢出OV=0溢出的概念:第72页/共231页机器数的原码,反码和补码机器数的原码:定义为最高位为符号位,其余位为数值位。符号位的0表示该数为正数。符号位为1表示它是负数。反码:正数的反码和原码相同,负数反码的符号位和负数原码的符号位相同,数值位是按位取反补码:正数的补码与正数的原码,反码相同。负数的补码是反码加1。-Y补=Y+1机器数:数的符号和值均采用二进制的表示形式符号位数值位第73页/共231页已知X=+1010B,Y=-01010B,试分别写出它们在8位微机中的补码,反码和补码X原=00001010BY原=10001010BX反=00001010BY反=11110101BX补=00001010BY补=11110110B第74页/共231页8位有符号数表示的范围:原码:-127+127反码:-127+127补码:-128+127运算的结果超过此范围则发生溢出。例120+105=22501111000+0110100111100001结果为负数,显然错误!符号位以下将D6向D7的进位称为C6,将D7向更高位的进位称为C7。此例中C7=0,C6=1,有溢出,OV=1此例为数值位溢出侵犯符号位,发生错误。C7C6第75页/共231页数值位溢出侵犯符号位有时也能得到正确的结果。又例-3+(-2)=-5-3-2原码1000001110000010反码1111110011111101补码1111110111111110-3+(-2)11111101+11111110111111011-5的补码此例中C7=1,C6=1,无溢出,结果正确。第76页/共231页总结溢出规律:C7=0C6=0数值位、符号位均无溢出,OV=0C7=0C6=1数值位溢出侵犯符号位,OV=1C7=1C6=0符号位有溢出,OV=1C7=1C6=1数值位符号位均有溢出但结果正确,OV=0C7和C6相同为0,相异为1,符合异或运算法则:OV=C7C6注意:溢出OV与进位CY的区别。CY主要用于无符号数的运算,OV主要用于有符号数的运算。第77页/共231页奇偶标志位P:反映累加器A的内容中1的个数为偶数或奇数,偶数个1P=0;奇数个1P=1工作寄存器区选择位RS1、RS0改变RS1、RS0的组态,可切换Rn的不同工作区。前述。用户标志F0:可视实际需要规定其意义。第78页/共231页时间:9月27日(星期日)(上10月7日,周三课):实验内容Pi口。第一组:5,6节第二组:7,8节9月30日(星期三):实验内容软件清零。第一组:5,6节 第二组:7,8节地点:自动化学院3号楼313实验分组:实验的详细内容参见实验指导书。分为两组。第一组:车辆一班全体同学,车辆二班的学号120的同学,交换生的8名同学第二组:车辆二班的学号21-44的同学,车辆三班的全体同学要求:请同学们自觉遵守实验室的纪律,听从实验室老师的指挥。实验室老师:梁老师(男),耿老师(女)2009年微机控制技术实验安排:第79页/共231页3.3.2算数运算类指令ADDADD类指令类指令:共4条(1)ADDA,Rn;AA+(Rn)(2)ADDA,direct;AA+(direct)(3)ADDA,Ri;AA+(Ri)(4)ADDA,#data;AA+data1加法指令ADD:不带进位的加法运算指令ADDC:带进位的加法运算指令2009/9/16第80页/共231页与A相加,结果仍放A中。参加运算的两个操作数必须是8位二进制的数。可以根据编程需要,把参加运算的两个操作数看作无符号数(0-255),也可以把它看作带符号的数。通常采用补码的形式(-128-+127)计算机总是按照有符号的数法则运算,并产生PSW中的标志位若参加运算的两个操作数看作无符号的数,应根据Cy判断结果操作数是否溢出;若参加运算的两个操作数看作有符号的数,则应根据OV判断运算结果是否溢出。第81页/共231页8051执行如下指令后累加器A和PSW中各标志位的变化状况。MOVA,#19H;ADDA,#66H;25A=00011001B+102Data=01100110B127001111111B确定PSW中各标志位的方法:因为C7=0:Cy=0低4位向高4位无进位:AC=0溢出标志:OV=C6C7=00=0;没有产生溢出A中结果操作数为奇数:P=100C7C6CyACF1RS1RS0OVF0P00000001PSWCP:最高位的进位位CS:次高位的进位位第82页/共231页带Cy的加法指令:主要用于多字节的加法运算(共4条)(1)ADDCA,Rn;(A)(A)+(Rn)+(CY)(2)ADDCA,direct;(A)(A)+(direct)+(CY)(3)ADDCA,Ri;(A)(A)+(Ri)+(CY)(4)ADDCA,data;(A)(A)+data+(CY)lCy中的值是指令执行前的Cy值,不是指令执行中的Cy值。lPSW中各标志位状态和不带Cy的加法指令相同第83页/共231页例1:已知:A=85H,R0=30H,(30H)=11H,(31H)=FFH,Cy=1,试问CPU执行如下指令后累加器A和Cy中的值是多少?ADDCA,R0;ADDCA,31H;ADDCA,R0;ADDCA,#85H;A=B6H,Cy=0A=85HCy=1A=97HCy=0A=0BHCy=1第84页/共231页加1指令:共5条INCA;(A)(A)+1INCRn;(Rn)(Rn)+1INCdirect;(direct)(direct)+1INCRi;(Ri)(Ri)+1INCDPTR;(DPTR)(DPTR)+1l第一条指令影响程序状态PSW的奇偶标志位有影响,其它对PSW无影响第85页/共231页2带借位减法指令组(无不带借位减法)共4条:SUBBA,Rn;(A)(A)-(Rn)-(CY)SUBBA,direct;(A)(A)-(direct)-(CY)SUBBA,Ri;(A)(A)-(Ri)-(CY)SUBBA,#data;(A)(A)-data-(CY)该指令影响PSWPSW中CYCY,ACAC,OVOV,P P标志位。第86页/共231页例:CLRC;MOVA,#52HSUBBA,#0B4H;82101010010OV=1P=1-)-76-1011010015810011110CyACF1RS1RS0OVF0P11000101PSW第87页/共231页注:在单片机中,减法操作实际上是在控制器控制下采用补码加法来实现的。但在实际应用中,若要判断减法的操作结果,则可按二进制减法法则进行,A=-128+127。无论相减两数是无符号的数还是有符号的数,减法操作总是按带符号二进制数进行。并对PSW中各标志产生影响。没有不带Cy的减法指令,所以单字节相减时,必须清除进位标志CY。利用SUBB指令,借助进位CY标志,可以实现多字节(多精度)减法。第88页/共231页第89页/共231页3.INC(加1)和DEC(减1)类指令加1类指令共5条,功能是将操作数内容加1INCA;(A)(A)+1INCRn;(Rn)(Rn)+1INCdirect;(direct)(direct)+1INCRi;(Ri)(Ri)+1INCDPTR;(DPTR)(DPTR)+1l第一条指令影响程序状态PSW的奇偶标志位有影响,其它对PSW无影响第90页/共231页减1类指令共4条:DECA;(A)(A)1DECRn;(Rn)(Rn)1DECdirect;(direct)(direct)1DECRi;(Ri)(Ri)1l注意:没有DECDPTR除外,不影响程序状态字PSW第91页/共231页4.十进制调整指令用于对BCD码十进制数加法运算的结果进行修正指令格式:DAA;修正方法:1.若AC=1或A3A09,则AA+06H产生低位正确的码。2.若Cy=1或A7A49,则AA+60H产生位正确码第92页/共231页第93页/共231页为什么进行十进制调整二进制加法指令ADD,ADDC指令都是二进制加法指令,不能完全适应于BCD码十进制的加法运算,因此在使用ADD和ADDC指令对十进制数进行加法运算后,要对结果作有条件的修正。1)6+3=9,2)8+7=153)8+9=17011010001000+0011+0111+100110011111100011)的运算结果正确,2),3)运算结果不正确原因:BCD只用了4位二进制编码其中的10个编码。1010,1011,1100,1101,1110,1111无效码第94页/共231页功能是把A中二进制码自动调整成二-十进制码(BCD)。执行“”后CPU根据累加器的原始数值和PSW的状态,由硬件自动对累加器进行加06,60,66H指令只跟在ADD或ADDC加法指令后,不适用于减法。(教材p60改错)第95页/共231页第96页/共231页5.乘除指令组(单字节指令,时间最长,4个机器周期)1、乘法指令MULAB;(B158)(A70)(A)(B)说明:(1)两个无符号数的乘法操作(2)若乘积255,(OV)=1,表示乘积分别在B、A中,否则(OV)=0,乘积在A中(3)对CY,OV,P三个标志位产生影响.运算结果对进位标志位Cy总是清0,OV表示积的大小例:(A)=80H;(B)=32HMULAB结果1900H(A)=00H(B)=19H(OV)=1(CY)=0第97页/共231页例169=144MOVA,#10H;MOVB,#09H;MULAB;(A)=90H(144D),(B)=00H(OV)=0,(CY)=0,又例80160=12800MOVA,#50HMOVB,#0A0HMULAB;(A)=00H,(B)=32HB0(OV)=1,(CY)=0,AC不变第98页/共231页2、除法指令DIVAB;(A)(A)/(B),(B)余数说明:(1)CY总是为0(2)当(B)=0时,(OV)=1(3)8位无符号运算运算指令对标志的影响第99页/共231页第100页/共231页例25118=13余17MOVA,#FB;#251MOVB,#12H;#18DIVAB;(A)=0DH,(B)=11H,(OV)=0,(CY)=0第101页/共231页3.3.3逻辑运算类指令及移位类指令执行这些指令时一般不影响程序状态寄存器PSW,仅当目的操作数为A时对奇偶标志位有影响逻辑与指令ANLA,Rn;A(A)(Rn)ANL A,direct;A (A)(direct)ANL A,Ri;A (A)(Ri)ANLA,#data;A(A)dataANLdirect,A;(direct)(direct)(A)ANL direct,#data;(direct)(direct)data第102页/共231页逻辑或指令ORLA,Rn;A(A)(Rn)ORLA,direct;A(A)(direct)ORLA,Ri;A(A)(Ri)ORLA,#data;A(A)dataORLdirect,A;(direct)(direct)(A)ORLdirect,#data;(direct)(direct)data第103页/共231页例:设A=AAH和P1=FFH,编程把累加器A中的低4位送入P1口低4位,P1口高4位不变例:应用P1(30)A(30)P1(74)保持不变。MOVR0,A;A的内容整存R0中ANLA,#0FH;A的高4位清零,低4位不变ANLP1,#F0H;P1的高4位不变,低4位清零ORLP1,A;实现低4位给P1MOVA,R0;恢复A中内容第104页/共231页P1A76543210第105页/共231页逻辑异或(XRL):相同出0,不同出1XRLA,Rn;A(A)(Rn)XRLA,direct;A(A)(direct)XRLA,Ri;A(A)(Ri)XRLA,#data;A(A)dataXRLdirect,A;(direct)(direct)(A)XRLdirect,#data;(direct)(direct)data第106页/共231页累加器清0和取反指令组CLRA;累加器清0CPLA;累加器按位取反第107页/共231页例题:2008考试题假定A=83H,(R0)=17H,(17H)=34H,执行以下指令:ANLA,#17HORL17H,AXRLA,R0CPLA后,A的内容为(0CBH)。第108页/共231页循环移位指令:用来对数据进行逻辑处理,使之适应传送,存储和输出打印等(1)循环左移RLA;An+1AnA0A7(2)循环右移RRA;AnAn+1A7A0(3)带进位循环左移RLCA;An+1AnCYA7,A0CY(4)带进位循环右移RRCA;AnAn+1A7CYCYA0A.7A.0A.7A.0A.7A.0CyA.7A.0Cy第109页/共231页累加器清零“取反”指令清零:CLRA;(A)0取反:CPLA;(A)(A)不影响标志位虽然采用数据传送或者逻辑异或指令同样达到对累加器A清零或取反,但它们至少需要2个字节第110页/共231页3.3.4控制转移类指令根据要求修改程序存储器PC的内容,以改变程序的运行流程,实现转移。无条件转移类指令条件转移类指令控制转移指令第111页/共231页无条件转移指令(1)长转移指令(64K范围内转移):把指令码中的addr16送入程序计数器PC,使机器执行下条指令时无条件转移到addr16处执行程序。LJMPaddr16;3字节指令操作:(PC)addr015 第112页/共231页(2)绝对转移指令(2K范围内转移):构造程序转移的目的地址,实现程序的转移。AJMPaddr11;(PC)(PC+2)(PC)100addr11机器码:第113页/共231页AJMP的功能:构造程序转移的目的地址,实现程序转移。构造方法:以指令提供的11位地址去替换PC值的低11位内容,形成新的PC值。也就是转移的目的地址。注意:被替换的PC值是当前PC值第114页/共231页第115页/共231页(3)短转移指令(相对短转移指令):SJMPrel;l相对偏移量是一个带符号的8位二进制数,可正可负。转移的目的地址=(PC)+2+rel范围:-128+127l根据偏移量rel,求转移目的地址例一:0100HSJMP21H则(PC)=0100H+02H+21H=0123H例二:835AHSJMPE7H是个负数19H的补码1110 0111 1反码=正码19H则(PC)=835AH+02H-19H=8343H第116页/共231页l根据目的地址计算偏移量通过汇编语言编程序:编程序:写上地址标号即可如Loop:SJMPLoop向前转移:rel=目的地址-(源地址+2)=地址差-2向后转移:rel=FFH-(源地址+2-目的地址)+1=FEH-地址差源地址:SJMP指令所在的地址目的地址:转移地址地址差:目的地址-源地址第117页/共231页(4)变址寻址转移指令(间接转移指令)JMPA+DPTR;(PC)(A)+(DPTR)指令的转移地址:由数据指针DPTR的16位数和累加器A的8位数进行无符号相加形成,并直接送入PC.DPTR的基地址存转移指令表的起始地址,A为表的偏移量。通过此指令实现程序的分支转移2009/9/17第118页/共231页分支转移的例子:例:键盘上4个键,实现三种功能,(A)=00,01,02,03实现快进,读磁带,写磁带,反汇编,编写键盘处理程序。CLRC;清进位RLCA;键值乘以2MOVDPTR,#JAB;指向命令跳转表首址JMPA+DPTR;转操作键多分支处理程序JAB:AJMPRT;快进AJMPDT;转读磁带程序AJMPXT;转写磁带程序AJMPFHP;转反汇编程序第119页/共231页第120页/共231页第121页/共231页条条件件转转移移指指令令组组:为为相相对对转转移移指指令令,指指令令的的转转移移范范围围小小,若若要要实实现现64K范范围围内内的的转转移移,要借助长转移指令过渡要借助长转移指令过渡(1)累加器判零转移指令JZrel;若(A)0,则(PC)(PC)2rel若(A)0,则顺序执行(PC)(PC)2JNZrel;若(A)0,则(PC)(PC)2rel若(A)0,则(PC)(PC)2JUMP ZERO第122页/共231页(2)比较转移指令作为程序转移的指令(4条)间接的数据比较指令格式:CJNE,rel3字节指令含义:若它们的值不相等,则转移;相等,则顺序执行CJNEA,data,rel;PCPC+relCJNEA,direct,rel;累加器内容与内部RAM单元比较CJNERn,data,relCJNERi,data,relCOMPAR

    注意事项

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

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




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

    本站为文档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  

    收起
    展开