1、单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,教学目的:,熟悉,80C51,系列单片机的寻址方式及每一种寻址方式对应的寻址空间;掌 握每一条指令功能。,教学重点:,1.80C51,系列单片机寻址方式所对应 的寻址空间;,2.80C51,系列单片机指令功能。,教学难点:,1,.,数据传送类指令中对不同的存储空 间应采用的传送指令及寻址方式。,2.,间接寻址方式,第,3,章 指令系统,3,1,指令系统简介,1.,80C51,系列,指令系统概述,指令是规定计算机进行某种操作的命令。计算机能够执行的各种指令的集合就称为指令系统。,根据代码长度,,80C51,单
2、片机的指令有单字节、双字节和三字节指令。,按照指令执行速度又可分为单周期、双周期和四周期指令。,2.,汇编语言指令格式,80C51,汇编语言指令格式如下:,操作码,操作数,1,,,操作数,2,,,操作数,3,;,注释,操作码:是由助记符表示的字符串,它规定了指令的操作功能。,操作数:如果指令中有操作数,则它是指参加操作的数据或数据的地址。,例如一条传送指令的书写格式为:,MOV A,,,45H,;(,45H,),A,它表示将,45H,存储单元的内容送到累加器,A,中。,3.2,寻址方式,指令系统的寻址方式 规定了操作数的访问方式。,80C51,指令系统有寄存器寻址、直接寻址、间接寻址、立即寻址
3、基址变址寻址和相对寻址等七种寻址方式。,3.2.,1,汇编指令中的符号约定,Rn,(,n,0,7,),-,当前选中的,8,个工作寄存器,R0,R7,,,它在片内数据存储器中的地址由,PSW,中,RSl,、,RS0,确定;,Ri,(,i,0,或,1,),-,当前选中的用于间接寻址的工作寄存器,R0,、,R1,,它在片内数据存储器中的地址由,RS0,、,RS1,确定;,direct-8,位直接地址,可以是片内,RAM,单元地址或,SFR,地址;,data8-8,位常数;,datal6-16,位常数;,addrl6,-,16,位目的地址,寻址空间,64K,字节程序存储器;,addr11,-,11,
4、位目的地址;,rel,-,补码形式的,8,位地址偏移量,用于相对转移指令中,bit,-,位地址,片内,RAM,或,SFR,的,可寻址位的位地址;,-,间接寻址寄存器的前缀;,-,位操作数的取反操作前缀。,以下符号仅出现在指令注释或功能说明中。,X,-,片内,RAM,的直接地址(包含位地址)或寄存器。,(X,),-,表示,X,中的内容。,(X),-,在间接寻址方式中,表示由间址寄存器,X,指出的地址单元中的内容。,-,指令操作流程,将箭头左边内容送入箭头右边的单元内。,1.,立即数寻址方式,立即数(指令中的常数)直接参与指令操作。立即数前必须加“,#”,标记。指令中的立即数有,8,位立即数,#d
5、ata8,和,16,位立即数,#data16,。,例,1 MOVA,#3AH,;立即数,3AH,送累加器,A,图,3-1 MOV A,,,#3AH,指令执行示意图,2,.,直接寻址方式,在这种寻址方式中,操作数项给出的是参加运算的操作数的地址。可寻址空间有特殊功能寄存器、内部数据存储器以及位地址。其中,特殊功能寄存器和位地址空间只能用直接寻址方式来访问。,例,1 MOVA,3AH,;把,A,的内容送,3AH,单元。,例,2 MOVP1,#10H,;将立即数,10H,送,P1,口。,注意:例,2,中的目的操作数,P1,是直接寻址方式,这里用符号,P1,代替了直接地址,90H,。,图,3-3 MO
6、V A,,,3AH,指令执行示意图,3.,寄存器寻址方式,寄存器寻址是对选定的工作寄存器,R0,R7,、累加器,A,、通用寄存器,B,、地址寄存器,DPTR,和进位,CY,中的数进行操作。,例,1.MOV A,,,R2,;将当前工作寄存器的内容 送累加器,A,。,(,指令代码为,1,字节,EA,注意,R2,在片内,RAM,的位置,它由,RS0,、,RS1,决定。如,PSW,中,RS1,、,RS0,的值分别为,1,、,0,,则现在的,R2,属于,第二组工作寄存器,,,那么它的地址为,12H,。现已知,12H,中存放着数值,4AH,,则执行该指令后,,4AH,就被送到,A,累加器中。,图,3-4
7、MOV A,,,R2,指令执行示意图,4.,寄存器间接寻址方式,在这种寻址方式中,操作数所指定的寄存器中存放的不是操作数本身,而是操作数的地址。这种寻址方式用于访问片内数据存储器或片外数据存储器。,间接寻址寄存器:,Ri(8,位地址指针)和,DPTR,(,16,位地址指针),间接寻址寄存器前加,表示间址操作。,例,1 MOV R0,,,#50H,MOV A,,,R0,例,2 MOV DPTR,,,#2760H,MOVX DPTR,,,A,图,3-5 MOV A,,,R0,指令执行示意图,5.,变址寻址(基址寄存器变址寄存器的间接寻址),变址寻址方式中使用,DPTR,或,PC,作基址寄存器,累加
8、器,A,作变址寄存器。,采用变址寻址的指令只有三条:,MOVCA,A+DPTR,MOVCA,A+PC,JMPA+DPTR,前两条用于程序存储器的查表操作,后一条用于程序的分支散转。,例,1,现假设,MOVC A,,,A,DPTR,指令存放在,70H,单元,,ACC,中原存放值为,E0H,,,DPTR,中值为,2000H,,则,A,DPTR,形成的地址为,20E0H,。,20E0H,单元中内容为,47H,,则执行该指令后,,ACC,中原,E0H,被,47H,代替。该指令执行过程示于图,3-7,。,图,3-7 MOVC A,,,A,DPTR,指令执行示意图,6.,相对寻址方式,相对寻址是将程序转移
9、到相对地址的转移指令。,是将程序计数器,PC,中的当前内容(转移指令的下一条指令地址)与转移指令第二字节所给出的偏移量相加,其结果作为跳转指令的转移地址。偏移量为带符号的数,其范围为,+127,128,。,程序设计中,相对地址可以用指令标号或直接地址偏移量数值,但要注意,相对转移地址的偏移量不得超过,+127,128,。,例,1 JC 03H,该指令表示若进位,C,0,,则程序顺序执行,,PC,PC+2,;若进位,C,1,,则以,PC,中的当前内容为基地址,加上偏移量,03H,后所得到的结果为该转移指令的目的地址。,图,3-8 JC 03H,指令执行示意图,7.,位寻址方式,位寻址空间:片内,
10、RAM,的位寻址区(,20H,2FH,单元的,128,位)和,SFR,中的可位寻址的位单元。,位累加器:在进行位操作时,借助于进位位,C,作为操作累加器。,位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码来区分,使用时需予以注意。,例,1 SETB 3DH,;,将片内,RAM,位地址,3DH,即,27H,单元的第,5,位置“,1”,。,例,2 ANL C,3DH,;将,3DH,的位状态与进位位,C,相与,结果保留,在,C,中。,寻址方式,寻 址 空 间,寄存器寻址,工作寄存器,R0,R7,、,A,、,B,、,CY,、,DPTR,直接寻址,片内,RAM,和特殊功能寄存器,SFR,间接寻
11、址,片内,RAM,片外,RAM,位寻址,片内,RAM,的位寻址区和,SFR,中的可位寻址的位单元,立即数寻址,程序存储器,基址变址寻址,程序存储器,(A+PC,A+DPTR),相对寻址,在程序存储器,256,字节范围内转移,操作数寻址方式与寻址空间,3,3,指令系统分类介绍,3.3.,1,数据传送类指令(共,24,条),1,内部,RAM,数据传送指令,下面分类介绍:,(,1,)累加器为目的操作数的指令,MOV A,,,Rn,;(,Rn,),A,MOV A,,,direct,;,(direct,),A,MOV A,,,Ri,;(,Ri,),A,MOV A,,,data,;,data,A,(,2,
12、以寄存器,Rn,为目的操作数的指令,MOV,Rn,,,A,;(,A,),Rn,MOV,Rn,direct,;(,direct,),Rn,MOV,Rn,,,data,;,data,Rn,(,3,)以直接地址为目的操作数的指令,MOV direct,,,A,;(,A,),(direct,),MOV direct,,,Rn,;(,Rn,),(direct,),MOV direct,,,direct,;,(direct,),(direct,),MOV direct,,,Ri,;(,Ri,),(,direct,),MOV direct,,,data,;,data,(,direct,),(,4,)以间接
13、地址为目的操作数的指令,MOV ,Ri,,,A,;(,A,),(,Ri,),MOV ,Ri,,,direct,;(,direct,),(,Ri,),MOV ,Ri,,,data,;,data,(,Ri,),(,5,),16,位数据传送指令,MOV DPTR,,,data16,;,dataH,DPH,,,datal,DPL,2,外部数据传送指令,MOVX DPTR,A,MOVX A,DPTR,MOVX ,Ri,A,MOVX A,Ri,由于在,80C51,指令系统中,没有专门对外设的输入,/,输出指令,因此,80C51,单片机只能用这四条指令与外部设备交换数据。后,2,条指令使用不方便,很少使用,
14、例,5,把程序存储器,ROM,中起始地址为,1000H,,长度为,20H,的数据块传送到以,1A00H,为起始地址的外部,RAM,中,要求使用两个,DPTR,数据指针来简化程序,注意辅助寄存器,AUXR1,的地址为,A2H,。,解:根据题意可编程序如下:,MOV DPTR,,,#1A00H,;,1A00H,作为外部,RAM,首地址,ORL A2H,#1,;选择,DPTR1,MOV DPTR,,,#1000H,;,1000H,作为程序存储器首地址,MOV R1,#20H,;数据块长度,R1,LP2:MOVC A,A+DPTR,;取程序存储器中的数据,INC DPTR,;,DPTR1,加,1,
15、ANL A2H,#0FEH,;恢复,RAM,的指针,MOVX DPTR,A,;数据送到外部,RAM,中,INC DPTR,;,DPTR0,加,1,ORL A2H,#01,;恢复,ROM,的指针,DJNZ R1,LP2,;数据没有传送完继续,3,查表指令,在,80C5l,指令系统中,有,2,条极有用的查表指令,其数据表格放在程序存储器中。,MOVC A,,,A,PC,;(,PC,),l,PC,,(,A,)(,PC,),A,MOVC A,,,A,DPTR,;,(,(,A,)(,DPTR,),A,4,堆栈操作指令,PUSH direct,;(,SP,),1,SP,,(,direct,),(,SP,)
16、POP direct,;(,SP,),(,direct,),(,SP,),-1,SP,例,6,执行如下程序,300H,:,MOV A,,,0DH,;,0DH,A,302H,:,MOVC A,,,A,PC,;(,0DH,303H,),A,303H,:,MOV R0,,,A,;(,A,),R0,数据表格:,310H,:,07H,311H,:,04H,312H,:,0AH,结果:,A,07H,,,R0,07H,,,PC,304H,例,7,执行如下程序,,104H,:,MOV A,,,12H,;,12H,A,106H,:,MOV DPTR,,,2000H,;,2000H,DPTR,109H,:,MO
17、VC A,,,A+DPTR,;(,12H+2000H,),A,数据表格:,2010H,:,22H,,,34H,,,06H,,,48H,结果:,A,06H,,,PC,100AH,例,8,已知片内,RAM 60H,单元中存放数值为,86H,,设堆栈指针为,30H,,把此数值压入堆栈,然后再弹出到,50H,单元中。,根据题意编写指令如下:,MOV SP,,,#30H,;,30H,SP,PUSH 60H,;(,SP,),+1,SP,(60H),(31H),POP 50H,;(,31H,),(,50H,),(,SP,),-1,SP,程序执行过程示于图,3-11,。,图,3-11,例,8,程序执行示意图,
18、5,交换指令,XCH A,,,Rn,;,A,Rn,XCH A,,,direct,;,A,(,direct,),XCH A,,,Ri,;,A,(,Ri,),XCHD A,,,Ri,;,A.3,A.0,(,Ri.3,Ri.0,),SWAP A,;,A.3,A.0,A.7,A.4,这组指令的前三条为全字节交换指令。后两条为半字节交换指令。,图,3-13 XCHD A,,,R0,指令执行示意图,传送指令使用注意事项:,片内存储器可以以直接寻址的方式将数据从一个单元送到另一个单元;片内存储器的任一单元可以与工作寄存器或间址寄存器指定的地址单元间相互传送数据,但是,,工作寄存器之间不能直接传送数据,也不能
19、通过间址寄存器与片内存储器传送数据,;立即数可以送到以寄存器间接寻址、直接寻址的方式的片内存储器的任一单元或工作寄存器;堆栈操作只能采用直接寻址方式。,传送类指令一般不影响标志位,只有堆栈操作可以直接修改程序状态字,PSW,。另外,传送目的操作数为,ACC,的指令将影响奇偶标志,P,。,3.3.,2,算术运算类指令,(共,23,条),算术运算类指令主要是对,8,位无符号数据进行算术操作,其中包括加(,ADD),、,带进位加(,ADDC),、,带借位减法,(SUBB),、,乘(,MUL),、,除(,DIV),、,加,1,(,INC),、,减,1(DEC),指令;借助溢出标志,可对有符号数进行补码
20、运算;借助进位标志,可进行多精度加、减运算;也可以对压缩,BCD,数进行加法运算。,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,2,带进位加法指令,ADDC A,,,Rn,;(,A,)(,Rn,),CY,A,ADDC A,,,direct,;(,A,)(,direct,),CY,A,ADDC A,,,Ri,;(,A,)(,Ri,),CY,A,ADDC A,,,data,;(,A,),data,CY,A
21、位,3,带借位减法指令,SUBB A,,,Rn,;(,A,)(,Rn,),CY,A,SUBB A,,,direct,;(,A,)(,direct,),CY,A,SUBB A,,,Ri,;(,A,)(,Ri,),CY,A,SUBB A,,,data,;(,A,),data,CY,A,4,乘法指令,MUL AB,;(,A,),(,B,),BA,,,B15,8,,,A7,0,5,除法指令,DIV AB,;(,A,),(,B,)的商,A,,余数,B,6,加一指令,INC A,;(,A,),1,A,INC,Rn,;(,Rn,),1,Rn,INC direct,;(,direct,),1,(,direc
22、t,),INC,Ri,;(,Ri,),1,(,Ri,),INC DPTR,;(,DPTR,),1,DPTR,7,减一指令,DEC A,;(,A,),1,A,DEC,Rn,;(,Rn,),1,Rn,DEC direct,;(,direct,),l,(,direct,),DEC ,Ri,;(,Ri,),1,(,Ri,),8,十进制调整指令,DA A,算术运算类指令汇总图,算术运算操作对,PSW,中标志位的影响,指令,PSW,中的标志位,C,OV,AC,ADD,ADDC,SUBB,MUL,0,DIV,0,算术运算指令应用举例,例,1,已知(,A,),DBH,,(,R4,),73H,,,CY,1,,,
23、执行指令“,SUBB A,,,R4”,则结果如下:,(,A,),67H,,,CY,0,,,OV,1,例,2,试编写计算,1234H,减,0FE7H,的程序,将和的高,8,位存入,41H,,低,8,位存入,40H,单元。,CLR C,;进位位,C,清“,0”,MOV A,#34H,;,34H,A,SUBB A,#0E7H,;(,A,),E7H,CY,A,MOV 40H,A,;(,A,),(40H),MOV A,#12H,;,12H,A,SUBB A,#0FH,;(,A,),0FH,CY,A,MOV 41H,A,;(,A,),(41H),3.3.,3,逻辑运算类指令,(共,25,条),逻辑运算类指
24、令主要用于对两个操作数按位进行逻辑操作,操作结果送到,A,累加器或直接寻址单元,若直接地址为,I/O,端口,则为“读,-,改,-,写”操作。这类指令执行的操作主要有“与”,(ANL),、“,或”,(ORL),、“,异或”,(XRL),以及累加器自身的循环移位、取反(,CPL),、,清除,(CLR),等。,这些指令执行时一般不影响程序状态字寄存器,PSW,,,仅当目的操作数为,ACC,时对奇偶标志位有影响。,1.,逻辑“与”指令,ANL,A,Rn,;(,A,),(,Rn,),A,ANL,A,direct,;(,A,),(direct),A,ANL,A,Ri,;(,A,),(,Ri,),A,ANL
25、A,#data,;(,A,),data,A,ANL,direct,A,;,(direct),(,A,),(direct),ANL,direct,#data,;,(direct)data,(direct),2,逻辑或指令,ORL A,,,Rn,;(,A,),+,(,Rn,),A,ORL A,,,direct,;(,A,),+(direct,),A,ORL A,,,Ri,;(,A,),+,(,(,Ri,),A,ORL A,,,data,;(,A,),+data,A,ORL direct,,,A,;,(direct,),+,(,A,),(,direct,),ORL direct,,,data,;(
26、direct,),+data,(,direct,),3,逻辑异或指令,XRL A,,,Rn,;(,A,),(,Rn,),A,XRL A,,,direct,;(,A,),(,direct,),A,XRL A,,,Ri,;(,A,),(,Ri,),A XRL A,,,data,;(,A,),data,A,XRL direct,,,A,;(,direct,),(,A),(,direct,),XRL direct,,,data,;,direct,),data,(direct,),4,循环移位指令,5,取反指令,CPL A,;,A,5,取反指令,CPL A,;,A,5,取反指令,CPL A,;(,/A
27、A,6,清,0,指令,CLR A,;,0,A,2.,逻辑运算指令举例,例,1,已知(,A,),1AH,,(,R0,),45H,,(,45H,),39H,,执行指令,ORL A,,,R0,,则操作如下:,0 0 0 1 1 0 1 0,(,1AH,),+,),0 0 l l 1 0 0 1,(,39H,),0 0 1 1 1 0 1 1,(,3BH,),结果,(,A,),3BH,,(,R0,),45H,,,(,45H,),39H,,,P,1,例,2,将累加器,A,中低,4,位的状态,通过,P1,口的高,4,位输出。,解:根据题意可编程如下:,ANL A,,,0FH,;屏蔽,A.7,A.4,
28、SWAP A,;高、低半字节交换,ANL P1,,,0FH,;清,P1,口高,4,位,ORL P1,A,;使,P1.7,P1.4,按,A,中初始值的,A.3,A.0,值置位,3.3.,4,转移操作类指令,(共,17,条),这类指令的功能主要是控制程序从原顺序执行地址转移到其它指令地址上。包括跳转、调用、散转、返回及空操作等操作。,1,无条件转移指令,LJMP addrl6,;,addrl6,PC,AJMP addrl1,;(,PC,),2,PC,,,addr11,PC.10,PC.0,SJMP,rel,;(,PC,),2,rel,PC,2,条件转移,JZ,rel,;,A,0,:(,PC,),2
29、rel,PC,A0,:(,PC,),2,PC,JNZ,rel,;,A0,:,(PC),2,rel,PC,A,0,:,(PC),2,PC,DJNZ,Rn,,,re1,;(,Rn,),-1,Rn,,,(,Rn,),0,:(,PC,),2,rel,PC,(,Rn,),0,:(,PC,),2,PC,DJNZ direct,,,rel,;,(direct,),1,(,direct,),,(,direct,),0,:(,PC,),3,rel,PC,(,direct,),0,:(,PC,),3,PC,CJNE A,,,direct,,,rel,;,A,(,direct,):(,PC,),3,PC,,,0,
30、C A,(,direct,):(,PC,),3,rel,PC,,,0,C,A,(,direct,):(,PC,),3,re1,PC,,,1,C,CJNE A,,,data,rel,;(,A,),data,(,PC,),3,PC,,,0,C,(,A,),data,(,PC,),3,rel,PC,,,0,C,(,A,),data:,(,PC,),3,rel,PC,,,1,C,CJNE,Rn,,,data,,,rel,;(,Rn,),data,:(,PC,),3,PC,,,0,C,(,Rn,),data,:(,PC,),3,rel,PC,,,0,C,(,Rn,),data,:(,PC,),3,rel
31、PC,,,1,C,CJNE,Ri,,,data,,,rel,;(,(,Ri,),data,:,(,PC,),3,PC,,,0,C,(,Ri,),data,:,(,PC,),3,rel,PC,,,0,C,(,Ri,),data,:,(,PC,),3,rel,PC,,,1,C,3,间接转移指令,JMP A,DPTR,;(,A,)(,DPTR,),PC,4,调用子程序及返回指令,LCALL addr16,;(,PC,),3,PC,,(,SP,),1,SP,,,(,PC.7,PC.0,),(,SP,),(,SP,),1,SP,,(,PC.15,PC.8,),(,SP,),,addr16,PC,ACA
32、LL addr11,;(,PC,),2,PC,,(,SP,),1,SP,,,(,PC.7,PC.0,),(,SP,),(,SP,),1,SP,,,(,PC.15,PC.8,),(,SP,),,addr11,PC.10,PC.0,RET,;,(SP,),PC.15,PC.8,,(,SP,),-1,SP,,,(,SP,),PC.7,PC.0,,(,SP,),-1,SP RETI,;除具有,RET,指令的功能外,还将清除优先级状态触发器,详见第,6,章,5,空操作指令,NOP,转移指令应用举例,例,1,根据,R7,的内容,转向各个操作程序。,R7,0,,,转入,OPR0,R7,1,,,转入,OPR1
33、R7,n,,,转入,OPRn,解:,MOV DPTR,,,JPTAB1,;跳转表首地址送数据指针,MOV A,,,R7,;,R7,2,A,(修正变址值),ADD A,,,R7,JNC NOAD,;判有否进位,INC DPH,;有进位则加到高字节地址,NOAD,:,JMP,A,DPTR,;转向形成的散转地址入口,JPTAB1,:,AJMP OPR0,;直接转移地址表,AJMP OPR1,AJMP,OPRn,例,2,某子程序,SUB1,入口地址是,340BH,,调用指令,LCALL SUB1,地址为,2042H,,该段程序调用过程中,PC,及,SP,的变化如下:,地址 指令 注释,2040H M
34、OV SP,,,#20H,;设置堆栈指针,,20H,SP,2042H LCALL SUB1,;调用子程序,,2045H,PC,,,21H,SP,,,45H,(,21H,),,22H,SP,,,20H,(,22H,),,340BH,PC,340BH SUB1,:,MOV A,,,R0,3412H RET,;(,22H,),PCH,,(,21H,),PCL,,,此时,PC,2045H,,,SP,20H,例,3,、根据,A,中数值,置相应的标志位。当,#,dataL,A#dataH,,标志位,F0,清零;否则,F0,置,1,。,解:,ORG2000H,ST,:,CLRF0,CJNEA,#,dataH
35、HCNT,RET,HCNT,:,JCLC,SF0,:,SETBF0,RET,LC,:,CJNEA,#,dataL,LCNT,RET,LCNT,:,JCSF0,RET,3.3.,5,位操作类指令,(共,17,条),包括位变量传送、逻辑运算、控制程序转移等指令。在进行位操作时,位累加器,C,为进位标志,CY,。,在汇编语言中位地址的表达方式有如下几种:,(,l,),直接(位)地址方式:如,D4H,;,(,2,),点操作符号方式:,如,PSW,.,4,,(,D0H,),.,4,;,(,3,),位名称方式:如,RS1,;,(,4,),用户定义名方式:如用伪指令,BIT,定义下式:,SUB,.,REG
36、 bit RS1,经定义后,指令中可以用,SUB,.,REG,代替,RS1,。,上面,4,种方式都可表达,PSW,(,D0H,),中第,4,位,它的位地址是,D4H,,,名称为,RS1,,,用户定义为,SUB.REG,。,1.,位操作指令分类,位数据传送指令,:,MOV C,,,bit,;,bit,C,MOV bit,,,C,;,C,bit,,,对端口操作时,是“读改写”指令。,位逻辑运算指令,ANL C,,,bit,;,C,bit,C,ANL C,,,/bit,;,C,/bit,C,ORL C,,,bit,;,C,bit,C,ORL C,,,/bit,;,C,/bit,C,位修正指令,CLR
37、 C,;,0,C,CLR bit,;,0,bit,CPL C,;,/C,C,CPL bit,;,/bit,bit,SETB C,;,1,C,SETB bit,;,1,bit,当直接位地址为端口中某一位时,具有“读改写”功能,。,判位转移指令,JC,rel,;,C,1,:,(PC),2,rel,PC,C,0,:,(PC),2,PC,JNC,rel,;,C,0,:,(PC),2,re1,PC,C,1,:,(PC),2,PC,JB,bit,rel,;,bit,1,:,(PC),3,rel,PC,bit,0,:,(PC),3,PC,JNB bit,rel,;,bit,0,:,(PC),3,rel,PC
38、bit,1,:,(PC),3,PC,JBC bit,,,rel,;,bit,1,:,(PC),3,rel,PC,,,0,bit,bit,0,:,(PC),3,PC,例,1,把,Pl.3,状态传送到,Pl.7,。按题意编写指令如下:,MOV C,,,P1.3,;,P1.3,C,MOV P1.7,,,C,;,C,P1.7,例,2,已知位,0AH,1,CY,1,。,执行指令,ANL C,,,0AH,;,C 0AH,C,,,C,为,1,执行指令,ORL C,,,/0AH,;,C+/0AH,C,C,为,1,2.,位操作指令举例,例,3,比较片内,RAM 40H,、,50H,中的两个无符号数大小,若,4
39、0H,中的数小则把片内,RAM,中的,40H,位置,1,,若,50H,中的数小则把,50H,位置,1,;若相等则把,20H,位置,1,,然后返回。,解:设程序起始地址为,50H,,根据题意可编程如下:,地址 机器码 源程序,50 E5 40 MOV A,,,40H,52 B5 50 03 CJNE A,,,50H,,,L1,;两数不等,则转,Ll,55 D2 20 SETB 20H,;两数相等,置,20H,57 22 RET,58 40 03 L1:JC L2,;若,C,为“,1”,,则,(40H,)中数小,转,L2,5A D2 50 SETB 50H,;,(50H,)数小 则,50H,位置,1,5C 22 RET,5D D2 40 L2:SETB 40H,;(,40H,)数小,则,40H,位置,1,5F 22 RET,






