pA安全生产技术安全生产事故案例分析

上传人:鲁** 文档编号:567917057 上传时间:2024-07-22 格式:PPT 页数:73 大小:449.52KB
返回 下载 相关 举报
pA安全生产技术安全生产事故案例分析_第1页
第1页 / 共73页
pA安全生产技术安全生产事故案例分析_第2页
第2页 / 共73页
pA安全生产技术安全生产事故案例分析_第3页
第3页 / 共73页
pA安全生产技术安全生产事故案例分析_第4页
第4页 / 共73页
pA安全生产技术安全生产事故案例分析_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《pA安全生产技术安全生产事故案例分析》由会员分享,可在线阅读,更多相关《pA安全生产技术安全生产事故案例分析(73页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章单单片片机机的的指指令令系系统统 本章内容本章内容单片机的指令格式单片机的指令格式单片机指令格式符号的意义单片机指令格式符号的意义单片机指令介绍单片机指令介绍单片机的寻址方式单片机的寻址方式第一节第一节 指令系统概述指令系统概述 指令是供给用户使用单片机的软件资源,它是指令是供给用户使用单片机的软件资源,它是CPUCPU控制计算机进控制计算机进行某种操作的命令。全部指令的集合是指令系统。行某种操作的命令。全部指令的集合是指令系统。 指令常用它的英文名称或缩写形式作为助记符,以助记符表示的指令常用它的英文名称或缩写形式作为助记符,以助记符表示的指令称为计算机的汇编语言,用指令编写的

2、程序称为汇编语言程序。指令称为计算机的汇编语言,用指令编写的程序称为汇编语言程序。 一、指令的概念一、指令的概念 1、机器码指令与汇编语言指令、机器码指令与汇编语言指令 MCS-51单片机的指令有两种表达方式:即机器码指令和汇编语言单片机的指令有两种表达方式:即机器码指令和汇编语言指令。指令。 机器码指令机器码指令 定义:用二进制代码(或十六进制数)表示的指令定义:用二进制代码(或十六进制数)表示的指令 特点:能够直接被计算机硬件识别和执行,但不易阅读和记忆。特点:能够直接被计算机硬件识别和执行,但不易阅读和记忆。 例如例如 指令指令INC A执行累加器执行累加器A加加1操作,其二进制代码为操

3、作,其二进制代码为“00000100B”,用十六进制数表示的机器码指令为用十六进制数表示的机器码指令为04H。汇编语言指令汇编语言指令 定义:用助记符来表示的指令。定义:用助记符来表示的指令。 例如例如 用用“MOVMOV”表示数据的传送。表示数据的传送。 特点:不能被计算机硬件直接识别和执行,必须通过某种手段特点:不能被计算机硬件直接识别和执行,必须通过某种手段(汇编)把它变成机器码指令才能被机器执行。编写的程序效率(汇编)把它变成机器码指令才能被机器执行。编写的程序效率高,占用存储空间小,运行速度快,能编写出最优化的程序。高,占用存储空间小,运行速度快,能编写出最优化的程序。2、汇编语言的

4、语句格式、汇编语言的语句格式 MCS- 51汇编语言的语句格式汇编语言的语句格式: 标号标号:操作码:操作码操作数操作数;注释注释 即一条汇编语句是由标号、操作码、操作数和注释即一条汇编语句是由标号、操作码、操作数和注释4个部分所组成,个部分所组成,其中方括号括起来的是可选择部分,可有可无,视需要而定。其中方括号括起来的是可选择部分,可有可无,视需要而定。汇编语言的语句格式汇编语言的语句格式 1)标号)标号 标号是语句地址的标志符号,有了标号,程序中的其它语句才能标号是语句地址的标志符号,有了标号,程序中的其它语句才能访问该语句。有关标号的规定如下:访问该语句。有关标号的规定如下: 标号是由标

5、号是由1-8个个ASCII字符组成,但头一个字符必须是字母,其余字字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。符可以是字母、数字或其它特定字符。 不能使用本汇编语言已经定义了的符号作为标号,如指令助记符、不能使用本汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。伪指令记忆符以及寄存器的符号名称等。 同一标号在一个程序中只能定义一次,不能重复定义。同一标号在一个程序中只能定义一次,不能重复定义。 标号的有无取决于本程序中的其它语句是否需要访问这条语句。标号的有无取决于本程序中的其它语句是否需要访问这条语句。2 2)操作码)操作码

6、操作码用于规定语句执行的操作内容,操作码是以指令助记操作码用于规定语句执行的操作内容,操作码是以指令助记符或伪指令助记符表示的,操作码是汇编指令格式中唯一不能空符或伪指令助记符表示的,操作码是汇编指令格式中唯一不能空缺的部分。缺的部分。汇编语言的语句格式汇编语言的语句格式 3)操作数)操作数 操作数用于给指令的操作提供数据或地址。操作数用于给指令的操作提供数据或地址。 4)注释)注释 注释不属于语句的功能部分,它只是对语句的解释说明。注释不属于语句的功能部分,它只是对语句的解释说明。 5)分界符(分隔符)分界符(分隔符) 分界符用于把语句格式中的各部分隔开,以便于区分,包括空格、分界符用于把语

7、句格式中的各部分隔开,以便于区分,包括空格、冒号、分号或逗号等多种符号。冒号、分号或逗号等多种符号。 冒号(:)用于标号之后冒号(:)用于标号之后 空格(空格( )用于操作码和操作数之间)用于操作码和操作数之间 逗号(,)用于操作数之间逗号(,)用于操作数之间 分号(;)用于注释之前分号(;)用于注释之前汇编语言的语句格式汇编语言的语句格式 3、指令的长度、指令的长度 在在MCS-51指令系统中,有一字节、二字节和三字节等不同长度的指令系统中,有一字节、二字节和三字节等不同长度的指令。指令。 1)一字节指令)一字节指令 一字节指令只有一个字节,操作码和操作数信息同在其中。一字节指令只有一个字节

8、,操作码和操作数信息同在其中。 2)二字节指令)二字节指令 二字节指令包括二个字节,其中第一个字节为操作码,第二个字节二字节指令包括二个字节,其中第一个字节为操作码,第二个字节是操作数。是操作数。 3)三字节指令)三字节指令 三字节指令中,操作码占一个字节,操作数占两个字节。三字节指令中,操作码占一个字节,操作数占两个字节。二、二、MCS-51MCS-51单片机的寻址方式单片机的寻址方式 寻址:如何指定操作数的所在单元。寻址:如何指定操作数的所在单元。 根据指定方法的不同,根据指定方法的不同,MCS- 51MCS- 51单片机共有单片机共有7 7种寻址方式。种寻址方式。汇编语言的语句格式汇编语

9、言的语句格式 1、寄存器寻址方式、寄存器寻址方式 定义:定义:操作数在寄存器中。在寄存器寻址方式的指令中以符号名操作数在寄存器中。在寄存器寻址方式的指令中以符号名称来表示寄存器。例如指令:称来表示寄存器。例如指令: MOV A,R0 ;把寄存器把寄存器R0的内容传送到累加器的内容传送到累加器A中中 寻址范围:寻址范围: 通用寄存器,共有通用寄存器,共有4组共组共32个通用寄存器。个通用寄存器。 部分专用寄存器。例如累加器部分专用寄存器。例如累加器A、B寄存器及数据指针寄存器及数据指针DPTR等。等。 2、直接寻址方式、直接寻址方式 定义定义:指令中操作数直接以单元地址的形式给出。例如指令:指令

10、中操作数直接以单元地址的形式给出。例如指令: MOV A,3AH ;把内部把内部RAM 3AH单元中的数据传送给累加器单元中的数据传送给累加器A 寻址范围:寻址范围: 低低128单元。在指令中直接以单元地址形式给出。单元。在指令中直接以单元地址形式给出。 专用寄存器。专用寄存器除以单元地址形式给出外,还可以以专用寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。寄存器符号形式给出。寻址方式寻址方式 3、寄存器间接寻址方式、寄存器间接寻址方式 定义:定义:寄存器中存放的是操作数的地址,即操作数是通过寄存器寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的。间接得到的

11、。 注意:注意:在寄存器间接寻址方式中,应在寄存器的名称前面加前缓在寄存器间接寻址方式中,应在寄存器的名称前面加前缓标志标志“”。 例如:假定例如:假定R0寄存器的内容是寄存器的内容是3AH,则指令:则指令: MOV A,Ro ;以以R0寄存器内容寄存器内容3AH为地址,把该地址单元的为地址,把该地址单元的内容送累加器内容送累加器A寻址方式寻址方式 寻址范围:寻址范围: 内部内部RAM低低128单元单元 只能使用只能使用R0或或R1作间址寄存器(地址指针),其通用形式为作间址寄存器(地址指针),其通用形式为Ri(i=0或或1)。)。 外部外部RAM 64 KB 只能使用只能使用DPTR作间址寄

12、存器,其形式为作间址寄存器,其形式为DPTR。 外部外部RAM的低的低256单元单元 间址寄存器为间址寄存器为DPTR、R0、R1,例如例如 MOVX A,R0 ; 即把即把R0指定的外部指定的外部RAM单元的内容送累加器单元的内容送累加器A 堆找操作指令(堆找操作指令(PUSH和和POP) 即以堆找指针即以堆找指针(SP)作间址寄存器的间接寻址方式。作间址寄存器的间接寻址方式。寻址方式寻址方式 4、立即寻址方式、立即寻址方式 定义:操作数在指令中直接给出。定义:操作数在指令中直接给出。 例如:例如:MOV A,3AH MOV DPTR,3000H寻址方式寻址方式 5、变址寻址方式变址寻址方式

13、 定义:定义:以以DPTR或或PC作基址寄存器,以累加器作基址寄存器,以累加器A作变址寄存器,作变址寄存器,并以两者内容相加形成的并以两者内容相加形成的16位地址作为操作数地址,以达到访问数据位地址作为操作数地址,以达到访问数据表格的目的。(表格的目的。(A中的数为无符号数)。中的数为无符号数)。 例如:例如: MOVC A,A+DPTR ;把把DPTR和和A的内容相加,再把所得到的内容相加,再把所得到的程序存储器地址单元的内容送的程序存储器地址单元的内容送A。 寻址方式寻址方式寻址方式寻址方式说明:说明: * 变址寻址方式只能对程序存储器进行寻址,寻址变址寻址方式只能对程序存储器进行寻址,寻

14、址范围可达范围可达64 KB. * 变址寻址的指令只有变址寻址的指令只有3条:条: MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR * 尽管变址寻址方式较为复杂,但变址寻址的指令尽管变址寻址方式较为复杂,但变址寻址的指令却都是一字节指令。却都是一字节指令。 6、位寻址方式、位寻址方式 例如:例如:MOV C,3AH ;把把3AH位的状态送进位位位的状态送进位位C 寻址范围:寻址范围: 内部内部RAM中的位寻址区,单元地址为中的位寻址区,单元地址为20H2FH,共共16个单元个单元128位,位地址是位,位地址是00H7FH。两种表示方法:一种是位地址;另一两种表示方法:

15、一种是位地址;另一种是单元地址加位。种是单元地址加位。 专用寄存器的可寻址位专用寄存器的可寻址位 四种表示方法:四种表示方法: 直接使用位地址。例如直接使用位地址。例如PSW寄存器位寄存器位5地址为地址为0D5H。 位名称表示方法。例如位名称表示方法。例如PSW寄存器位寄存器位5是是F0标志位,则可使用标志位,则可使用F0表示该位。表示该位。 单元地址加位数的表示方法。例如单元地址加位数的表示方法。例如PSW寄存器位寄存器位5,表示为,表示为0DOH.5。 专用寄存器符号加位数的表示方法。例如专用寄存器符号加位数的表示方法。例如PSW寄存器的位寄存器的位5,表,表示为示为PSW.5。寻址方式寻

16、址方式 7、相对寻址方式相对寻址方式 为解决程序转移而专门设置的,为转移指令所采用。为解决程序转移而专门设置的,为转移指令所采用。 目的地址目的地址=转移指令地址转移指令字节数转移指令地址转移指令字节数+ rel寻址方式寻址方式 第二节第二节 MCS-51单片机指令分类介绍单片机指令分类介绍 MCS- 51单片机指令系统共有指令单片机指令系统共有指令111条,分为条,分为5大大类:类: 数据传送类指令数据传送类指令(29条)条) 算术运算类指令(算术运算类指令(24条)条) 逻辑运算及移位类指令(逻辑运算及移位类指令(24条)条) 控制转移类指令控制转移类指令(17条)条) 位操作类指令(位操

17、作类指令(17条)条) Rn当前寄存器组的当前寄存器组的8个通用寄存器个通用寄存器R0R7,n=07。 Ri可用作间接寻址的寄存器,只能是可用作间接寻址的寄存器,只能是R0、R1两个寄存器,两个寄存器,i=0、1。 direct8位直接地址,在指令中表示直接寻址方式,寻址位直接地址,在指令中表示直接寻址方式,寻址范围范围256个单元。包括内部个单元。包括内部RAM低低128单元地址和专用寄存器单元地址和专用寄存器的单元地址或符号。的单元地址或符号。 data8位立即数。位立即数。 datal616位立即数。位立即数。 addr1616位目的地址,只限于在位目的地址,只限于在LCALL、LJMP

18、指令中指令中使用。使用。一、指令格式中符号意义说明一、指令格式中符号意义说明 addr1111位目的地址,只限于在位目的地址,只限于在ACALL和和AJMP指令中使用。指令中使用。 rel相对转移指令中的偏移量,为相对转移指令中的偏移量,为8位带符号补码数。位带符号补码数。 DPTR数据指针。数据指针。 bit内部内部RAM(包括专用寄存器)中的直接寻址位。包括专用寄存器)中的直接寻址位。 A累加器。累加器。ACC直接寻址方式的累加器。直接寻址方式的累加器。 B寄存器寄存器B。 C进位标志位,它是布尔处理机的累加器,也称之为累加位。进位标志位,它是布尔处理机的累加器,也称之为累加位。 间址寄存

19、器的前级标志。间址寄存器的前级标志。 加在位地址的前面,表示对该位状态取反。加在位地址的前面,表示对该位状态取反。 (X)某寄存器或某单元的内容。某寄存器或某单元的内容。 (X)由由X间接寻址的单元中的内容。间接寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所取代。箭头左边的内容被箭头右边的内容所取代。指令格式中符号意义指令格式中符号意义 1.内部内部RAM数据传送指令组数据传送指令组 数据传送指令的特点为:数据传送指令的特点为: 1)操作)操作把源操作数传送到目的操作数,指令执行后,源操把源操作数传送到目的操作数,指令执行后,源操作数不改变,目的操作数修改为源操作数。若要求在进行数据传

20、送作数不改变,目的操作数修改为源操作数。若要求在进行数据传送时,不丢失目的操作数,则可以用交换型的传送指令。时,不丢失目的操作数,则可以用交换型的传送指令。 2)数据传送指令不影响标志)数据传送指令不影响标志C、AC和和OV,不包括奇偶标志不包括奇偶标志P。通用格式为:通用格式为: MOV 目的操作数,源操作数目的操作数,源操作数 传送指令中有从右向左传送数据的约定,即指令的右边操作数为传送指令中有从右向左传送数据的约定,即指令的右边操作数为源操作数,表达的是数据的来源;而左边操作数为目的操作数,表源操作数,表达的是数据的来源;而左边操作数为目的操作数,表达的则是数据的去向。达的则是数据的去向

21、。 二、数据传送类指令二、数据传送类指令 1)以累加器为目的操作数的指令)以累加器为目的操作数的指令 MOV A,Rn;A (Rn),(n=07) MOV A,direct;A (direct) MOV A,Ri;A (Ri), (i=0、1) MOV A,data;A data 例:例: MOV A,R7;将工作寄存器将工作寄存器R7中的值送入中的值送入A,R7中的值保持中的值保持不变不变 MOV A,3FH;将内存将内存3FH单元中的值送入单元中的值送入A,3FH单元中的单元中的值保持不变值保持不变 MOV R1,35H MOV A,R1;R1值值35H作为数据地址,并将作为数据地址,并将

22、35H单元中的单元中的值送值送A中中 MOV A,35H;将立即数将立即数35H送入送入A中,(中,(A)=35H 2)以寄存器)以寄存器Rn为目的操作的指令为目的操作的指令 MOV Rn,A ;Rn (A),),(n=07) MOV Rn,direct ;Rn (direct),(n=07) MOV Rn,data ;Rn data,(n=07) 例例: MOV A , #0FFH MOV R7, A 结果结果: (A)=0FFH (R7)=0FFH 3)以直接地址为目的操作数的指令以直接地址为目的操作数的指令 MOV direct,A ;direct (A) MOV direct,Rn ;

23、direct (Rn),n=07 MOV direct1,direct2 ;direct 1 (direct2) MOV direct,Ri ;direct (Ri),i=0、1 MOV direct,data ;direct data 例:例: MOV 2FH,A ;将将A的内容送片内的内容送片内RAM的的2FH单元单元 MOV 2FH,R1 ;将将R1的内容送片内的内容送片内RAM的的2FH单元单元 MOV 2FH,30H;将片内将片内R.AM30H单元的内容送片内单元的内容送片内RAM的的2FH;单元单元 MOV R1,35H MOV 2FH,R1;R1值值35H作为数据地址,并将作为数

24、据地址,并将35H单元中的单元中的值送入值送入2FH单元单元 MOV 2FH,35H;将立即数将立即数35H送入片内送入片内RAM的的2FH单元中单元中 4)以间接地址为目的操作数的指令)以间接地址为目的操作数的指令 MOV Ri,A;(;(Ri) (A) MOV Ri,direct;(;(Ri) (direct) MOV Ri,data;(;(Ri) data 例:设(例:设(R0)=2FH MOV R0,A ;将将A中的内容送入以中的内容送入以R0中的内容中的内容2FH为为地址的单元中地址的单元中 MOV R0,20H ;将将20H单元的内容送入以单元的内容送入以R0中的内容中的内容2FH

25、为地址的单元中为地址的单元中 MOV R0,34H;将立即数将立即数34H送入以送入以R0中的内容中的内容2FH为地址的单元中为地址的单元中 5)十六位数的传递指令)十六位数的传递指令 MOV DPTR,data16 功能:功能:将一个将一个16位的立即数送入位的立即数送入DPTR中去。其中高中去。其中高8位送入位送入DPH,低低8位送入位送入DPL。例例 MOV DPTR,2050H;则执行完了之后则执行完了之后DPH中的值为中的值为20H,DPL中的值为中的值为50H。 等同于等同于 MOV DPH,20H MOV DPL,50H 要点分析:要点分析: 所谓内部存储器在指令中的行为,就是指

26、单片机芯片内存储器在所谓内部存储器在指令中的行为,就是指单片机芯片内存储器在指令中的作用与工作情况。指令中的作用与工作情况。 例例 将片内将片内RAM的的15H单元的内容单元的内容0A7H送送55H单元。单元。 解法解法1 MOV 55H,15H 解法解法2 MOV R6,15H MOV 55H,R6 解法解法3 MOV R1,15H MOV 55H,R1 解法解法4 MOV A,15H MOV 55H,A 例例 理解表理解表2-8所列指令的执行结果。所列指令的执行结果。2、外部、外部RAM数据传送指令数据传送指令 MOVX A,Ri;A (Ri) MOVX Ri,A;(;(R0) (A) M

27、OVX A,DPTR;A (DPTR) MOVX DPTR,A;(;(DPTR) (A) 例如:例如: 1)MOV R1,0F5H MOVX A,R1 ;A (片外片外0F5H) 2)MOV R0,00H MOVX R0,A ;(片外片外00H) A 3) MOV DPTR,20F5H; MOVX A,DPTR;A (片外片外20F5H) 4) MOV DPTR,2000H MOVX DPTR,A;(片外片外2000H) A 要点分析:要点分析: 1)助记符为)助记符为 “ MOVX ”; 2)在在MCS-51中,片外中,片外RAM数据传送必须通过累加器数据传送必须通过累加器A进行进行; 3)

28、使用外部)使用外部RAM数据传送指令时,应当首先将要读或写的地址数据传送指令时,应当首先将要读或写的地址送入送入DPTR或或Ri中,然后再用读写命令。中,然后再用读写命令。访问片外数据存储器时单片机引脚信号情况访问片外数据存储器时单片机引脚信号情况: (1) MOVX A,Ri 指令执行时,在指令执行时,在P3.7引脚上出现引脚上出现/RD有效信号,有效信号,作为外部数据存储器的读选通信号。作为外部数据存储器的读选通信号。P0口先输出由口先输出由Ri指定的指定的8位地址位地址信息然后输入该单元的内容,信息然后输入该单元的内容,P0口作分时复用的总线。口作分时复用的总线。 (2) MOVX Ri

29、,A 指令执行时,在指令执行时,在P3.6引脚上出现引脚上出现/WR有效信,有效信,用作外部数据存储器的写选通信号。用作外部数据存储器的写选通信号。P0口分时输出由口分时输出由Ri指定的指定的8位地位地址信息及输出到该单元的数据。以上两条与可以访问外部数据存储器址信息及输出到该单元的数据。以上两条与可以访问外部数据存储器低低256字节的存储空间。字节的存储空间。 (3) MOVX DPTR,A 指令执行时,指令执行时,P3.6引脚上输出引脚上输出/WR有效信有效信号,用作外部数据存储器的写选通信号。号,用作外部数据存储器的写选通信号。DPTR所包含的所包含的16位地址信位地址信息由息由P0(低

30、低8位)和位)和P2(高高8位)输出,累加器的内容由位)输出,累加器的内容由P0输出到该输出到该单元。单元。P0口作分时复用的总线。口作分时复用的总线。 (4) MOVX A,DPTR 指令执行时,指令执行时,P3.7引脚上输出引脚上输出/RD有效信有效信号,用作外部数据存储器的读选通信号。号,用作外部数据存储器的读选通信号。DPTR所包含的所包含的16位地址信位地址信息由息由P0(低低8位)和位)和P2(高高8位)输出,选中单元的数据由位)输出,选中单元的数据由P0输人到输人到累加器。以上两条可以访问外部数据存储器间累加器。以上两条可以访问外部数据存储器间64KB的存储空间。的存储空间。 例

31、例 将外部将外部RAM中中0010H单元中的内容送入外部单元中的内容送入外部RAM中中2000H单元中。程序如下:单元中。程序如下: MOV R0,10H MOVX A,R0 MOV DPTR,2000H MOVX DPTR,A 3、程序存储器数据传送指令、程序存储器数据传送指令 远程查表指令远程查表指令 MOVC A,ADPTR;A (A)十(十(DPTR) 近程查表指令近程查表指令 MOVC A,A+ PC;A (A)+(PC)要点分析:要点分析: (1(1)这这两两条条指指令令是是一一字字节节指指令令,其其寻寻址址范范围围为为6464KBKB,指指令令首首先先执执行行1616位位无无符符

32、号号数数的的加加法法操操作作,获获得得基基址址与与变变址址之之和和, ,“和和”作作为为程程序序存储器的地址,该地址中的内容送入存储器的地址,该地址中的内容送入A A中。中。 (2(2)第第二二条条指指令令与与第第一一条条指指令令相相比比,由由于于PCPC的的内内容容不不能能通通过过数数据据传传送送指指令令来来改改变变,而而且且随随该该指指令令在在程程序序中中的的位位置置变变化化而而变变化化,因因此此在使用时需对变址寄存器在使用时需对变址寄存器A A进行修正。进行修正。访问片外程序存储器时单片机引脚信号情况访问片外程序存储器时单片机引脚信号情况: : (1) (1) MOVC MOVC A A

33、,A+DPTR A+DPTR 指指令令执执行行时时,/ /PSENPSEN引引脚脚上上输输出出有有效效信信号号,用用作作片片外外程程序序存存储储器器的的读读选选通通信信号号。(DPTRDPTR)+ +(A A)所所包包含含的的1616位位地地址址信信息息由由P0P0(低低8 8位位)和和P2P2(高高8 8位位)输输出出,选选中中单单元元的的数数据据由由P0P0输入到累加器。输入到累加器。 例例5 在片内在片内20H单元有一个单元有一个BCD数,用查表法获得相应的数,用查表法获得相应的ASCII码,并将其送入码,并将其送入21H单元。其子程序为:设单元。其子程序为:设(20H)=07H时时 (

34、2) (2) MOVC AMOVC A,A+PCA+PC指令执行时,指令执行时,/ /PSENPSEN引脚上输出有效信号,用引脚上输出有效信号,用作片外程序存储器的读选通信号。(作片外程序存储器的读选通信号。(PCPC当前值)当前值)+ +(A A)所包含的所包含的1616位地位地址信息由址信息由P0P0(低低8 8位)和位)和P2P2(高高8 8位)输出,选中单元的数据经位)输出,选中单元的数据经P0P0口输入口输入到累加器到累加器A A。 以上两条以上两条MOVCMOVC是是6464KBKB存储空间内的查表指令,实现程序存储器到累存储空间内的查表指令,实现程序存储器到累加器的常数传送,每次

35、传送一个字节。加器的常数传送,每次传送一个字节。 ORG 1000H; 指明程序在指明程序在ROM中存放始地址中存放始地址1000H BCD_ASCl:MOV A,20H ; A (20H),(),(A)07H1002H ADD A,3 ;累加器(累加器(A)=(A)+3,修正偏移量修正偏移量1004H MOVC A,A+PC; PC当前值当前值1005H1005H MOV 21H,A ;(;(A)+(PC)=0AH+1005H=100FH1007H RET ;(;(A)=37H,A (100FH)1008H TAB:DB 30H1009H DB 31H100AH DB 32H100BH DB

36、 33H100CH DB 34H100DH DB 35H100EH DB 36H100FH DB 37H1010H DB 38H1011H DB 39H一般在采用一般在采用PC作基址寄存器时,常数表与作基址寄存器时,常数表与MOVC指令放在一起,称为近指令放在一起,称为近程查表。当采用程查表。当采用DPTR作基址寄存器时,程序如例作基址寄存器时,程序如例6所示,所示,TAB可以放在可以放在64KB程序存储器空间的任何地址上,称为远程查表,不用考虑查表指令程序存储器空间的任何地址上,称为远程查表,不用考虑查表指令与表格之间的距离。与表格之间的距离。例例5 在片内在片内20H单元有一个单元有一个B

37、CD数,用查表法获得相应的数,用查表法获得相应的ASCII码,并将其送入码,并将其送入21H单元。其子程序为:设单元。其子程序为:设(20H)=07H时时用远程查表指令如下:用远程查表指令如下: ORG 1000HBCD_ASC2:MOV A,20H MOV DPTR,TAB;TAB首址送首址送DPTR MOVC A,A+DPTR;查表查表 MOV 21H,A RET TAB:DB 30H, 31H, 32H,33H, 34H, 35H, 36H DB 37H, 38H, 39H 4、堆栈操作指令、堆栈操作指令 压入压入 PUSH direct;(;(SP) (SP)+1,(,(SP) (di

38、rect) 弹出弹出 POP direct;direct (SP),(),(SP) (SP)1 例如例如 执行中断服务子程序时,把数据指针执行中断服务子程序时,把数据指针DPTR、工作寄存器工作寄存器R2、程程序状态字序状态字PSW和累加器和累加器A压入堆栈,进行现场保护,如图所示。返回时将压入堆栈,进行现场保护,如图所示。返回时将其弹出,恢复现场。其弹出,恢复现场。压入:压入: MOV SP,50H PUSH DPL PUSH DPH PUSH 02H PUSH PSW PUSH ACC弹出:弹出: POP ACC POP PSW POP 02H POP DPH POP DPL 要点分析:要

39、点分析: 1)堆栈常用来保护现场)堆栈常用来保护现场. 2)堆栈操作的特点是)堆栈操作的特点是“先进后出先进后出”,在使用时应注意指令顺序。,在使用时应注意指令顺序。 例例 分析以下程序的运行结果分析以下程序的运行结果 MOV R2,05H MOV A,01H PUSH ACC PUSH 02H POP ACC POP 02H 结果是(结果是(R2)=01H,而(而(A)=05H。也就是两者进行了数据交也就是两者进行了数据交换。从这个例子可以看出:使用堆栈时,入栈的顺序和出栈的顺序必须换。从这个例子可以看出:使用堆栈时,入栈的顺序和出栈的顺序必须相反,才能保证数据被送回原位,即恢复现场,否则就

40、要出错。相反,才能保证数据被送回原位,即恢复现场,否则就要出错。 5、数据交换指令、数据交换指令 (1)字节交换指令字节交换指令 XCH A,Rn;(;(A) (Rn) XCH A,Ri;(;(A) (Ri) XCH A,direct;(;(A) (direct) (2)半字节交换指令半字节交换指令 XCHD A,Ri;(;(A)0-3 (Ri)0-3 (3)累加器累加器A高低半字节交换指令高低半字节交换指令 SWAP A;(;(A)0-3 (A)4-7 数据交换主要是在内部数据交换主要是在内部RAM单元与累加器单元与累加器A之间进行。之间进行。 例例 将片内将片内RAM 60H单元与单元与6

41、1H单元的数据交换单元的数据交换 不能用:不能用:XCH 60H,61H 应该写成:应该写成:MOV A,60H XCH A,61H MOV 60H,A 1、加法指令组、加法指令组 共在共在4条加法运算指令:条加法运算指令: ADD A,Rn;A (A) + (Rn) ADD A,direct;A (A) + (direct) ADD A,Ri;A (A) + (Ri) ADD A,data;A (A) + data 2、带进位加法指令带进位加法指令 ADDC A,Rn;A (A)+(Rn) + (CY) ADDC A,direct;A (A) + (direct) + (CY) ADDC A

42、,R;A (A) + (Ri) + (CY) ADDC A,data;A (A) + data + (CY) 三、算术运算类指令三、算术运算类指令 3、带借位减法指令组带借位减法指令组 SUBB A,Rn;A (A)()(Rn)()(CY) SUBB A,direct;A (A)()(direct)()(CY) SUBB A,Ri;A (A)()(Ri)()(CY) SUBB A,#data;A (A)data(CY) 4、加加1指令组指令组 INC A;A (A) + 1 INC Rn;Rn (Rn) + 1 INC direct;direct (direct) + 1 INC Ri;(Ri

43、) (Ri) + 1 INC DPTR;DPTR (DPTR) + 1 5、减、减1指令指令 DEC A;A (A)1 DEC direct;direct (direct)1 DEC Ri;(;(Ri) (Ri)1 DEC Rn;Rn (Rn)1 6、乘法、除法指令乘法、除法指令 MUL AB ;AB=BA DIV AB ;A/B= A. . . B 要点分析:要点分析: 1) MUL指令实现指令实现8位无符号数的乘法操作,两个乘数分别放在累位无符号数的乘法操作,两个乘数分别放在累加器加器A和寄存器和寄存器B中,乘积为中,乘积为16位,低位,低8位放在位放在A中,高中,高8位放在位放在B中;中

44、; DIV指令实现指令实现8位无符号数除法,被除数放在位无符号数除法,被除数放在A中,除数放在中,除数放在B中,指令执行后,商放在中,指令执行后,商放在A中而余数放在中而余数放在B中。中。 2)乘法、除法指令是整个指令系统中执行时间最长的两条指令,乘法、除法指令是整个指令系统中执行时间最长的两条指令,它们需要四个机器周期(它们需要四个机器周期(48个振荡器周期)完成一次操作,对于个振荡器周期)完成一次操作,对于12MHz晶振的系统,执行一次乘法操作的时间为晶振的系统,执行一次乘法操作的时间为4us。 7、十进制调整指令、十进制调整指令 DA A 要点分析:要点分析: 1)这条指令必须紧跟在)这

45、条指令必须紧跟在ADD或或ADDC指令之后,且这里的指令之后,且这里的ADD或或ADDC的操作是对压缩的的操作是对压缩的BCD数进行运算。数进行运算。 2)DA指令不影响溢出标志。指令不影响溢出标志。 3)不能用)不能用DA指令对十进制减法操作的结果进行调整。指令对十进制减法操作的结果进行调整。 4)借助进位标志可实现多位)借助进位标志可实现多位BCD数加数加1和减和减1。 例例 设(设(A)56H,(,(R7)78H,执行指令:执行指令: ADD A,R7 DA A 结果:(结果:(A)34H,(CY)1 例例 设计将两个设计将两个4 4位压缩位压缩BCD码数相加程序。其中一个数存码数相加程

46、序。其中一个数存放放在在30H(存放十位,个位)、存放十位,个位)、31H(存放千位,百位)存放千位,百位)存储器存储器单元,另单元,另一个加数存放在一个加数存放在32H(存放低位)、存放低位)、33H(存放高位)存放高位)存储单元,存储单元,和数存到和数存到30H, 31H单元。单元。程序如下:程序如下:MOV R0,30H ;地址指针指向一个加数的个位、十位地址指针指向一个加数的个位、十位MOV R1,32H ;另一个地址指针指向第二个加数的个位、十位另一个地址指针指向第二个加数的个位、十位MOV A,R0 ;一个加数送累加器一个加数送累加器AADD A,R1 ;两个加数的个位、十位相加两

47、个加数的个位、十位相加DA A ;调整为调整为BCD码数码数MOV R0,A ;和数的个位、十位送和数的个位、十位送30H单元单元INC R0 ;两个地址指针分别指向两个加数的百位、千位两个地址指针分别指向两个加数的百位、千位INC R1MOV A,R0 ;一个加数的百位、千位送累加器一个加数的百位、千位送累加器ADDC A,R1 ;两个加数的百位、千位和进位相加两个加数的百位、千位和进位相加DA A ;调整为调整为BCD码数码数MOV R0,A ;和数的百位、千位送和数的百位、千位送31H单元单元 1、逻辑与运算指令组、逻辑与运算指令组 运算规则为:运算规则为:00=0 01=0 10=0

48、11=1 ANL A,Rn;A (A)(Rn) ANL A,direct;A (A)(direct) ANL A,Ri;A (A)(Ri) ANL A,data;A (A)data ANL direct,A;direct (direct)(A) ANL direct,#data;direct (direct)data 例例 设(设(A)=27H,(,(R0)=0FDH,执行指令:执行指令: ANL A,R0 (A)0 0 1 0 0 1 1 1 (R0)1 1 1 1 1 1 0 1 (A)0 0 1 0 0 1 0 1结果:(结果:(A)25H,(,(P)1。 四、逻辑与运算指令组四、逻辑与

49、运算指令组 2、逻辑或运算指令组、逻辑或运算指令组 运算规则为:运算规则为:0+0=0 0+1=1 1+0=1 1+1=1 ORL A,Rn;A (A)(Rn) ORL A,direct;A (A)(direct) ORL A,Ri;A (A)(Ri) ORL A,data;A (A)data ORL direct,A;direct (direct)(A) ORL direct,#data;direct (direct)data 例例 设(设(P1)25H,(,(A)33H,执行指令:执行指令: ORL P1,A (P1)0 0 1 0 0 1 0 1(A)0 0 1 1 0 0 1 1 (P

50、1)0 0 1 1 0 1 1 1 结果:(结果:(P1)37H 3、逻辑异或运算指令组、逻辑异或运算指令组 运算规则为:运算规则为:0 0=0,1 1=0,0 1=1,1 0=1 XRL A,Rn;A (A) (Rn) XRL A,direct;A (A) (direct) XRL A,Ri;A (A) (Ri) XRL A,data;A (A) data XRL direct,A;direct (direct) (A) XRL direct,#data;direct (direct) data 例例 设(设(A)94H,(,(R3)53H,执行指令:执行指令: XRL A,P3 (A) 1

51、 0 0 1 0 1 0 0 (R3)0 1 0 1 0 0 1 1 (A)1 1 0 0 0 1 1 1 结果:(结果:(A)0C7H,(,(P)1。 例例 试分析下列程序执行结果试分析下列程序执行结果 MOV A,0FFH ;(A)0FFH ANL P1,00H ;SFR中中P1口清零口清零 ORL P1,55H ;P1口内容为口内容为55H XRL P1,A ;P1口内容为口内容为0AAH 4、累加器清、累加器清0”和取反指令组和取反指令组 累加器清累加器清“0”指令一条:指令一条: CLR A;A 0 累加器按位取反指令一条:累加器按位取反指令一条: CPL A,A (A) 要点分析:

52、要点分析: 1)逻辑运算是按位进行的,累加器的按位取反实际上是逻择非运)逻辑运算是按位进行的,累加器的按位取反实际上是逻择非运算。算。 2)当需要只改变字节数据的某几位,而其余位不变时,不能使用)当需要只改变字节数据的某几位,而其余位不变时,不能使用直接传送方法,只能通过逻样运算完成。直接传送方法,只能通过逻样运算完成。 例例 将累加器将累加器A的低的低4位传送到位传送到P1口的低口的低4位,但位,但P1口的高口的高4位需位需保持不变。对此可由以下程序段实现:保持不变。对此可由以下程序段实现: MOV R0,A ;A内容暂存内容暂存R0 ANL A,0FH ;屏蔽屏蔽A的高的高4位(低位(低4

53、位不变)位不变) ANL P1,0F0H ;屏蔽屏蔽P1口的低口的低4位(高位(高4位不变)位不变) ORL P1,A ;实现低实现低4位传送位传送 MOV A,R0 ;恢复恢复A的内容的内容 5、移位指令、移位指令 (1)累加器内容循环左移)累加器内容循环左移 RL A ;An+1 An n06,A0 A7 (2)累加器带进位标志循环左移累加器带进位标志循环左移 RLC A;An+1 An n06,A0 C C A7 (3)累加器内容循环右移累加器内容循环右移 RR A;An An+1 n06,A7 A0(4)累加器带进位标志循环右移累加器带进位标志循环右移 RRC A;An An+1 n0

54、6,A7 C C A0 例例 试用三种方法将累加器试用三种方法将累加器A中无符号数乘中无符号数乘2。 答:方法答:方法1: CLR C RLC A 方法方法2: CLR C MOV R0,A ADD A,R0 方法方法3: MOV B,2 MUL AB 1、无条件转移指令组、无条件转移指令组 不规定条件的程序转移称之为无条件转移。不规定条件的程序转移称之为无条件转移。MCS- 51共有共有4条无条件条无条件转移指令:转移指令: ( 1)、长转移指令)、长转移指令 LJMP addr16;PC addrl6 转移范围转移范围64KB,因此称之为因此称之为“长转移长转移”。 长转移指令是三字节指令

55、,依次是操作码,高长转移指令是三字节指令,依次是操作码,高8位地址,低位地址,低8位地址。位地址。 ( 2)、绝对转移指令)、绝对转移指令 AJMP addr11;PC (PC)2;PC010 addr1l 转移范围转移范围2KB 绝对转移指令是二字节指令绝对转移指令是二字节指令 五、控制转移指令组五、控制转移指令组 ( 3)短转移指令)短转移指令 SJMP rel rel为相对偏移量。为相对偏移量。 计算目的地址,并按计算得到的目的地址实现程序的相对转移。计算目的地址,并按计算得到的目的地址实现程序的相对转移。计算公式为:计算公式为: 目的地址目的地址= (PC) + 2+rel (4)变址

56、寻址转移指令变址寻址转移指令 JMP A+DPTR ;PC (A)(DPTR) 一字节转移指令。指令以一字节转移指令。指令以DPTR内容为基址,而以内容为基址,而以A的内容作的内容作变址,转移的目的地址由变址,转移的目的地址由A的内容和的内容和DPTR内容之和来确定,即目内容之和来确定,即目的地址的地址=(A)(DPTR) 例例 ORG 1000H MOV DPTR,TAB;将将TAB所代表的地址送入数据指针所代表的地址送入数据指针DPTR MOV A,R1;从从R1中取数中取数 MOV B,2 MUL AB ;A乘以乘以2,AJMP语句占语句占2个字节,且是连续存放的个字节,且是连续存放的

57、JMP A+DPTR;跳转跳转TAB:AJMP S0;跳转表格跳转表格 AJMP S1 AJMP S2 S0:S0子程序段子程序段 S1:S1子程序段子程序段 S2:S2子程序段子程序段 END 2、条件转移指令组、条件转移指令组 所谓条件转移就是程序转移是有条件的。执行条件转移指令时,所谓条件转移就是程序转移是有条件的。执行条件转移指令时,如指令中规定的条件满足,则进行程序转移,否则程序顺序执行。条如指令中规定的条件满足,则进行程序转移,否则程序顺序执行。条件转移有如下指令:件转移有如下指令: 1)累加器判零转移指令)累加器判零转移指令 JZ rel;若(若(A)0,则则 PC (PC)+2

58、+rel 转移转移 若(若(A)0,则则PC (PC)+2 顺序执行顺序执行 JNZ rel;若(若(A)0,则则PC (PC)2rel 转移转移 若(若(A)0,则则PC (PC)2 顺序执行顺序执行 例例 将外部将外部RAM的一个数据块(首址为的一个数据块(首址为DATAl)传送到内部传送到内部RAM(首址为首址为DATA2),),遇到传送的数据为零时停止。遇到传送的数据为零时停止。 START:MOV R0,DATA2 ;置内部置内部RAM数据指针数据指针 MOV DPTR,DATA l;置外部置外部RAM数据指针数据指针 LOOPl:MOVX A,DPTR ;外部外部RAM单元内容送单

59、元内容送A JZ LOOP2 ;判传送数据是否为零,判传送数据是否为零,A为零则转移为零则转移 MOV R0,A ;传送数据不为零,送内部传送数据不为零,送内部RAM INC R0 ;修改地址指针修改地址指针 INC DPTR SJMP LOOP1 ;继续传送继续传送 LOOP2:RET ;结束传送,返回主程序结束传送,返回主程序 2)数值比较转移指令)数值比较转移指令 数值比较转移指令把两个操作数进行比较,比较结果作为条件来数值比较转移指令把两个操作数进行比较,比较结果作为条件来控制程序转移。控制程序转移。 共有四条指令:共有四条指令: CJNE A, # data, rel CJNE A,

60、 direct, rel CJNE Rn, # data, rel CJNE R, # data, rel 指令的转移可按以下指令的转移可按以下3种情况说明:种情况说明: 若左操作数右操作数,则:程序顺序执行若左操作数右操作数,则:程序顺序执行PC (PC)十十3 进位标志位清进位标志位清“0”(CY)=0 若左操作数右操作数,则:程序转移若左操作数右操作数,则:程序转移 PC (PC)+3+rel 进位标志位清进位标志位清“0”(CY)=0 若左操作数右操作数,则:程序转移若左操作数右操作数,则:程序转移PC (PC)+3+rel 进位标志位置进位标志位置“1”(CY)=1 3)减)减1条件

61、转移指令条件转移指令 把减把减1与条件转移两种功能结合在一起的指令。共两条:与条件转移两种功能结合在一起的指令。共两条: 寄存器减寄存器减1条件转移指令条件转移指令 DJNZ Rn,rel 两字节指令,其功能为:寄存器内容减两字节指令,其功能为:寄存器内容减1,如所得结果为,如所得结果为0,则程,则程序顺序执行,如没有减到序顺序执行,如没有减到0,则程序转移。具体表示如下:,则程序转移。具体表示如下: Rn (Rn)1 若(若(Rn)0,则则PC (PC)+2+rel 若(若(Rn)0,则则PC (PC)十十2 直接寻址单元减直接寻址单元减1条件转移指令条件转移指令 DJNZ direct,r

62、el 三字节指令,其功能为:直接寻址单元内容减三字节指令,其功能为:直接寻址单元内容减1,如所得结果为,如所得结果为0,则程序顺序执行;如没有减到,则程序顺序执行;如没有减到0,则程序转移。具体表示如下:,则程序转移。具体表示如下: direct (direct)1若(若(direct)0,则则PC (PC)+3+rel 若(若(direct)0,则则PC (PC)3 要点分析:要点分析: 这两条指令主要用于控制程序循环。如预先把寄存器或内部这两条指令主要用于控制程序循环。如预先把寄存器或内部RAM单元赋值循环次数,则利用减单元赋值循环次数,则利用减1条件转移指令,以减条件转移指令,以减1后是

63、否为后是否为0作为转移条件,即可实现按次数控制循环。作为转移条件,即可实现按次数控制循环。例例: 把把2000H开始的外部开始的外部RAM单元中的数据送到单元中的数据送到3000H开始的外开始的外部部RAM单元中,数据个数已在内部单元中,数据个数已在内部RAM35H单元中。单元中。 MOV DPTR,2000H ;源数据区首址源数据区首址 PUSH DPL ;源首址暂存堆栈源首址暂存堆栈 PUSH DPH MOV DPTR,#3000H ;目的数据区首址目的数据区首址 MOV R2,DPL ;目的首址暂存寄存器目的首址暂存寄存器 MOV R3,DPHLOOP: POP DPH ;取回源地址取回

64、源地址 POP DPL MOVX A,DPTR ;取出数据取出数据 INC DPTR ;源地址增量源地址增量 PUSH DPL ;源地址暂存堆找源地址暂存堆找 PUSH DPH MOV DPL,R2 ;取回目的地址取回目的地址 MOV DPH,R3 MOVX DPTR,A ;数据送目的区数据送目的区 INC DPTR ;目的地址增量目的地址增量 MOV R2,DPL ;目的地址暂存寄存器目的地址暂存寄存器 MOV R3,DPH DJNZ 35H,LOOP ;没完,继续循环没完,继续循环 RET ;返回主程序返回主程序 3、子程序调用与返回指令组、子程序调用与返回指令组 子程序结构,即把重复的程

65、序段编写为一个子程序,通过主程子程序结构,即把重复的程序段编写为一个子程序,通过主程序调用而使用它。减少了编程工作量,缩短了程序的长度。序调用而使用它。减少了编程工作量,缩短了程序的长度。 调用指令在主程序中使用,而返回指令则应该是子程序的最后调用指令在主程序中使用,而返回指令则应该是子程序的最后一条指令。执行完这条指令之后,程序返回主程序断点处继续执行。一条指令。执行完这条指令之后,程序返回主程序断点处继续执行。如图所示。如图所示。 1)、绝对调用指令)、绝对调用指令 ACALL addr11 二字节指令,子程序调用范围是二字节指令,子程序调用范围是2KB,其功能:其功能: 断点保护断点保护

66、 断点保护是通过自动方式的堆找操作实现的,即把加断点保护是通过自动方式的堆找操作实现的,即把加2以后的以后的PC值值自动送堆找保存起来,待子程序返回时再送回自动送堆找保存起来,待子程序返回时再送回PC。 构造目的地址构造目的地址 目的地址的构造是在目的地址的构造是在PC+2的基础上,以指令提供的的基础上,以指令提供的11位地址取代位地址取代PC的低的低11位,而位,而PC的高的高5位不变。即:位不变。即: PC (PC)2 SP (SP)1,(,(SP) (PC)70 SP (SP)1,(,(SP) (PC)158 (PC)100 addr11 2)长调用指令)长调用指令 LCALL addr

67、16 本指令是三字节指令,调用地址在指令中直接给出,子程序调本指令是三字节指令,调用地址在指令中直接给出,子程序调用范围是用范围是64KB。指令执行后,断点进找保存,以指令执行后,断点进找保存,以addrl6作地址调作地址调用子程序。因此本指令的操作内容可表示为:用子程序。因此本指令的操作内容可表示为: PC (PC)3 SP (SP)1,(,(SP) (PC)70 SP (SP)1,(,(SP) (PC)158 (PC)100 addr16 3)返回指令返回指令 RET;子程序返回指令子程序返回指令 RETI;中断服务子程序返回指令中断服务子程序返回指令 功能:子程序返回指令执行子程序返回功

68、能,从堆找中自动功能:子程序返回指令执行子程序返回功能,从堆找中自动取出断点地址送给程序计数器取出断点地址送给程序计数器PC,使程序在主程序断点处继续向使程序在主程序断点处继续向下执行。下执行。 4、空操作指令、空操作指令 NOP;PC (PC)+1 空操作指令也算一条控制指令,即控制空操作指令也算一条控制指令,即控制CPU不作任何操作,只不作任何操作,只消耗一个机器周期的时间。空操作指令是单字节指令,因此执行后消耗一个机器周期的时间。空操作指令是单字节指令,因此执行后PC加加1,时间延续一个机器周期。,时间延续一个机器周期。NOP指令常用于程序的等待或时指令常用于程序的等待或时间的延迟。间的

69、延迟。 1、位传送指令组、位传送指令组 MOV C,bit ;CY (bit) MOV bit,C ;bit (CY) 例如例如 将将20H位的内容传送至位的内容传送至5AH位。位。 MOV 10H, C ;暂存暂存CY内容内容 MOV C,20H ;20H位送位送CY MOV 5AH,C ; CY送送5AH位位 MOV C,10H ;恢复恢复CY内客内客 2、位置位复位指令组、位置位复位指令组 SETB C ;CY 1 SETB bit ; bit 1 CLR C ;CY 0 CLR bit ; bit 0 六、位操作类指令六、位操作类指令 3.位运算指令组位运算指令组 与:与: ANL C

70、,bit ;CY (CY)(bit) ANL C,/bit ;CY (CY)(bit) 或:或: ORL C,bit ;CY (CY)(bit) ORL C,/bit ;CY (CY)(bit) 非非 CPL C ;CY (/CY) CPL bit ;bit (/bit) 例例 试编程将内部数据存储器试编程将内部数据存储器40H单元的单元的第第0位和第位和第7位置位置“1”,其余位变反。,其余位变反。 根据题意编制程序如下:根据题意编制程序如下: MOV A,40H CPL A SETB ACC. 0 SETB ACC. 7 MOV 40H,A 例例 请用位操作指今,求下面逻辑方程:请用位操作

71、指今,求下面逻辑方程: P17ACC.0(B.0十十P2.1)P3.2 MOV C,B.0 ORL C,P2.1 ANL C,ACC.0 ORL C,/P3.2 MOV P17,C 4、位控制转移指令组、位控制转移指令组 位控制转移指令就是以位的状态作为实现程序转移的判断条件。位控制转移指令就是以位的状态作为实现程序转移的判断条件。 1)以)以C状态为条件的转移指令状态为条件的转移指令 JC rel ;(;(CY)=1 转移,否则顺序执行转移,否则顺序执行 JNC rel ;(;(CY)=0 转移,否则顺序执行转移,否则顺序执行 2)以位状态为条件的转移指令)以位状态为条件的转移指令 JB b

72、it,rel ;位状态为位状态为“1”转移转移 JNB bit,rel ;位状态为位状态为“0”转移转移 JBC bit,rel ;位状态为位状态为“1”转移,并使该位清转移,并使该位清“0”。 小结:小结: 1) JZ 若累加器若累加器A内容为内容为0,则转移。,则转移。 2) JNZ 若累加器若累加器A内容不为内容不为0,则转移。,则转移。 3) JC 若进位标志(若进位标志(CY)1,则转移。则转移。 4) JNC 若进位标志(若进位标志(CY)0,则转移。则转移。 5) JB 若直接寻址的位值为若直接寻址的位值为1,则转移。,则转移。 6) JNB 若直接寻址的位值为若直接寻址的位值为0,则转移。,则转移。 7) JBC 若直接寻址的位值为若直接寻址的位值为1,则转移,然后将直接寻址的,则转移,然后将直接寻址的位清位清0。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号