指令系统wy学习.pptx

上传人:莉*** 文档编号:88345303 上传时间:2023-04-25 格式:PPTX 页数:88 大小:391.30KB
返回 下载 相关 举报
指令系统wy学习.pptx_第1页
第1页 / 共88页
指令系统wy学习.pptx_第2页
第2页 / 共88页
点击查看更多>>
资源描述

《指令系统wy学习.pptx》由会员分享,可在线阅读,更多相关《指令系统wy学习.pptx(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2023/4/171 任一计算机,只有硬件没有软件就会像没有“思维”的人,是无法工作的。单片机也不例外,必须配合各种功能的软件才能发挥单片机的控制、运算功能。而软件中最基本的就是指令系统。单片机的指令系统中,指令有2级形式:机器语言 用二进制代码表示,能被CPU识别、分析并执行的指令。汇编语言 以助记符的形式,形象的反映指令的 功能和主要特征。第1页/共88页2023/4/172基本概念基本概念指令:CPUCPU根据人的意图来执行某种操作的命令。指令常以表示指令功能的英文缩写作为助 记符。指令系统:CPUCPU所能执行的全部指令的集合。汇编语言:采用助记符表示的指令。汇编语言源程序:使用汇编语

2、言编写的程序。第2页/共88页2023/4/173按字节数单字节指令:4949条双字节指令:4646条三字节指令:1616条按指令执行时间按指令执行时间单机器周期指令:单机器周期指令:6464条条双机器周期指令:双机器周期指令:4545条条四机器周期指令:四机器周期指令:2 2条条指令系统分类(111条指令):按指令功能按指令功能数据传送类指令(数据传送类指令(2828条)条)算数运算类指令(算数运算类指令(2424条)条)逻辑运算类指令(逻辑运算类指令(2525条)条)控制转移类指令(控制转移类指令(1717条)条)位操作类指令位操作类指令 (1717条)条)第3页/共88页2023/4/1

3、743.1 3.1 MCS-51MCS-51单片机汇编语言与指令格式单片机汇编语言与指令格式第4页/共88页2023/4/175单片机的汇编语言单片机的汇编语言 由于计算机只能识别二进制机器语言代码,它是一种用二进制数0、1组成的代码,不易识别、记忆和书写,因此很难直接用于进行程序设计。为了既能体现机器语言的特点,又便于理解、记忆和书写,计算机常采用助记符来编写指令。助记符是根据机器指令的不同功能和操作对象来描述指令的,它采用有关的英文缩写来描述指令的特征,因此便于记忆、理解和分类。这种采用助记符和其他一些符号所编写的指令程序称为汇编语言程序。汇编语言程序经过编译可变成计算机可执行的目标程序。

4、第5页/共88页2023/4/176指令格式指令格式汇编指令格式:标号:操作码 目的操作数,源操作数;注释标号该指令的符号地址,表明该指令在程序中的位 置,在其他指令中可被引用,特别是出现在转 移指令中;操作码是指令的核心,作用是命令CPU做何操作;操作数是操作指令的作用对象,分为目的操作数和 源操作数;注释是对该指令功能的解释,编译器对注释不处 理;第6页/共88页2023/4/177指令分为单字节、双字节和三字节1、单字节指令 单字节指令的二进制代码只有1个字节。格式:操作码 2、双字节指令 双字节指令的二进制代码有2个字节。格式:操作码 数据或地址码3、三字节指令 三字节指令的二进制代码

5、有3个字节。格式:操作码 数据或地址码 数据或地址码第7页/共88页2023/4/178指令中的常用符号nRn:工作寄存器组的寄存器R0、R1R7之一;nRi:工作寄存器组中的R0或R1,常用于间接寻址;n#data:#表示立即数,data为8位常数,指包含在 指令中的8位立即数;n#data16:包含在指令中的16位立即数;nrel:相对地址,以补码形式表示的8位地址偏移 量,偏移范围为-128+127,主要用于无条 件相对短转移指令SJMP和所有的条件转移指 令;naddr16:16位目的地址。目的地址可在全部程序存 储器的64KB空间内,主要用于无条件长转 移指令LJMP和子程序长调用指

6、令LCALL;第8页/共88页2023/4/179naddr11:11位目的地址。目的地址应与下一条指令 处于同一2KB程序存储空间内,主要用于 绝对转移指令AJMP和子程序长调用指令 LCALL。ndirect:直接寻址的地址,片内RAM或SFR的地址;nBit:片内RAM或SFR中的可直接寻址位地址;n:间接寻址寄存器或基地址寄存器的前缀;n(X):相应X单元中的内容n(X):表示由X寻址的单元中的内容;n/和:/表示对该位操作数求反,但不影响该位的原 值;表示将箭头左边的内容送入箭头右 边的单元。第9页/共88页2023/4/1710 3.2 3.2 寻址方式寻址方式 指令一般由操作码和

7、操作数组成,而操作数字段应给出参与操作的数或明示该数的存储地址。获取这些操作数所在的地址就是寻址。MCS-51单片机有7种寻址方式:n 寄存器寻址n 立即寻址n 寄存器间接寻址n 直接寻址n 变址寻址n 相对寻址n 位寻址第10页/共88页2023/4/1711 寄存器寻址寄存器寻址 指令中的操作数存放在寄存器中,找到寄存器即可得到操作数,这种寻址方式称为寄存器寻址。寄存器寻址的工作寄存器有:R0R7、累加器A、通用寄存器B、数据指针DPTR、位累加器CY。例:MOV A,R3;P40页问:MOV AMOV A,00H00H 和 MOV AMOV A,R0R0有区别吗?答:工作寄存器是内存单元

8、的一部分,如果选择工作寄存器组0 0,则R0R0就是内部RAMRAM的00H00H单元,两者功能上没有区别,都是将00H00H单元内容送入A A;但执行过程不同,执行第一条指令需要2 2个机器周期(E5H 00HE5H 00H),而第二条则仅需1 1个机器周期(E8E8H H)。第11页/共88页2023/4/1712 立即寻址 指令的源操作数且仅是源操作数是一个数值,这种操作数被称为立即数,在指令中用“”作为其前缀。如:MOV P1,#80H MOV A,#0FAH 这种寻址方式,操作数就包含在指令中,无需去其他的存储空间找。在MCS-51指令系统中仅有一条16bit立即寻址指令:MOV D

9、PTR,#1234H。操作数存在程序存储器中第12页/共88页2023/4/1713 寄存器间接寻址 指令中寄存器的内容不是操作数本身,而是存放操作数的地址,要获取操作数需要通过寄存器中地址间接得到,这种寻址方式称为寄存器间接寻址。该寻址方式只能使用寄存器R0或R1或数据指针DPTR作为间接地址寄存器来寻址,“”表示采用间接寻址方式。n R0、R1-8位地址,片内低128字节或片外低256Bn DPTR -16位地址,片外64KB如:MOV A,R0 ;操作数在片内MOVX A,R1 ;操作数在片外地址低256内MOVX A,DPTR ;操作数在片外地址64K范围内第13页/共88页2023/

10、4/1714 直接寻址直接寻址 指令中直接给出操作数所在的存储地址,以供寻址取数或存数的寻址方式称为直接寻址直接寻址。如:MOV A,50H 51系列单片机的直接寻址可用于访问内部RAM,也 可访问程序存储器。直接寻址可访问内部RAM的低128B单元(00H7FH)是访问内部RAM高128B单元的SFR的唯一方法。直接寻址访问程序存储器的有长转移指令、绝对转 移、长调用与绝对调用指令,它们都直接给出了ROM 的地址。第14页/共88页2023/4/1715 该寻址方式常用于访问程序存储器中的数据表格,变址寻址是把基址寄存器(DPTR或PC)和变址寄存器A,两者内容作为无符号数相加形成16位地址

11、,该地址单元所存放的数即为所找的操作数。如:MOVC A,A+DPTR;(A+DPTR)A MOVC A,A+PC ;PC+1 PC,(A+PC)A 变址寻址(基址+变址)操作数在程序存储器中第15页/共88页2023/4/1716E0A程序存储区2040H 9320E0H 472041H DPH 20DPL 00ALU如:MOVC A,A+DPTR设DPTR=2000H,A=E0H20E0H47指令代码第16页/共88页2023/4/1717E0A程序存储区ALU如:MOVC A,A+PC设A=E0H2121H452040H 832121H 452041H 2120H 47当前PC指令代码第

12、17页/共88页2023/4/1718 相对寻址 程序在执行相对转移指令时,以当前指令的位置(PC)为基准点,加上指令中给出的相对偏移量(rel),结果作为跳转指令的转移地址(转移目的地址)。这类寻址方式称为相对寻址。其中偏移量rel是符号数,在-128+127范围内,用补码表示为80H7FH,实际应用中常用符号地址代替;而PC当前指令位置是指执行完该转移指令后的PC值。如:JC 23H;若C=0,不跳转;C=1,跳转.JC wait第18页/共88页2023/4/1719程序存储区ALU如:JC 23 ;机器码为:4023H1025H1000H 401025H 451001H 23 1024

13、H 471002H 3023H1002H指令代码当前PC指令执行:C=1,跳至1025处;C=0,顺序执行1023处第19页/共88页2023/4/1720 指令中直接给出位地址,可对片内RAM的128位寻址区和某些可位寻址的特殊功能寄存器SFR中的93位进行位操作时的寻址方式。如:SETB PSW.3;将PSW.3=RS0位置1 CLR C ;Cy位清0 位寻址 操作数在片内RAM位地址区或SFR某些位中第20页/共88页2023/4/1721寻址方式涉及的存储器空间寻址方式寻址方式寻址空间(操作数存放空间)寻址空间(操作数存放空间)立即寻址立即寻址程序存储器程序存储器直接寻址直接寻址片内片

14、内RAMRAM低低128128字节、字节、SFRSFR寄存器寻址寄存器寻址工作寄存器工作寄存器R0R0R7,A,B,DPTRR7,A,B,DPTR寄存器间接寻址寄存器间接寻址片内片内RAM:R0,R1,SPRAM:R0,R1,SP片外片外RAM:R0,R1,DPTRRAM:R0,R1,DPTR变址寻址变址寻址程序存储器程序存储器:A+PC,A+DPTR:A+PC,A+DPTR相对寻址相对寻址程序存储器程序存储器256256字节范围内字节范围内:PC+:PC+偏移量偏移量位寻址位寻址片内片内RAMRAM的位寻址区的位寻址区(20H(20H2FH2FH字节地址字节地址)某些可位寻址的某些可位寻址的

15、SFRSFR第21页/共88页2023/4/17223.3 MCS-513.3 MCS-51单片机指令系统单片机指令系统 51单片机指令系统分为:数据传送类指令、算术运算类指令、逻辑指令及移位类指令、控制转移类指令和位操作(布尔操作)指令,共5大类,111条指令。第22页/共88页2023/4/1723 数据传送类指令(2929条)是指令系统中使用最多的一类指令,一般执行的操作是把源操作数传送到目的操作数,执行后目的操作数改为源操作数,源操作数保持不变。传送类指令分为3 3类:数据传送 -MOV-MOV、MOVXMOVX、MOVC MOVC 数据交换 -XCH-XCH、XCHDXCHD、SWA

16、PSWAP 堆栈操作 -PUSH-PUSH、POP POP 注意:除了目的操作数为ACCACC的指令影响奇偶标志P P外,数据传送类指令一般不影响标志位。第23页/共88页2023/4/1724A累加器Ri间接寻址Direct直接寻址Rn寄存器#data立即数内部RAM间的数据传递关系图1、内部数据存储器数据传送指令第24页/共88页2023/4/1725 内部数据存储器RAM区是数据传送最活跃的区域,有多达16条指令可用,操作码助记符MOV。下面以源操作数的寻址方式分类介绍:立即寻址(5条)MOV Ri,#data;MOV Rn,#data;MOV DPTR,#data16;唯一的16位数据

17、传送 MOV A,#data;MOV direct,#data;指令功能:把立即数直接传送到指定的内部RAM的 各个位置。第25页/共88页2023/4/1726寄存器寻址(5条)MOV direct,A;MOV Ri,A;MOV Rn,A;MOV A,Rn;MOV direct,Rn;这组指令功能:是把累加器A的内容传送到内部数据区RAM,或把指定工作寄存器R0R7中的内容传送到累加器A或direct所指定的片内RAM中。注意:不能用这类指令在内部工作寄存器之间直接 传送。(如:没有 MOV R1,R2)第26页/共88页2023/4/1727直接寻址(4条)MOV A,direct;MOV

18、 Rn,direct;MOV Ri,direct;MOV direct1,direct2;功能:将直接地址所规定的内部RAM单元内容传 送至累加器A、寄存器Rn,并能实现内部RAM、存储单元间,SFR间或SFR与内部RAM间的直接传 送。注意:直接传递不需要通过累加器A或工作寄存器来间 接传送,提高了数据传送效率。第27页/共88页2023/4/1728寄存器间接寻址(2条)MOV A,Ri;MOV direct,Ri;功能:把以Ri的内容作为地址进行寻址所得到的单元内容,传送给累加器A或给direct指定的片内RAM区单元。注意:间接寻址可访问片内数据存储器的低128B,但不能用于寻址SFR

19、。第28页/共88页2023/4/17292 2、外部数据存储器数据传送指、外部数据存储器数据传送指令令 只有通过累加器才可与外部RAM进行数据传递 MOVX A,Ri;MOVX A,DPTR;MOVX Ri,A;MOVX DPTR,A;注意:MOV DPTR,#data16指令是专门用来配合上 述外部数据传送指令的,16位立即数实质是 外部RAM的地址。第29页/共88页2023/4/1730说明:在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RA

20、M间可以直接进行数据的传递,而外部则不行。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。第30页/共88页2023/4/1731要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。MOV DPT

21、R,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPTR,A第31页/共88页2023/4/17323 3、程序存储器向累加器、程序存储器向累加器A A传送数据指传送数据指令令 此类指令又称查表指令,它采用的是变址寻址方式,把程序存储器中存放的表格数据读出,传送给累加器A。MOVC AMOVC A,A+DPTRA+DPTR;MOVC AMOVC A,A+PCA+PC;功能:把作为变址寄存器的功能:把作为变址寄存器的A A中内容与基址寄存器中内容与基址寄存器(DPTRDPTR或或PCPC)的内容进行)的内容进行1616位无符号数加法,结果位无符号数加法,结果即

22、为即为ROMROM某单元地址,再从该地址指示的单元内取数某单元地址,再从该地址指示的单元内取数送给送给A A。第32页/共88页2023/4/1733 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格。说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。例:有一个数在R0中,要求用查表的方法确定它的平方值(此数的取值范围是0-5)MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR.ORG 0100HDB 0,1,4,9,16,25如果R0中的值为2,则最终地址为100H+2=102H,到102H

23、单元中找到的是4。第33页/共88页2023/4/17344 4、数据交换指、数据交换指令令 数据交换指令使数据作双向传送,传送双方互为源地址、目的地址,指令执行后双方的操作数都已修改为的操作数。XCH AXCH A,directdirect;XCH AXCH A,RiRi;XCH AXCH A,RnRn;XCHD AXCHD A,RiRi;SWAP ASWAP A;注意:前注意:前3 3条是字节交换指令,实现条是字节交换指令,实现A A的内容与内部的内容与内部RAMRAM中某中某一单一单元的内容交换;第四条是半字节交换指令,执行后,只将元的内容交换;第四条是半字节交换指令,执行后,只将A A

24、的低的低四位和四位和RiRi地址单元的低四位交换;第五条是将地址单元的低四位交换;第五条是将A A的低半字节的低半字节与高与高半字节进行交换。半字节进行交换。第34页/共88页2023/4/17355 5、堆栈操作指令堆栈操作指令 堆栈操作指令是对堆栈执行数据传送,主要用于子程序或中断服务程序中临时保护数据、现场和恢复现场的。PUSH direct;SPSP+1,(SP)(direct)POP direct;(direct)(SP),SPSP-1功能:PUSH用于将direct地址中的操作数传送入堆栈;POP用于将堆栈中的操作数传送到direct单元。注意:堆栈操作不影响标志位。且堆栈操作是直

25、接寻址 指令(字节操作),如:累加器用ACC,R0R7要 用直接地址00H07H。第35页/共88页2023/4/1736 算术运算类指令(24条)算术运算类指令包含算术运算类指令包含加、减、乘、除加、减、乘、除以及以及十进制调十进制调整整等指令。等指令。运算操作将影响运算操作将影响PSWPSW中的有关位,如:溢出中的有关位,如:溢出位位OVOV、进位位、进位位CYCY、辅助进位位、辅助进位位AC AC、奇偶标志位、奇偶标志位P P等。等。程序中监视这些标志位,便于进行相关运算操作程序中监视这些标志位,便于进行相关运算操作。第36页/共88页2023/4/17371、加法指令ADD AADD

26、A,#data#data;(A)data(A)ADD AADD A,direct direct;(A)(direct)(A)ADD AADD A,Rn Rn ;(A)Rn(A)ADD AADD A,Ri Ri;(A)(Ri)(A)功能:将A中的操作数与源地址的操作数相加,和值存 放于A中。指令的执行将会影响PSW的位AC、CY、OV、P。不带进位位的加法指令(4 4条)第37页/共88页2023/4/1738例1 1:ADD AADD A,#47H#47HADD AADD A,34H34HADD AADD A,R7R7ADD AADD A,R0R0例2 2:MOV AMOV A,#0AEH#0

27、AEH ;-82D;-82D ADD A ADD A,#81H#81H ;-127D;-127D则执行完本条指令后,A A中的值为2FH;2FH;C=1C=1,AC=0AC=0,OV=1OV=1,P=1P=1。对无符号数:结果为1 12FH;2FH;带符号数运算:OV=1OV=1,有错。实验验证一下本例 1010 1110 1010 1110+1000 0001+1000 0001 10010 1111 10010 1111 第38页/共88页2023/4/1739带进位位的加法指令(4条)ADDC AADDC A,RnRn;(A A)(RnRn)(CYCY)(A A)ADDC AADDC A

28、,directdirect;(A A)(direct)(direct)(CYCY)(A A)ADDC AADDC A,RiRi;(A A)(Ri)(Ri)(CYCY)(A A)ADDC AADDC A,#data#data;(A A)datadata(CYCY)(A A)功能:将A中的操作数、另一操作数与CY相加,结果存在A中,此处的CY是指令执行前的值。该指令对标志位的影响与不带进位加法指令的相同。常用于多字节数运算中。第39页/共88页2023/4/1740设:1067H存在R1R0中,30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。MOV A,R0ADD A,R2

29、;R0+R2A和CYMOV R4,AMOV A,R1ADDC A,R3 ;R1+R3+CYA和CYMOV R5,A第40页/共88页2023/4/1741又例:先做67H+20H=87H67H+20H=87H,没有超过0FF0FFH H,因此最终保存在A A中的是87H87H,而PSWPSW中的CY=0CY=0。然后再做10H+30H+10H+30H+CYCY,结果是40H40H,所以最终的结果是4087H4087H。1067H+3020H1067H+3020H0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H10

30、67H3020H3020H4087H4087H实验验证一下本例设:1067H存在R1R0中,3020H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。第41页/共88页2023/4/1742 加1指令(5条)INC AINC A;(A A)+1+1(A A),影响P P标志INC RnINC Rn;(RnRn)+1+1(RnRn)INC directINC direct;(direct)+1(direct)(direct)+1(direct)INC RiINC Ri;(Rn)+1(Rn)(Rn)+1(Rn)INC DPTRINC DPTR;(DPTRDPTR)+1+1(DPTRDP

31、TR)功能:将指定单元的内容加1。只有“INC A”对奇偶标志位P有影响,其余几条不会对任何标志位产生影响。如:A=12HA=12H,R0=33HR0=33H,(34H)=22H34H)=22H,DPTR=1234HDPTR=1234H。连续执行如下指令:INC A INC A ;(A)=13HA)=13H INC R0 ;(R0)=34H INC R0 ;(R0)=34H INC R0 ;(34H)=23H INC R0 ;(34H)=23H INC DPTR ;(DPTR)=1235H INC DPTR ;(DPTR)=1235H第42页/共88页2023/4/1743DA A ;对A中的

32、BCD码加法结果进行校正功能:当BCD码按二进制数相加后,需用该指令对 结果进行校正。校正规则:若A的低四位9 或(AC)=1,则低四位加06H;若同时A的高 四位9或(CY)=1,则高四位加60H。例:A=0001 0101(压缩BCD码代表十进制数15)ADD A,#8;按二进制加法结果为1DH,(AC)=1DA A ;修正后(A)=23H 十进制调整指令第43页/共88页2023/4/17442、减法类指令SUBB A,Rn ;(A)-(Rn)-(CY)(A)SUBB A,direct ;(A)-(direct)-(CY)(A)SUBB A,Ri ;(A)-((Ri))-(CY)(A)S

33、UBB A,#data ;(A)-data-(CY)(A)功能:从A中减去指定变量的值和进位标志位CY的值,结果存在A中。该组指令将影响标志位CY、AC、OV、P。注意:51中没有不带借位的减法指令,若需不带进位的减法,如第一次相减时,将CY清零即可。如:A=0C9H,R2=55H,CY=1(之前的)SUBB A,R2 ;执指后(A)=73H。带借位的减法指令(4条)第44页/共88页2023/4/1745 减1指令(4条)DEC ADEC A ;(A A)-1-1(A A),会影响P P标志DEC RnDEC Rn;(RnRn)-1-1(RnRn)DEC directDEC direct ;

34、(direct)-1(direct)(direct)-1(direct)DEC RiDEC Ri;(Rn)-1(Rn)(Rn)-1(Rn)功能:将指定地址或单元的内容减1,结果仍存放于原单元中,不影响标志位。如:设(A)=0FEH,(R0)=60H,(60H)=0AH DEC A;(A)=0FDH DEC R0;(60H)=09H 第45页/共88页2023/4/17463 乘法指令(1条)MUL AB;AB(B高八位)、(A低八位)功能:将A和B中的两个8位无符号整数相乘,所得积结果用1个16位数来表达,积的高8位放在B中,低8位放在A中。该操作会对OV、CY、和P标志产生影响;在乘积结果大

35、于FFH时,0V置1,否则OV为0;而CY总是0。例:A=100,B=55,执行指令MUL AB后,乘积是157CH,所以在B中放的是15H,而A中放的则是7CH。第46页/共88页2023/4/17474 除法指令(1条)DIV AB;AB的商A,余数B功能:将A中的8位无符号数除以B中的8位无符号数(A/B)。所得商的整数部分放在A中,余数放在B中。如果在做除法前B中的值是00H,也就是除数为0,那么0V=1。CY和OV都是0。如:A=11H,B=04H,执行指令DIV AB后,结果:A=04H,B=1。CY=0,OV=0,P=1第47页/共88页2023/4/1748 逻辑运算及移位类指

36、令共有24条,其中逻辑指令有“与”、“或”、“异或”、累加器取反、清零20条,移位指令4条。主要用于对2个操作数按位进行逻辑操作,结果送到A或直接寻址单元。除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。第48页/共88页2023/4/17491 1、逻辑与指令、逻辑与指令(6(6条)条)ANL A,Rn ;ARnAANL A,direct ;A(direct)AANL A,Ri ;A(Ri)AANL A,#data ;AdataAANL direct,A;(direct)A(direct)ANL direct,#data;(direct)data(direct)逻辑“与”运算

37、指令将两个指定的操作数按位进行逻辑“与”操作。注意ANL指令通常用于屏蔽(置0)字节中的某些位;若清除某位,用“0”和该位相与;若保留某位,用“1”和该位相与。后两条指令,若direct为I/O端口,则为“读改写”操作。第49页/共88页2023/4/1750如1:(A)=0FAH=11111010B,(R1)=7FH=01111111B,执行:ANL A,R1 ;A=1111101001111111 =01111010B=7AH如2:(P1)=0D5H=11010101B,屏蔽P1口高4位执行:ANL P1,#0FH (P1)=(P1)00001111=05H第50页/共88页2023/4/

38、17512、逻辑或指令(6条)ORL AORL A,Rn Rn ;ARnAARnAORL AORL A,direct direct ;A(direct)AA(direct)AORL AORL A,Ri Ri ;A(Ri)AA(Ri)AORL AORL A,#data#data ;AdataAAdataAORL directORL direct,A A ;(direct)A(direct)(direct)A(direct)ORL directORL direct,#data#data ;(direct)data(direct)(direct)data(direct)逻辑“或”指令将两个指定的操作

39、数按位进行逻辑“或”操作。该指令常用来使字节中某些位置“1”,欲保留的位用“0”与该位相或,而欲置位的位则用“1”与该位相或。后两条指令,若direct为I/O端口,则为“读改写”操作。第51页/共88页2023/4/1752例如:若(A)=C0H,(R0)=3FH,(3FH)=0FH执行指令:ORL A,R0 1100 0000结果为:(A)=CFH 0000 1111 1100 1111第52页/共88页2023/4/17533、逻辑“异或”指令(6条)XRL AXRL A,Rn Rn ;A A RnARnAXRL AXRL A,direct direct ;A(direct)AA(dir

40、ect)AXRL AXRL A,Ri Ri ;A(Ri)AA(Ri)AXRL AXRL A,#data#data ;A dataAA dataAXRL directXRL direct,A A ;(direct)A(direct)(direct)A(direct)XRL directXRL direct,#data#data ;(direct)data(direct)(direct)data(direct)影响影响P标志标志指定的两个操作数按位进行逻辑“异或”。“异或”指令常用来对字节中某些位进行取反操作,欲将某位取反,则该位与“1”相异或;欲将某位保留,则该位与“0”异或;此外还可通过某单元

41、自身异或,实现清零操作。第53页/共88页2023/4/17544、清0 0与取反指令(2条)CPL A CPL A ;(;(/A/A)(A A),累加器内容取反),累加器内容取反CLR A CLR A ;00(A A),累加器内容清零),累加器内容清零例:例:若(若(A A)=5CH=5CH,执行,执行CPL ACPL A 结果:(结果:(A A)=A3H=A3H第54页/共88页2023/4/17555、循环移位指令(4条)RL ARL ARR ARR ARLC ARLC ARRC ARRC AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0由于涉及到CYCY和A A,后两

42、条指令影响标志P P、CYCY。第55页/共88页2023/4/1756例:若例:若A=5CHA=5CH,CY=1CY=1,执行,执行RLC ARLC A后,后,结果:A=B9H,CY=0,P=1v 对RLC、RRC指令,在CY=0时RLC相当于乘以2RRC相当于除以20101 11000101 11001 11011 10011011 10010 0第56页/共88页2023/4/1757综合举例:ANL AANL A,#0FH#0FH ;屏蔽A A的高4 4位SWAP ASWAP AANL P1ANL P1,#0FH#0FH ;清P1P1口高4 4位ORL P1ORL P1,A A ;P1

43、P1口高4 4位输出A A的低4 4位;把累加器A A中的低4 4位状态,通过P1P1口的高4 4位输出,P1P1口的低4 4位状态不变。第57页/共88页2023/4/1758 控制转移类指令控制转移类指令 共有控制程序转移类指令(不包括位操作类的转移指令)17)17条。采用控制转移类指令能方便的实现程序的向前、向后跳转,并可根据条件实现分支运行、循环运行、调用子程序等。此类指令一般不影响PSWPSW。包括以下类型:无条件转移指令条件转移指令子程序调用与返回指令第58页/共88页2023/4/17591 1、无条件转移类指令、无条件转移类指令 长转移指令:LJMP addr16LJMP ad

44、dr16 绝对转移指令:AJMP addr11AJMP addr11 短转移指令:SJMP relSJMP rel间接长转移指令:JMP A+DPTRJMP A+DPTR 以上的指令,它们提供不同的转移范围和寻址方式。第59页/共88页2023/4/1760长转移指令长转移指令-LJMP addr16-LJMP addr16 这是一条三字节指令,指令中addr16提供了程序跳转的16位目标地址。执行时,addr16(PC),程序无条件地转向指定的目标地址去执行,不影响标志位。所以用户可使用该指令,使程序从当前地址转移到64KB的ROM空间的任一处。如:0000H:LJMP 2000H;(PC)

45、2000H指令存放的ROM地址第60页/共88页2023/4/1761绝对转移指令绝对转移指令AJMP AJMP addr11addr11 这是一条双字节指令,该指令中提供的是11位直接地址addr11addr11。指令执行后,程序转移的目标地址由AJMP指令的地址PC值加上该指令字节数2,构成当前PC值,取当前PC值的高5位与指令中提供的11位直接地址形成转移的目标地址。即目标PC为:PCPC1515 PC PC1414 PC PC1313 PC PC1212 PC PC1111 a a1010 a a9 9 a a8 8 a a7 7 a a6 6 a a5 5 a a4 4 a a3 3

46、 a a2 2 a a1 1 a a0 0注意:因addr11提供的地址范围为2KB,且目标地址的高5位是由当前PC的高5位提供的,所以该指令的转移范围应只是和当前PC值在同一2KB的范围内,可向前也可向后。第61页/共88页2023/4/1762.AJMPAJMP指令指令.当前PC向上可转移2KB范围向下可转移2KB范围第62页/共88页2023/4/1763短转移指令短转移指令SJMP SJMP relrel 双字节指令,指令中提供的相对地址rel是带符号的8位偏移量。当程序无条件向前或向后转移时,目目的地的地址址=SJMP=SJMP指令所处地址指令所处地址PCPC值值+指令字节数指令字节

47、数2+rel2+rel,在以-128+127为偏移量的范围内实现相对短转移。指令的执行不影响标志位。注意:用户在指令中只给出相对转移地址即可,不用具体指出地址值;另外,指令中的相对地址rel,用户用欲转移至的地址的标号表示,CPU能自动算出。如:hear:SJMP hear;第63页/共88页2023/4/1764间接长转移指令间接长转移指令JMP JMP A+DPTRA+DPTR 单字节指令,目标地址是以数据指针DPTR的内容为基址,以A内容为相对偏移量,可实现ROM区内64KB范围的无条件转移。该指令的特点是转移的目标地址可根据程序中A的不同值而改变,可以实现多分支转移,所以该指令又称为散

48、转指令。如:根据A的数值,转至不同处理程序的入口 MOV DPTR,#TABLE;表的首地址送入DPTR JMP A+DPTR ;依据A值转移TABLE:AJMP TAB1 ;当(A)=0时转TAB1处 AJMP TAB2 ;当(A)=2时转TAB2处 AJMP TAB3 ;当(A)=4时转TAB4处第64页/共88页2023/4/1765v 跳转的范围不同。短转移类指令:AJMP AJMP addr11addr11 长转移类指令:LJMP LJMP addr16addr16 相对转移指令:SJMP SJMP relrel转移范围:2KB2KB64KB64KB-128+127-128+127v

49、 指令构成不同。AJMPAJMP、LJMPLJMP后跟的是绝对地址,而SJMPSJMP后跟的是相对地址。v 指令长度不同v 原则上,所有用SJMPSJMP或AJMPAJMP的地方都可以用 LJMPLJMP来替代。第65页/共88页2023/4/1766间接转移指令:JMP JMP A+DPTRA+DPTR 这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。转移地址由A+DPTRA+DPTR形成,并直接送入PCPC。指令对A A、DPTRDPTR和标志位均无影响。本指令可代替众多的判别跳转指令,又称为散转指令,多用于多分支程序结构中。第四条指令与前三条指令相比有所不同第66页

50、/共88页2023/4/17672 2 条件转移指令条件转移指令条件转移指令是指当某种条件满足时,程序进行转移执行;条件不满足时,程序按原顺序继续执行。条件转移的条件可是上一条指令或更前一条指令的执行结果(体现在标志位上),也可以是条件转移指令本身包含的某种运算结果。该类指令分3大类共8条:累加器判零条件转移指令;比较条件转移指令;减一条件转移指令。该类指令采用的是相对寻址,因此程序可在以当前PC值为中心的-128+127范围内转移,注意转移的目标地址不要超出这个范围。第67页/共88页2023/4/1768累加器判零转移指累加器判零转移指令令 JZ rel JZ rel ;若若A=0A=0,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁