资源预览内容
第1页 / 共103页
第2页 / 共103页
第3页 / 共103页
第4页 / 共103页
第5页 / 共103页
第6页 / 共103页
第7页 / 共103页
第8页 / 共103页
第9页 / 共103页
第10页 / 共103页
亲,该文档总共103页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机原理与应用单片机原理与应用第3章 MCS-51MCS-51系列单片机系列单片机指令系统指令系统本章要点本章要点:指令格式指令格式寻址方式寻址方式数据传送类指令数据传送类指令算术运算类指令算术运算类指令控制转移类指令控制转移类指令逻辑运算类指令逻辑运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.1 MCS-51指令系指令系统统概述概述指令指令指令系统指令系统MCS-51MCS-51系列单片机使用系列单片机使用4444种助记符,有种助记符,有5151种基本操作。种基本操作。第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统按执行时间分类按执行时间分类 单字节指令、双字节指令、三字节指令单字节指令、双字节指令、三字节指令按执行时间分类按执行时间分类 单机器周期指令、双机器周期指令、四机单机器周期指令、双机器周期指令、四机 器周期指令器周期指令MCS-51MCS-51系列单片机有固定的机器周期,规系列单片机有固定的机器周期,规定一个机器周期有定一个机器周期有6 6个状态个状态, , 而一个状态包含而一个状态包含两个节拍。两个节拍。3.1 MCS-51指令系指令系统统概述概述第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 指令格式指的是指令的表示方法,其内容包括指令格式指的是指令的表示方法,其内容包括指令的长度和指令内部信息的安排指令的长度和指令内部信息的安排。 一条指令通常由操作码和操作数两部分组成一条指令通常由操作码和操作数两部分组成。 指令格式如下:指令格式如下: 标号标号:操作码:操作码 操作数操作数;注释;注释3.l.1 指令格式指令格式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 标号用于表示该指令的符号地址,一般由标号用于表示该指令的符号地址,一般由1 6个个字符组成,与操作码之间用冒号分开。字符组成,与操作码之间用冒号分开。操作码规定了指令所能实现的功能,由助记符表操作码规定了指令所能实现的功能,由助记符表示的字符串组成示的字符串组成。操作数是表示操作的对象操作数是表示操作的对象。注释部分对于汇编语言来说可有可无,是为了便注释部分对于汇编语言来说可有可无,是为了便于阅读理解而添加的于阅读理解而添加的。3.l.1 指令格式指令格式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.1.2 寻址方式寻址方式 寻址方式就是在指令中给出的寻找操作数或操作寻址方式就是在指令中给出的寻找操作数或操作数所在地址的方法。执行任何一条指令都需要使数所在地址的方法。执行任何一条指令都需要使用操作数。用操作数。 立即寻址立即寻址 MOV DPTR,1234H第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 2直接寻址直接寻址 MOV A , 3AH3.1.2 寻址方式寻址方式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 3寄存器寻址寄存器寻址 INC R03.1.2 寻址方式寻址方式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 4寄存器间接寻址寄存器间接寻址 ANL A,R13.1.2 寻址方式寻址方式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 相对寻址相对寻址 目的地址转移指令所在地址转移指令字节数目的地址转移指令所在地址转移指令字节数rel JC 80H3.1.2 寻址方式寻址方式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 6变址寻址变址寻址 MOVC A,ADPTR3.1.2 寻址方式寻址方式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 7位寻址位寻址位寻址的寻址范围:位寻址的寻址范围:(1)片内)片内RAM中的位寻址区中的位寻址区(2)可供位寻址的特殊功能寄存器位)可供位寻址的特殊功能寄存器位3.1.2 寻址方式寻址方式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统表表3-1 寻寻址方式与址方式与寻寻址空址空间间寻寻址方式址方式寻寻址空址空间间寄存器寄存器寻寻址址R0R7、A、B、CY(bit)、)、DPTR直接直接寻寻址址内部内部RAM低低128字字节节特殊功能寄存器特殊功能寄存器寄存器寄存器间间接接寻寻址址内部内部RAM(R0、R1、SP仅仅PUSH、POP)立即立即寻寻址址程序存程序存储储器器变变址址寻寻址址程序存程序存储储器(器(A+PC、A+DPTR)相相对寻对寻址址程序存程序存储储器(器(PC+偏移量)偏移量)位位寻寻址址内部内部RAM中有中有128个可位个可位寻寻址址特殊功能寄存器中可位特殊功能寄存器中可位寻寻址址3.1.2 寻址方式寻址方式第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.1.3 指令中符号意义说明指令中符号意义说明指令符号指令符号含含义义Rn(n07)表示当前寄存器表示当前寄存器组组的的8个通用寄存器个通用寄存器R0R7中的一个。中的一个。Ri(i0,l)可用作可用作间间接接寻寻址的寄存器,只能是址的寄存器,只能是R0、R1两个寄存器中的一个。两个寄存器中的一个。Direct内部的内部的8位地址,既可以指片内位地址,既可以指片内RAM的低的低128个个单单元地址,也可元地址,也可以指特殊功能寄存器的地址或符号名称,因此以指特殊功能寄存器的地址或符号名称,因此direct表示直接表示直接寻寻址方式。址方式。#data指令中所含的指令中所含的8位立即数位立即数#data16指令中所含的指令中所含的16位立即数位立即数addr1616位目的地址,只限于在位目的地址,只限于在LCALL和和LJMP指令中使用指令中使用addr1111位目的地址,只限于在位目的地址,只限于在ACALL和和AJMP指令中使用指令中使用Rel相相对转对转移指令中的偏移量,移指令中的偏移量,为为8位位带带符号数。符号数。为为SJMP和所有条和所有条件件转转移指令所用。移指令所用。转转移范移范围为围为相相对对于下一条指令笫一字于下一条指令笫一字节节地址地址的的128127第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统DPTR数据指数据指针针bit 片内片内RAM(包括部分特殊功能寄存器)中的直接(包括部分特殊功能寄存器)中的直接寻寻址位址位A 累加器累加器 BB寄存器寄存器C 进进位位标标志位,是布志位,是布尔尔处处理机中的累加器,也称之理机中的累加器,也称之为为累累加位加位间间址寄存器的前址寄存器的前缀标缀标志志/位地址的前位地址的前缀标缀标志,表示志,表示对该对该位操作数取反位操作数取反()某寄存器或某某寄存器或某单单元的内容元的内容() 由由寻寻址的址的单单元中的内容元中的内容箭箭头头左左边边的内容被箭的内容被箭头头右右边边的内容所取代的内容所取代3.1.3 指令中符号意义说明指令中符号意义说明第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.2 MCS-51指令分指令分类类介介绍绍 MCS-51的指令系统,共有的指令系统,共有111条指令,按照条指令,按照功能又可分为功能又可分为5大类:大类:数据数据传送类指令传送类指令29条,分别为片内条,分别为片内RAM,片外,片外RAM,程序存储器的传送指令,交换及堆栈操作指令。程序存储器的传送指令,交换及堆栈操作指令。算术运算类指令算术运算类指令24条,分别为加、减、乘、除、带进条,分别为加、减、乘、除、带进位加、加位加、加1、减、减1指令。指令。第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统逻辑运算类指令逻辑运算类指令24条,分别为逻辑与、或、异或、条,分别为逻辑与、或、异或、移位指令。移位指令。控制转移类指令控制转移类指令17条,分别为无条件转移与调用、条,分别为无条件转移与调用、条件转移、空操作指令。条件转移、空操作指令。布尔(位)操作指令布尔(位)操作指令17条,分别为位数据传送、条,分别为位数据传送、位与、位或、位转移指令。位与、位或、位转移指令。3.2 MCS-51指令分指令分类类介介绍绍第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统1内部内部8位数据传送指令位数据传送指令传送指令的格式为:传送指令的格式为:MOV 目的字节目的字节,源字节源字节源操作数源操作数:累加器:累加器A,工作寄存器,工作寄存器Rn(n0,7),直接地址),直接地址direct、间接寻址寄存器、间接寻址寄存器Ri(i0,1)和立即数)和立即数data 5种。种。目的操作数目的操作数:累加器:累加器A,工作寄存器工作寄存器Rn(n0,7),直接地址),直接地址direct和间接寻址寄存器和间接寻址寄存器Ri(i0,1)4种。种。3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统指指 令令功功 能能寻寻址范址范围围机器机器码码MOV A,Rn;(A) (Rn)R0-R711101 rrr (E8-EFH)MOV A,direct;(A)(direct)00-FFH11100101 direct双字双字节节MOV A,Ri;(A)(Ri)00-FFH1110011r (E6-E7H)MOV A,data;(A)(data)#00-#FFH01110100 data表表3-3 以累加器以累加器A为目的操作数的指令组为目的操作数的指令组传送指令是以累加器传送指令是以累加器A A为中心的总体结构。绝大部分传送操作均需通过为中心的总体结构。绝大部分传送操作均需通过A A进行的。进行的。3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统以工作寄存器以工作寄存器RnRn为目的操作数的指令组为目的操作数的指令组 MOV Rn,A ;(;(Rn)(A)MOV Rn,direct ;(Rn)(direct)MOV Rn,data ;(;(Rn)data该指令组的功能是把源操作数的内容送入当该指令组的功能是把源操作数的内容送入当前工作寄存器组的前工作寄存器组的R0R0R7R7中的某一个寄存器。源中的某一个寄存器。源操作数有寄存器寻址、直接寻址和立即寻址等寻操作数有寄存器寻址、直接寻址和立即寻址等寻址方式。址方式。 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统以直接地址以直接地址directdirect为目的操作数的指令为目的操作数的指令MOV direct,A ;(direct)(A)MOV direct,Rn ;(;(direct)(Rn)MOV direct,direct ;(direct)(direct)MOV direct, Ri ;(direct)(Ri)MOV direct,data ;(direct)data3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统MOV A,80H ;表示把片内;表示把片内RAM中地址中地址为为80H单元单元(即即P1口口)中的内容送中的内容送A。MOV 80H,88H ;这是一条;这是一条3字节指令,字节指令,表示把立即数表示把立即数88H送到片内送到片内RAM中的中的80H地址单地址单元中去。元中去。MOV 80H,0E0H ;这是一条;这是一条3字节指令,字节指令,表示把表示把E0H单元的内容送到单元的内容送到80H单元中去。这是片单元中去。这是片内数据存储单元中的直接地址单元之间数据的直内数据存储单元中的直接地址单元之间数据的直接传送。接传送。3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统216位数据传送指令位数据传送指令MOV DPTR,data16 ;(;(DPTR)data16执行指令:执行指令: MOV DPTR,1234H执行结果:执行结果: (DPH)12H,(,(DPL)34H 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3外部数据的传送指令组外部数据的传送指令组MOVX 目的字节,源字节目的字节,源字节外部数据存储器或外部数据存储器或I/O内容送累加器内容送累加器AMOVX A,R iMOVX A,DPTR说明:指令执行时,在说明:指令执行时,在P3.7引脚上输出引脚上输出RD有效信号,可用有效信号,可用作外部数据存储器或作外部数据存储器或I/O的读选通信号。的读选通信号。P0口分时输出由口分时输出由Ri或或DPL指定的低八位地址信息和输入累加器中的数据信息,指定的低八位地址信息和输入累加器中的数据信息,P2口则输出口则输出DPH指定的高八位地址信息。指定的高八位地址信息。 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统累加器累加器A内容送外部数据存储器或内容送外部数据存储器或I/O MOVXRi,A MOVXDPTR,A说明:该组指令执行时,在说明:该组指令执行时,在P3.6引脚上输出引脚上输出WR有效有效信号,可以用作外部数据存储器或信号,可以用作外部数据存储器或I/O的写选通信号。的写选通信号。P0口分时输出由口分时输出由Ri或或DPL指定的低八位地址信息和指定的低八位地址信息和累加器中输出的数据信息,累加器中输出的数据信息,P2口则输出口则输出DPH指定的指定的高八位地址信息高八位地址信息。 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统MOVX A,R1 ;(;(34H)56HAMOVX R0,A;(;(A)56H片外片外12H单元中单元中执行结果为片外执行结果为片外RAMRAM的的(34H34H)56H56H,(,(12H12H)56H56H。某应用系统外扩了某应用系统外扩了8K8K字节字节RAMRAM,要求把内部,要求把内部RAMRAM的的20H20H单元内容发送到外部单元内容发送到外部RAMRAM的的800H800H单元中。单元中。MOV DPTR, #800H ;外部数据存储器地址指针外部数据存储器地址指针MOV R0, #20H ;内部数据存储器地址指针内部数据存储器地址指针 MOV A,R0 ;取内部数据存储器;取内部数据存储器20H单元内容单元内容 MOVX DPTR,A ;送外部数据存储器送外部数据存储器800H800H单元单元 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统4程序存储器数据传送指令程序存储器数据传送指令(或称查表指令或称查表指令) MOVC A,APC MOVC A,A+DPTR求平方数求平方数(远程查表法远程查表法)。 MOV DPTR, #TABLE ;指向表首址;指向表首址 MOVC A, A+DPTR ;查表得到平方数;查表得到平方数 MOV 20H,A ;存平方数;存平方数HERE: SJMP HERETABLE DB 00,01,04,09 ;平方表;平方表02-92 DB 16,25,36 DB 49,64,813.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统求平方数求平方数( (近程查表近程查表) )。 ADD A,#rel ;修正偏移量修正偏移量 MOVC A,A+PC ;查表得到平方数查表得到平方数 MOV 20H,A ;存平方数存平方数 HERE SJMP HERE TABLE DB 00,01,04,09,16 ;平方表平方表02-92 DB 25,36,49,64,81说明:说明: rel=TABLE(查表指令地址查表指令地址1) ;MOVC指令为指令为单字节。单字节。3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统5.以间接寻址寄存器以间接寻址寄存器Ri为目的操作数的指令组为目的操作数的指令组 MOVRi,A ;(;(Ri)(A) MOVRi,direct ;(;(Ri)(A) MOVRi,data ;(;(Ri)data 该指令组的功能是把源操作数的内容送入由该指令组的功能是把源操作数的内容送入由 R0或或R1的内容所指的内部的内容所指的内部 RAM中的存储单元。源操中的存储单元。源操作数有寄存器寻址、直接寻址和立即寻址等寻址方作数有寄存器寻址、直接寻址和立即寻址等寻址方式。式。3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设(设(R0)30H(A)3FH 片内片内 (30H)BBH。执行指令执行指令 XCH A,R0 执行结果执行结果 (A)=BBH,(,(30H)3FH 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统半字节交换指令组半字节交换指令组 XCHD A,Ri该指令将该指令将Ri间接寻址单元的低间接寻址单元的低4位内容与累加器位内容与累加器A的的低低4位内容互换,而它们的高位内容互换,而它们的高4位内容均不变。此指位内容均不变。此指令不影响标志位。令不影响标志位。设(设(R0)20H,(,(A)36H(00110110B),内),内部部RAM中(中(20H)75H(0111010lB)。)。执行指令执行指令 XCHD, A,R0执行结果执行结果 (20H)01110110B76H,(,(A)00110101B35H3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统7堆栈操作指令组堆栈操作指令组 PUSH direct POP direct中断响应时中断响应时(SP)30H,DPTR的内容为的内容为0123H,执,执行入栈指令其结果怎样?行入栈指令其结果怎样? PUSH DPL;低;低8位数据指针寄存器位数据指针寄存器DPL内容入栈内容入栈 PUSH DPH;高;高8位数据指针寄存器位数据指针寄存器DPH内容入栈。内容入栈。执行结果:执行结果: 第一条指令第一条指令(SP)131H(SP),(DPL)23H(31H) 第二条指令第二条指令(SP)132H(SP),(DPH)01H(32H) 即片内即片内RAM中,中,(31H)23H,(32H)01H,(SP)32H。3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 设(设(SP)32H,片内,片内RAM的的30H32H单元中的单元中的内容分别为内容分别为20H,23H,01H,执行下列指令的结,执行下列指令的结果怎样?果怎样?POP DPH ;(;(SP)()(32H)01HDPH ;(;(SP)132H131HSP POP DPL ;(;(SP)()(31H)23HDPL ;(;(SP)131H130HSP POP SP ;(;(SP)12FHSP ;(;(SP)()(30H)20HSP 以上第三条指令为特殊情况,先执行(以上第三条指令为特殊情况,先执行(SP)12FH,后装入由栈顶退出的值,所以执行后(后装入由栈顶退出的值,所以执行后(SP)20H。 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统检查传送结果检查传送结果已知内部已知内部RAM (10H)=00H,(30H)=40H,(40H)=10H,P1口为口为11001010B,分析指令执行后各单元内容。,分析指令执行后各单元内容。MOV R0,#30H ;R0=30HMOV A,R0 ;A=40HMOV R1,A ;R1=40HMOV B,R1 ;B=10HMOV R1,P1 ;(40H)=11001010BMOV P2,P1;P2=11001010BMOV 10H,#20H ;(10H)=20H执行结果:执行结果:(10H)=20H, (30H)=40H, (40H)=CAH, P1=P2=CAHA=40H, B=10H, R0=30H, R1=40H 3.2.1 数据传送类指令数据传送类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 算算术术运运算算类类指指令令都都是是通通过过算算术术逻逻辑辑运运算算单单元元ALUALU进进行行数数据据运运算算处处理理的的指指令令。它它包包括括各各种种算算术术操操作作,其其中中有有加加、减减、乘乘、除除四四则则运运算算。MCS-51MCS-51单单片片机机还还有有带带借借位位减减法法、比比较较指指令令。加加法法类类指指令令包包括括加加法法、带带进进位位的的加法、加加法、加1 1以及二一十进制调整。以及二一十进制调整。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统1加法指令加法指令 ADD A,Rn ;(;(A)()(Rn)(A) ADD A,direct ;(;(A)()(direct)(A) ADD A,Ri ;(;(A)()(Ri)(A) ADD A,data ;(;(A)data(A) 该组该组指令是将工作寄存器指令是将工作寄存器Rn、片内、片内RAM单单元中元中的内容、的内容、间间接地址存接地址存储储器中的器中的8位无符号二位无符号二进进制数制数及立即数与累加器及立即数与累加器A中的内容相加,相加的中的内容相加,相加的结结果仍果仍存放在存放在A中。中。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设(设(A)C3H,(,(R0)=AAH。 执行指令:执行指令:ADD A,R0,则操作如下所示:,则操作如下所示: 1 1 0 0 0 0 1 1 B +1 0 1 0 1 0 1 0 B 0 1 1 0 1 1 0 1 B 执行结果:执行结果:(A)6DH,(CY)1,(OV)1,(AC)0。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统2带进带进位位加法指令位位加法指令 ADDC A,Rn ;(;(A)(A)()(Rn)()(CY) ADDC A,direct ;(A)(A)()(direct)()(CY) ADDC A,Ri ;(;(A)(A)()(Ri)()(CY) ADDC A,data ;(;(A)(A)data(CY) 该组该组指令是将工作寄存器指令是将工作寄存器Rn、片内、片内RAM单单元中元中的内容、的内容、间间接地址存接地址存储储器中的器中的8位无符号二位无符号二进进制数及制数及立即数与累加器立即数与累加器A的内容和当前的内容和当前进进位位标标志志CY的内容相的内容相加,相加的加,相加的结结果仍存放在果仍存放在A中。中。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设(A)C3H,(,(R0)AAH,(,(CY)1。执执行指令:行指令:ADDC A,R0,操作,操作过过程如下:程如下: 1 1 0 0 0 0 1 1 + 1 0 1 0 1 0 1 0 + 1 (CY) 0 1 1 0 1 1 1 0执执行行结结果果:(A)6EH,(CY)1,(OV)l, (AC)0。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统已知已知(A)B3H,(R1) 56H。执执行行ADD A,R1指令,指令,执执行行过过程如下:程如下: B 3H 1 0 1 1 0 0 1 1 + 5 6H + 0 1 0 1 0 1 1 0 1 0 9H 1 0 0 0 0 1 0 0 1 CY=1 CY=1,OV=0,AC=0 说说明:若二个数是无符号数,明:若二个数是无符号数,则则B3H56H=109H,答案正确;若二个数是答案正确;若二个数是带带符号数,符号数,则则B3H的原的原码码是是77D,56H原原码为码为86D,(77D) 86D09D, 答答案也是正确的,因案也是正确的,因为为OV0。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3增量增量(加加1)指令指令 INC Rn ;(Rn)(Rn)1 INC direct ;(direct)(direct)1 INC Ri ;(Ri)(Ri)1 INC A ;(;(A)(A)l INC DPTR ;(;(DPTR)(DPTR)1 该组该组指令是将工作寄存器指令是将工作寄存器Rn、片内、片内RAM单单元中元中的内容的内容 、间间接地址存接地址存储储器中的器中的8位无符号二位无符号二进进制数、制数、累加器累加器A和数据指和数据指针针DPTR的内容加的内容加1,相加的,相加的结结果仍果仍存放在原存放在原单单元中。元中。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设(R0)7EH,(7EH)0FFH,(7FH)40H执执行以下指令:行以下指令: INC R0 ;0FFH100H 仍存入仍存入7EH单单元元 INC R0 ;7EH17FH 存入(存入(R0) INC R0 ;40H141H 存入(存入(7FH)执执 行行 结结 果果 为为 ( R0) 7FH, ( 7EH) 00H(7FH)41H 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统4二二十十进进制制调调整指令整指令 DA A 该该指令是指令是对对BCD码码的加法的加法结结果果进进行行调调整。两个整。两个压缩压缩型型BCD码码按二按二进进制数相加之后,必制数相加之后,必须经须经此指令此指令的的调调整才能得到整才能得到压缩压缩型型BCD码码的和数。的和数。十十进进制制调调整的修正方法整的修正方法为为:(1)当累加器低四位大于当累加器低四位大于9或半或半进进位位标标志志AC=1时时,则进则进行低四行低四位加位加6修正修正(A03)6(A03),其中,其中(A03)表示累加器表示累加器A的低四位的低四位,即即(A)=(A) 06;(2)当累加器高四位大于当累加器高四位大于9或或进进位位标标志志CY1时时, 进进行高四位加行高四位加6修正修正(A47)6(A47) , 其中其中(A47)表示累加器表示累加器A的高的高四位,四位,即即(A) (A) 60H 。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设(A)0101 0110B56 BCD,(R3) 0110 0111B67BCD,(CY)1。执执行下述二条指令:行下述二条指令: ADDC A,R3 DA A执执行行 ADDC A,R3 (A) 0 1 0 1 0 1 1 0 (56 BCD) (R3) 0 1 1 0 0 1 1 1 (67 BCD) + (CY) 1 1 0 1 1 1 1 1 0再再执执行行 DA A 1 0 1 1 1 1 1 0 (高、低四位均大于高、低四位均大于9) 0 1 1 0 0 1 1 0 (加加66H操作操作) Cy=1 0 0 1 0 0 1 0 0 (124 BCD)即即BCD码码数数56671124。经经DA A指令校正后,答案正确。指令校正后,答案正确。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统例:二个多字节无符号数相加。设有二个四位例:二个多字节无符号数相加。设有二个四位BCD码分别存码分别存在内部在内部RAM的的50H、51H和和60H、61H单元中,试编写程单元中,试编写程序,求二个序,求二个BCD码数之和,结果存入内部码数之和,结果存入内部40H、41H单元。单元。MOV R0,#50H;被加数首址;被加数首址MOV R1,#60H ;加数首址;加数首址MOV A,R0 ;取被加数;取被加数ADD A,R1 ;与加数相加;与加数相加DA A ;二十进制调整;二十进制调整MOV 40H,A ;存和;存和INC R0 ;高位相加;高位相加INC R1MOV A,R0 ADDC A,R1DA AMOV 41H,A3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统对累加器对累加器A中压缩中压缩BCD码数减码数减1。 ADD A,#99H DA A HERE: SJMP HERE 累加器累加器A允许的最大允许的最大BCD码数为码数为99BCD,当,当对对A实行加实行加99BCD码数时,必然形成对码数时,必然形成对BCD码百码百位数的进位,而剩在位数的进位,而剩在A中的内容正是压缩中的内容正是压缩BCD码码数减数减1。如。如BCD的的59H,经,经DA A的调整后,为的调整后,为58H且且CY=1,不考虑进位,不考虑进位CY,则,则BCD码码59158。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统5带带借位减法指令借位减法指令 SUBB A,Rn ;(A)(Rn)(CY)(A) SUBB A,drect ;(A)一一(drect)一一(CY)(A) SUBB A,Ri ;(A)一一(Ri)一一(CY)(A) SUBB A,data ;(A)data(CY)(A) 该组该组指令是从指令是从A中减去中减去进进位位位位CY和指定的和指定的变变量,量,结结果(差)存入果(差)存入A中。中。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设(A)0C9H,(,(R2)54H,(,(CY)1。执执行指令行指令SUBB A,R2,执执行行过过程如下:程如下: 1100 1001 0101 0100 0000 0001 0111 0100执执行行结结果果(A)74H,(CY)0,(AC)0,(OV)1。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统6减减1指令指令 DEC Rn ;(;(Rn)1(Rn) DEC direct ;(;(direct)1(direct) DEC Ri ;(;(Ri)1(Ri) DEC A ;(A)1(A) 该该组组指令是将工作寄存器指令是将工作寄存器Rn、片内、片内RAM单单元中元中的内容、的内容、间间接地址存接地址存储储器中的器中的8位无符号二位无符号二进进制数和制数和累加器累加器A的内容减的内容减1,相减的,相减的结结果仍存放在原果仍存放在原单单元中。元中。这类这类指令位不影响各个指令位不影响各个标标志位。志位。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设(R0)7FH,(,(7EH)00H,(,(7FH)40H。执执行指令:行指令: DEC R0 ;(;(7FH)一)一140Hl3FH(7FH) DEC R0 ;(;(R0)一)一l7FHl7EH(R0) DEC R0 ;(;(7EH)一)一l00HlFFH(7EH)执执行行结结果:果: (R0)7EH,(,(7EH)FFH,(,(7FH)3FH。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统7乘法乘法/除法指令除法指令乘法指令乘法指令。 MUL AB 该该指令是将指令是将A和和B中两个无符号中两个无符号8位二位二进进制数相乘,制数相乘,所得的所得的16位位积积的低的低8位存于位存于A中,高中,高8位存于位存于B中。中。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设(A)50H(80D),(),(B)A0H(160D)。)。执执行指令:行指令: MUL AB ;80160128003200H执执行行结结果:果:乘乘积积 3200H(12800),(A)00H,(B)32H,(OV)1,(,(CY)0。 3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统除法指令除法指令。 DIV AB 该该指令是将指令是将A中无符号中无符号8位二位二进进制数除以制数除以B中的无中的无符号符号8位二位二进进制数,所得商的二制数,所得商的二进进制数部分存于制数部分存于A,余数部分存于余数部分存于B中,并将中,并将CY和和OV置置0。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设(设(A)0FBH(251D),(),(B)12H(18D)。)。执行指令:执行指令: DIV AB执行结果:执行结果:(A)0DH(商(商13),(),(B)11H(余数(余数I7),),(OV)0,(,(CY)0。3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统例例3:数的码制转换。把累加器:数的码制转换。把累加器A中无符号二进制整中无符号二进制整数数(00-FFH)转换为三位压缩转换为三位压缩BCD码码(0255),并,并存入内存存入内存30H和和31H单元。单元。BINBCD:MOV B,#100 DIV AB ;A10,百位数在,百位数在A,余数在余数在B MOV 30H,A ;百位数送;百位数送30H MOV A,B MOV B,#0AH DIV AB ;余数;余数10 ,十位数在,十位数在A低四位低四位, 个位数在个位数在B SWAP A ;十位数放;十位数放A的高四位的高四位 ADD A,B ;十位数和个位数组合后送;十位数和个位数组合后送31H MOV 31H,A RET3.2.2 算术运算类指令算术运算类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统 逻辑运算类指令主要包括:与、或、异或、清除、求反、逻辑运算类指令主要包括:与、或、异或、清除、求反、移位等,主要用于对两个操作数进行逻辑运算。操作结果保存移位等,主要用于对两个操作数进行逻辑运算。操作结果保存到累加器到累加器A或直接寻址单元。该类指令执行时一般不影响程序或直接寻址单元。该类指令执行时一般不影响程序状态字状态字PSW,仅当操作数为累加器,仅当操作数为累加器A时将影响奇偶标志位时将影响奇偶标志位P,带进位的移位指令将影响带进位的移位指令将影响CY位。该指令的助记符主要有位。该指令的助记符主要有ANL、ORL、XRL、RL、RLC、RR、RRC、CPL、CLR等。等。3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统1逻辑逻辑“与与”运算指令运算指令这组这组指令的助指令的助记记符符为为ANL,用符号,用符号“”表示:表示: 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)(drect)data 该组该组指令是将目的地址指令是将目的地址单单元中的数和源地址元中的数和源地址单单元元中的数按中的数按“位位”相相“与与”,其,其结结果放回目的地址果放回目的地址单单元中元中。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设(设(A)A3H(1010 0011B),(R0)AAH(1010 1010B)。)。执行指令:执行指令: ANL A,R0执行结果:执行结果: (A) A2H(1010 0010B)。)。设设P1=FFH执行指令:执行指令: ANL P1,#0F0H执行结果:执行结果: P1F0H,这时,这时P1.7至至P1.4位状态不变,位状态不变,P1.3至至P1.0位被位被清零。清零。3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统2逻辑逻辑“或或”运算指令运算指令这组这组指令的助指令的助记记符符为为ORL,用符号,用符号“”表示:表示: 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 该组该组指令是将目的地址指令是将目的地址单单元中的数和源地址元中的数和源地址单单元元中的数按中的数按“位位”相相“或或”,其,其结结果放回目的地址果放回目的地址单单元中元中。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设 ( A) 0A3H( 10100011B) , ( R0) 45H(01000101B)。)。 执执行指令:行指令: ORL A, R0 执执行行结结果:(果:(A)E7H(1110 0111B)。)。 注:注: 逻逻辑辑或或运运算算指指令令用用于于强强制制将将指指定定位位置置位位。即即给给某些位置某些位置1,也就是合并二个数中的,也就是合并二个数中的“1”。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3逻辑逻辑“异或异或”运算指令运算指令这组这组指令的助指令的助记记符符为为XRL,用符号,用符号“ ”表示:表示: 【规则规则】0 0=01 1=0 0 1=11 0=1【格式格式】 XRL A,Rn ;(;(A)(A) (Rn) XRL A,drect ;(;(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) data3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设 ( A) 0A3H( 10100011B) , ( R0) 045H(01000l0lB)。)。执执行指令:行指令:XRL A,R0,执执行行过过程程为为: 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0执执行行结结果:(果:(A)E6H(111001l0B)。)。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统4累加器移位累加器移位/循循环环指令指令 累加器累加器移位移位/循循环环指令包括指令包括带进带进位位C和不和不带进带进位位C的循的循环环左移和循左移和循环环右移等四条指令。右移等四条指令。对对于于带进带进位的循位的循环环移位,移位,C的状的状态态由移入的数位决定,其他状由移入的数位决定,其他状态标态标志志位不受影响。位不受影响。(1)循)循环环右移指令:右移指令: RR A 该该指令指令的功能是将累加器的内容逐位循的功能是将累加器的内容逐位循环环右移一右移一位,并且位,并且a0的内容移到的内容移到a7,如,如图图3-9(a)所示。此操)所示。此操作不影响作不影响标标志位。志位。3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统设设(A)0A6H(10100110B),),执执行行RR A指令,指令,执执行行结结果果53H(01010011B)。)。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统(2)带进带进位循位循环环右移指令:右移指令: RRC A 该该指令的功能是将累加器的内容和指令的功能是将累加器的内容和进进位位一起循位位一起循环环右移一位,并且右移一位,并且a0移入移入进进位位位位CY,CY的内容移到的内容移到a7,如,如图图3-9(b)所示。此操作不影响)所示。此操作不影响CY之外的之外的标标志志位。位。设设(A)0B4H(10110100B),(CY)1,执执行指令:行指令:RRC A,执执行行结结果:果:(A)0DAH ( 11011010B),(CY)0 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统(3)循)循环环左移指令:左移指令: RL A 该该指令是将累加器的内容逐位循指令是将累加器的内容逐位循环环左移一位,并左移一位,并且且a7的内容移到的内容移到a0,如,如图图3-9(c)所示。此操作不影)所示。此操作不影响响标标志位。志位。设设(A)3AH(00111010B),),执执行指令:行指令:RL A执执行行结结果:(果:(A)74H(01110l00B)。)。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统(4)带进带进位循位循环环左移指令:左移指令: RLC A 该该指令的功能是将累加器的内容和指令的功能是将累加器的内容和进进位位一起循位位一起循环环左移一位,并且左移一位,并且a7移入移入进进位位位位CY,CY的内容移到的内容移到a0,见图见图 3-9(d)所示。此操作不影响)所示。此操作不影响CY之外的之外的标标志位。志位。设设(A)3AH(00111010B),(),(CY)1。执执行指令:行指令:RLC A执执行行结结果:果:(A)=75H(01110101B),(),(CY)0 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统5累加器按位取反指令累加器按位取反指令 CPL A 该该指指令令的的功功能能是是对对进进行行累累加加器器的的内内容容逐逐位位取取反反,结结果仍存在果仍存在A中。此操作不影响中。此操作不影响标标志位。志位。设设(A)21H(0010 0001B)执执行指令:行指令:CPL A执执行行结结果:(果:(A)DEH (1101 1110B)。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统6累加器清累加器清0指令指令 CLRA 该该指令的功能指令的功能对对累加器累加器进进行清行清0,此操作不影响,此操作不影响标标志位。志位。 设设(A)44H,执执行指令:行指令:CLR A 执执行行结结果:(果:(A)00H。 3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统例例 : 数数 据据 的的 拆拆 分分 与与 拼拼 装装 , 要要 求求 : 从从 (30H)= X7X6X5X4X3X2X1X0中中取取出出高高5位位,从从(31H)=Y7Y6Y5Y4Y3Y2Y1Y0中中取取出出低低3位位,拼拼装装后后存入存入40H中,中,(40H)=Y2Y1Y0X7X6X5X4X3 ORG 0000H MOV A,30H SWAP A ;X3X2X1X0 X7X6X5X4RL A ;X2X1X0 X7X6X5X4X3 左移了左移了5位位MOV 40H, A ;此;此时时地址地址40H中的低中的低5位已位已经实现题经实现题中要求中要求ANL 40H, #00011111B ;该该指指令令屏屏蔽蔽掉掉地地址址40H所所存存数数据据的的 高高3位,位,仅仅留低留低5位位X7X6X5X4X33.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统MOV A, 31HMOV B,#20HMUL AB ;Y2Y1Y0 Y7Y6Y5Y4Y3,左移了,左移了5位位ANL A, #11100000B ;屏屏蔽蔽A的的低低5位位,仅仅留留高高3位位Y2Y1Y0 ORL 40H, A ;通;通过过将将A和地址和地址40H的的值进值进行或运行或运算,算,实现实现了了 (40H)=Y2Y1Y0X7X6X5X4X3HERE :AJMP HERE 实实现现左左移移5位位,采采用用了了两两种种方方法法,即即移移位位和和乘乘法法。通通过过将将A与与#20H相相乘乘实实现现A的的左左移移5位位。因因为为A左左移移1位位相相当当于于将将A的的值值乘乘2,故故左左移移5位位就就要要乘乘32,对应对应的的16进进制制值值就是就是#20H。3.2.3 逻辑运算及移位类指令逻辑运算及移位类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.2.4 控制转移类指令控制转移类指令 控制转移类指令采用助记符有:控制转移类指令采用助记符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET、RETI、NOP等。控制类转移指等。控制类转移指令又分为无条件转移、条件转移、绝对转移、相令又分为无条件转移、条件转移、绝对转移、相对转移、长转移、短转移、间接转移等对转移、长转移、短转移、间接转移等第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统1无条件无条件转转移指令移指令 SJMP rel AJMP addrll LJMP addrl6 JMP ADPTR 该该指令是程序无条件地指令是程序无条件地转转移到各自指定的目移到各自指定的目标标地地址去址去执执行,不同的指令形成的目行,不同的指令形成的目标标地址不同。地址不同。 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统短短转转移指令移指令SJMP rel 其其目目标标地地址址是是由由当当前前PC(程程序序计计数数器器)值值和和指指令令的的第第二二字字节节提提供供的的8位位带带符符号号的的相相对对地地址址相相加加而而成成的的。指指令令可可转转向向指指令令前前128 B或或指指令令后后127 B。rel为为8位位带带符号数。符号数。绝对转绝对转移指令移指令AJMP addr11 设设(PC)0456H,标标号号JMPADR所所指指的的单单元元为为0123H。执行指令为执行指令为 AJMP JMPADR 机机器器码码为为00100001 00100011执行结果程序转向为(执行结果程序转向为(PC)0123H。3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统长转长转移指令移指令 LJMP addr16 该该指令提供指令提供16位地址,目位地址,目标标地址由指令第二字地址由指令第二字节节(高八位地址高八位地址)和第三字和第三字节节(低八位地址低八位地址)组组成。因此,程成。因此,程序序转转向的目向的目标标地址可以包含程序存地址可以包含程序存储储器的整个器的整个64 KB空空间间。设设(PC)0123H,标标号号ADR所指所指单单元地址元地址为为3456H。执执行指令:行指令: LJMP ADR执执行行结结果:(果:(PC)3456H即程序即程序转转向向3456H单单元元执执行。行。3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统间间接接转转移指令移指令 JMP A+DPTR设设(A)05H,(,(DPTR)4567H。执执行指令:行指令: JMP ADPTR执执行行结结果:果::(PC)(A)(DPTR)05H 4567H456CH 即程序即程序转转向向456CH单单元元执执行。行。 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统例:散例:散转转程序程序设计设计,根据,根据A中的数中的数值实现值实现程序散程序散转转MOV R1,A RL AADD A,R1 ;(A)3MOV DPTR , #TABLE ;散;散转转表首地址送表首地址送DPTRJMP A+DPTRTABLE: LJMP PM0 ;转转程序程序PM0TABLE3: LJMP PM1;转转程序程序PM1PM0: LJMP是是一一个个三三字字节节指指令令,因因此此转转移移指指令令入入口口地地址址相隔相隔3个字个字节节,A中内容需是中内容需是3的倍数。的倍数。 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统2条件条件转转移指令移指令 与无条件与无条件转转移指令不同,条件移指令不同,条件转转移指令移指令仅仅仅仅在在满满足足指令中指令中规规定的条件定的条件(如累加器内容是否如累加器内容是否为为零,二个操作零,二个操作数是否相等数是否相等)时时才才执执行无条件行无条件转转移,否移,否则则程序程序顺顺序序执执行,行,相当于相当于执执行空操作。行空操作。这类这类指令共有指令共有6条,可分条,可分为为判零判零转转移指令和比移指令和比较转较转移指令两部分。移指令两部分。 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统累加器判零累加器判零转转移指令移指令 JZ rel ;若;若(A)=0,则则(PC)=(PC+2)+rel ;若;若(A)0,则则(PC)=(PC)+2 JNZ rel ;若;若(A)0,则则(PC)= (PC+2)+rel ;若;若(A)=0,则则(PC)=(PC)+2 由上面的指令可以看出,由上面的指令可以看出,这类这类指令都是以相指令都是以相对对转转移的方式移的方式转转向目向目标标地址的。偏移量地址的。偏移量rel的的计计算方法算方法是:是: rel目目标标地址一地址一PC的当前的当前值值3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统数数值值比比较转较转移指令移指令 CJNE A,direct,rel CJNE A,data,rel CJNE Rn, data,rel CJNE Ri,data,rel3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统例例:某某温温度度控控制制系系统统,A中中存存有有温温度度采采样样值值Ta,(20H)=温温度度下下限限值值T20,(30H)=温温度度上上限限值值T30。若若TaT30,程程序序转转降降温温JW;若若TaT20,程程序序转转升温升温SW;若;若T30TaT20程序程序转转FH返回主程序。返回主程序。CJNE A,30H LOOP ;当当A中中的的值值Ta与与地地址址30H中中的的 值值T30不不相相等等时时,去,去执执行行LOOPAJMP FH ;Ta等于等于T30时时,转转FHLOOP:JNC JW;Ta大于大于T30,转转去去执执行降温程序段行降温程序段JWCNE A,20H,LOOP1 ;当当A中中的的值值Ta与与地地址址20H中中的的值值T20不不相等相等时时;转转去去执执行行LOOP1 AJMP FH ;Ta等于等于T20,转转FHLOOP1:JC SWTa小于小于T20,转转去去执执行升温程序段行升温程序段SW FH:- ;保温程序段;保温程序段JW:-SW - 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.循循环转环转移指令移指令 DJNZ Rn,rel DJNZ direct,rel 每每执执行一次循行一次循环环指令指令时时,先将指定的,先将指定的Rn或或direct的内容减的内容减1,再判断其内容是否,再判断其内容是否为为0。若不。若不为为0,转转向向目目标标地址,地址,继续执继续执行循行循环环程序;若程序;若为为0,则结则结束循束循环环程序段,程序往下程序段,程序往下执执行。行。这类这类指令在指令在计计数循数循环结环结构程构程序序编编写写时时很有用。很有用。3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统从从P1.7引脚引脚输输出出5个方波,如个方波,如图图所示。所示。 MOV R2,#10;设设定需要定需要输输出出5个方波,个方波,10个状个状态态 LOOP:CPL P1.7 ;P1.7状状态变态变反反 DJNZ R2 ,LOOP ;未到;未到设设定定输输出数出数则转则转到到LOOP执执行行3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统例例:将将2000H单单元元开开始始的的一一批批数数据据传传送送到到从从3000H开开始的始的单单元中,数据元中,数据长长度在内部度在内部RAM的的30H中。中。MOV DPTR,#2000H ;源数据区首址;源数据区首址PUSH DPL ;源数据区首址;源数据区首址压栈压栈保保护护PUSH DPHMOV DPTR,#3000H ;目的数据区首址;目的数据区首址MOV R6,DPL ;目的数据区首址存入寄存器;目的数据区首址存入寄存器MOV R7,DPHLP:POP DPH ;取源数据区地址指;取源数据区地址指针针POP DPLMOVX A,DPTR ;取源数据;取源数据INC DPTR3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统PUSH DPL PUSH DPH ;更新源数据地址,并将;更新源数据地址,并将该该新地址新地址压栈压栈保保护护MOV DPL,R6 ;取目的数据区首地址指;取目的数据区首地址指针针MOV DPH,R7MOVX DPTR,A ;将取得的源数据存入目的数据区;将取得的源数据存入目的数据区INC DPTR MOV R6,DPL MOV R7,DPH ;更更新新目目标标数数据据地地址址,并并将将该该新新地地址址存存入入到到R6和和R7中中DJNZ 30H,LP ;若若数数据据块块未未移移完完(即即地地址址30H中中的的值值不不为为0),),则继续则继续 POP DPHPOP DPLSJMP 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统4. 子程序子程序调调用指令用指令绝对调绝对调用指令用指令 ACALL addr11设设(SP)60H,(,(PC)0123H,子程序,子程序SUBRTN的首地址的首地址为为0456H。 执执行指令:行指令:ACALL SUBRTN 执执行行结结果:(果:(PC)20123H20125H(PC) 将(将(PC)=0125H压压入堆入堆栈栈: 25H压压入(入(SP)1=61H 01H压压入(入(SP)十)十l62H此此时时(SP)62H PC=0456H 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统长调长调用指令用指令 LCALL addr16设设(SP)60H,(,(PC)0123H,子程序,子程序SUBRTN的首地址的首地址为为3456H。 执执行指令:行指令:LCALL SUBRTN执执行行结结果:(果:(PC)30123H30126H(PC)。)。将(将(PC)压压入堆入堆栈栈:26H压压入(入(SP)l=6lH,0lH压压入(入(SP)l=62H中中此此时时(SP)62H, (PC)=3456H 3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统5返回指令返回指令子程序返回指令子程序返回指令RET设设(SP)62H,RAM中的中的(62H)0lH,(61H)26H。 执执行指令:行指令:RET 执执行行结结果果 (SP)60H,PC0126H。3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统中断返回指令中断返回指令RETI设设(SP)62H,中断,中断时时断点是断点是0123H,RAM中的中的(62H)0lH,(,(61H)23H。 执执行指令:行指令:RETI 执执行行结结果:(果:(SP)60H,PC0123H 程序回到断点程序回到断点0123H处继续执处继续执行。并清除了内部行。并清除了内部相相应应的中断状的中断状态态寄存器。寄存器。3.2.4 控制转移类指令控制转移类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3.2.5 位操作类指令位操作类指令 MCS-51系列系列单片机片机内内部有一部有一个个布尔(位)布尔(位)处理器,具有理器,具有较强的布尔强的布尔变量量处理能力。布尔理能力。布尔处理理器器实际上是一位的微上是一位的微处理机,理机,它它以以进位位标志志CY作作为位累加器,以位累加器,以内内部部RAM的的20H至至2FH单元及部元及部分特殊功能寄存器分特殊功能寄存器为位存位存储器,以器,以P0、P1、P2、P3为位位I/O。对位地址空位地址空间具有丰富的位操作指令,具有丰富的位操作指令,包括布尔包括布尔传送指令、布尔送指令、布尔状状态控制指令、位控制指令、位逻辑操作指令及位操作指令及位条条件件转移指令。助移指令。助记符有符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC等等11种种。第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统1布布尔尔传传送指令送指令 MOV C,bit ;(;(C)(bit) MOV bit,C ;(;(bit)(C) 该该指令的功能是将源操作数(位地址或布指令的功能是将源操作数(位地址或布尔尔累加器)累加器)送到目的操作数(布送到目的操作数(布尔尔累加器或位地址)中去。累加器或位地址)中去。设设(C)=0,执执行指令行指令为为 MOV P1.3,C,执执行行结结果果为为P1.3口口线输线输出出0。3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统2布布尔尔状状态态控制指令控制指令位清除(位清除(CLR)指令)指令 CLR C ;(;(C)0 CLR bit ;(;(bit)0该该指令的功能是将指令的功能是将C或指定位(或指定位(bit)清)清0。位置位置1(SETB)指令指令 SETB C ;(;(C)l SETB bit ;(;(bit)1该指令的功能是将该指令的功能是将C或指定位(或指定位(bit)置)置1。 位取反(位取反(CPL)指令)指令 CPL C ;(;(C)(C) CPL bit ;(;(bit)(bit)该指令的功能是将该指令的功能是将C或指定位(或指定位(bit)取反。)取反。3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统3布布尔尔(位位)逻辑逻辑操作指令操作指令位位逻辑逻辑“与与”(ANL)操作指令)操作指令 ANL C,bit ;(;(C)(C)(bit)ANL C,/bit ;(;(C)(C)(/bit) 该该指令的功能是将指定位(指令的功能是将指定位(bit)的内容或指定位内容取反)的内容或指定位内容取反后(原内容不后(原内容不变变)与与C的内容的内容进进行行逻辑逻辑与运算,与运算,结结果仍存于果仍存于C中。中。位位逻辑逻辑“或或”(ORL)操作指令)操作指令 ORL C,bit ;(;(C)C)十()十(bit) ORL C,/bit ;(;(C)(C)十()十(/bit) 该该指令的功能是将指定位(指令的功能是将指定位(bit)的内容或指定位内容取反)的内容或指定位内容取反后(原内容不后(原内容不变变)与)与C的内容的内容进进行行逻辑逻辑或运算。或运算。结结果仍存于果仍存于C中。中。3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统4布布尔尔(位)条件(位)条件转转移指令移指令布布尔尔累加器条件累加器条件转转移指令移指令JC rel JNC rel 该该指令的功能是指令的功能是对对布布尔尔累加器累加器C进进行行检测检测,对应对应于于上面的两条指令而言,当上面的两条指令而言,当C分分别为别为1或或0时时,程序,程序转转向向由当前由当前PC值值(转转移指令地址移指令地址+2)与第二字与第二字节节中中带带符号的符号的相相对对地址(地址(rel)之和得到的目)之和得到的目标标地址,否地址,否则则程序往下程序往下顺顺序序执执行。因此行。因此转转移的范移的范围围是是128+127 B。操作不。操作不影响影响标标志位。志位。3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统位测试条件转移指令位测试条件转移指令 JB bit,rel JNB bit,rel 该指令的功能是检测指定位,对应于上面的两条该指令的功能是检测指定位,对应于上面的两条指令而言,当位变量分别为指令而言,当位变量分别为1或或0时,程序转向当前时,程序转向当前PC值值(转移指令地址转移指令地址+2)与第二字节中带符号的相对地址与第二字节中带符号的相对地址(rel)之和的目标地址,否则程序往下顺序执行。因)之和的目标地址,否则程序往下顺序执行。因此转移的范围是此转移的范围是128127B。此操作不影响标志位。此操作不影响标志位。3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统位位测试测试条件条件转转移并清移并清0指令指令 JBC rel 该该指令的功能是指令的功能是检测检测指定位,当位指定位,当位变变量量为为1时时,则则将将该该位清位清0,且程序,且程序转转向当前向当前PC值值(转转移指令地址移指令地址+2)与第二字与第二字节节中中带带符号的相符号的相对对地址(地址(rel)之和的目)之和的目标标地地址,否址,否则则程序往下程序往下顺顺序序执执行。因此行。因此转转移的范移的范围围是是128127 B。操作不影响。操作不影响标标志位。志位。3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统例:例:试编试编写程序写程序实现实现下述下述逻辑逻辑表达式的功能表达式的功能 Y= X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7说说明:明:设设八位八位输输入信号入信号X0、X1、X7 从从P1口口输输入,入,Y信号从信号从P3.0输输出。出。经经化化简简得到得到Y=X0+X1X2+X1X2+X4X5X6X7 MOV A,P1 ;将;将8位位输输入信号入信号传传到到A中中JB ACC.0,MM ;当;当A的第的第0位位ACC.0为为1时时,转转去去执执行行 MM SETB C ;当;当ACC.0为为0时时,将,将C置置1 并并转转去去执执行行OUT SJMP OUT ;X0=1,转转出口出口3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统MM: MOV C,ACC.1ANL C,/ACC.2JC OUT;X1X2=1,转转出口出口 MOV C,ACC.2ANL C,/ACC.1JC OUT;X1X2=1,转转出口出口MOV C,ACC.7ANL C,/ACC.4ANL C,/ACC.5ANL C,/ACC.6;X4X5X6X7OUT:MOV P3.0,C 3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统CHK1:CJNEA,#1,CHK2 INC21H;是;是“1”,则,则“1”计数单元加计数单元加1 SJMPEND0CHK2:CJNEA,#2,CHK3 INC22H;是;是“2”,则,则“2”计数单元加计数单元加1 SJMPEND0CHK3:CJNEA,#3,CHK4 INC23H;是;是“3” ,则,则“3” 计数单元计数单元加加1 SJMPEND0CHK4:CJNEA,#4,CHK5 INC24H;是;是“4”,则,则“4”计数单元加计数单元加1 SJMPEND0CHK5:CJNEA,#5,CHK6 INC25H;是;是“5”,则,则“5”计数单元加计数单元加1 SJMPEND03.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统CHK6:CJNEA,#6,CHK7 INC26H;是;是“6”,则,则“6”计数单元加计数单元加1 SJMPEND0CHK7:CJNEA,#7,CHK8 INC27H;是;是“7”,则,则“7”计数单元加计数单元加1 SJMPEND0CHK8:CJNE A,#8,CHK9 INC28H;是;是“8”,则,则“8”计数单元加计数单元加1 SJMPEND0CHK9:CJNE A,#9,ERR INC29H;是;是“9”,则,则“9”计数单元加计数单元加1END0:DJNZR0,READ ;判是否全部统计完?;判是否全部统计完?HERE:SJMPHERE ERR: ;非;非09,出错,出错3.2.5 位操作类指令位操作类指令第3章 MCS-51MCS-51系列单片机指令系统系列单片机指令系统
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号