《单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《单片机指令系统.ppt(76页珍藏版)》请在课桌文档上搜索。
1、51单片机指 令 系 统,内容:指令的格式、分类、寻址方式以及111条指令,指令系统概述,指令的形式机器语言机器码,由 0 和 1 构成累加器加1指令:00000100(04H)汇编语言 助记符 A加BAdd B to AADD A,B高级语言,指令系统概述,指令的格式 标号:操作码 目的操作数,源操作数;注释例如:LOOP:MOV A,3AH;(A)(3AH)指令的字节数有单字节,双字节及其三字节指令,MOV A,#0AH 74H 0AHADD A,#14H 24H 14H,INC A 04H,MOV 50H,60H 85H 50H 60H,51系列单片机指令系统的分类及特点,44个操作码助
2、记符,111条指令按指令的字节数单字节指令(49条)双字节指令(46条)三字节指令(16条)按指令执行的周期单周期指令(64条)双周期指令(45条)四周期指令(2条)按指令的功能数据传送指令(29条)算术运算指令(24条)逻辑运算指令(24条)控制转移指令(17条)位操作指令(17条),寻址方式,寻址方式是指在指令代码中用以表示操作数或操作数地址的各种规定,也就是找到操作数或者操作数地址的一种方法 寄存器寻址直接寻址立即寻址寄存器间接寻址变址间接寻址相对寻址位寻址,注意:不同寻址方式所涉及的寻址空间即要找的数据在什么位置,寄存器寻址,以指令中指定寄存器的内容作为操作数工作寄存器R0R7、累加器
3、A、通用寄存器B、地址寄存器DPTR和位累加器C 特点:工作寄存器R0R7由指令码的低三位构成 A、B、DPTR、C隐含在指令码中 举例:INC R2 机器码:00001010(R2)=24H,直接寻址,在指令中直接给出操作数所在存储单元的地址 特点:指令码中含有操作数地址,机器可根据此地址找到操作数 可访问的存储器空间内部数据存储器的128个单元 特殊功能寄存器地址空间(唯一方式),既可以地址也可以寄存器名*举例:MOV A,3AH机器吗:E5 3AH,MOV A,3AH 和MOV 0E0H,3AH 功能相同,寄存器间接寻址,以指令指定的寄存器内容作为地址,由该地址所指定的单元中的内容作为操
4、作数的寻址方式。为间接寻址指示符 间接寄存器规定R0或R1为间接寻址寄存器(Ri),寻址片内128RAM,及片外RAM。采用数据指针(DPTR)作为间接寻址寄存器 堆栈指针(SP)作为间接寻址寄存器A与DPTR及PC 的组合 举例将片内RAM 65H单元的内容47H送A:MOV A,R0E6H,立即寻址,由指令直接给出操作数的寻址方式特点:指令码中含有操作数本身注意:立即数的书写方法:#34H,#0F4H,#1234H,#0FFFFH区别:MOV A,#30H;将立即数30H本身送入累加器A中,MOV A,30H 把片内RAM 30H单元的内容送入累加器A。大多数都是双字节指令,仅有指令:MO
5、V DPTR,#DATA16是三字节指令,举例:MOV DPTR,#1600H90 16 00 H,变址间接寻址,基址寄存器+变址寄存器间接寻址是将指令中指定的变址寄存器和基址寄存器的内容相加形成真正的操作数地址 累加器A变址寄存器,程序计数器PC或地址寄存器DPTR基址寄存器举例:MOVC A,A+DPTR;(A)+(DPTR)(A)93H 用来访问程序存储器中的表格(DPTR)=1060H;(A)=05H,相对寻址,是以当前的PC值加上指令中给出的相对偏移量rel而形成实际的转移目的地址 特点:操作码中含有相对地址偏移量 rel,相对偏移量rel是有符号的8位二进制数,用补码表示 目标地址
6、=PC当前值+rel PC当前值=PC源地址+转移指令字节数 举例:SJMP 30H 80 30 H,位寻址,是指对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式 位地址使用方法:直接使用位地址使用特殊功能寄存器名加位数使用位名称举例:MOV C,7AHSETB TCON.4SETB TR0,例如:MOV C,37H;(Cy)(37H),可位寻址特殊功能寄存器的位地址,寻址空间,寻址空间举例,例3-1 将D5H位的内容送入Cy,可用几种方式表达?(1)MOV C,D5H(2)MOV C,D0H.5(3)MOV C,F0(4)MOV C,PSW.5例3.2 判断下列指令
7、各操作数的寻址方式(1)MOV A,#65H 寄存器寻址 立即数寻址(2)MOV R1,65H 寄存器间接寻址 直接寻址(3)MOV 30H,R2 直接寻址 寄存器寻址(4)MOV C,20H 寄存器寻址 位寻址(5)DJNZ R2,LOOP 寄存器寻址 相对寻址(6)MOVC A,A+DPTR 寄存器寻址 变址间接寻址,指令系统,指令系统,数据传送指令(29条)内部数据传送指令(15条)16位数据传送指令(1条)数据交换指令(5条)外部数据传送指令(6条)堆栈操作指令(2条)算术运算指令(24条)加法指令(14条)减法指令(8条)乘除法指令(2条)逻辑运算指令(24条)单操作数逻辑运算指令(
8、6条)双操作数逻辑运算指令(18条)控制转移类指令(17条)无条件转移指令(4条)条件转移指令(8条)子程序调用(2条)返回指令(2条)空操作指令(1条)位操作指令(17条)位数据传送指令(2条)位逻辑运算指令(10条)位控制转移指令(5条),Rn(n=07):当前寄存器区的8个工作寄存器R0R7Ri(i=0,1):当前寄存器区可作为地址寄存器的2个工作寄存器direct:8位内部数据存储器单元的地址及特殊功能寄存器的地址#data:表示8位常数#data16:表示16位常数addr16:表示16位地址addr11:表示11位地址rel:8位带符号的地址偏移量,取值范围为-128+127bit
9、:内部RAM和特殊功能寄存器中的可直接寻址位:表示间接寻址():表示括号中单元的内容():表示间接寻址单元内容:表示数据的传送方向:表示数据交换,符号注释,数据传送指令,内部数据传送指令(15条)16位数据传送指令(1条)外部RAM读写指令(4条)外部ROM读数指令(2条)数据交换指令(5条)堆栈操作指令(2条),数据传送指令,内部数据传送指令:单片机内部的数据存储器和寄存器之间的数据传送采用的寻址方式有:直接寻址、寄存器寻址、寄存器间接寻址 根据目标地址的不同:目标地址为累加器A(4条)目标地址为寄存器 Rn(3条)目标地址为直接寻址单元 direct(5条)目标地址为间址寄存器 Rn(3条
10、),数据传送指令,例:设内部RAM中30H单元内容为50H,分析执行后 数值MOV 60H,#30HMOV R0,#60HMOV A,R0MOV R1,AMOV 40H,R1MOV 60H,30H,;立即数30H送60H单元,即(60H)=30H,;立即数60H送入R0,即(R0)=60H,;60H单元内容送入A,(A)=(R0)=(60H)=30H,;将A中的内容送入R1,即(R1)=30H,;30H内容送40H,(40H)=(R1)=(30H)=50H,;30H单元内容送入60H,即(60H)=(30H)=50H,数据传送指令,16位数据传送指令(1条)MOV DPTR,#data16 机
11、器码:90 高 低 H指令周期:2如:MOV DPTR,#1000H,数据传送指令,数据交换指令(5条)数据交换指令是在内部RAM的某一个单元和累加器A之间进行,并且累加器A总是作为目标操作数。数据交换指令分为两种:整字节交换和半字节交换。整字节交换指令(3条)XCH A,Rn;98H9FH,1机器周期XCH A,direct;C5H,direct 1机器周期XCH A,Rn;C6HC7H,1机器周期,数据传送指令,数据交换指令,例3-2:已知(30H)=88H,(40H)=11H,指出下列程序段执行的结果和功能。MOV A,30H;(A)(30H),(A)=88HXCH A,40H;(A)(
12、40H),(A)=11H,(40H)=88H,MOV 30H,A;(30H)(A),(30H)=11H,结果为(30H)=11H,(40H)=88H,而功能是将30H和40H单元内容互换。,如果采取寄存器间接寻址方式:(R0)=30H,(R1)=40H MOV A,R0;XCH A,R1;MOV R0,A,整字节交换指令举例:,数据传送指令,数据交换指令(5条)半字节交换指令(2条)XCHD A,Ri;D6HD7H,1机器周期SWAP A;C4H,1机器周期,例如,设(A)=ABH,(R0)=30H,(30H)=12H XCHD A,R0执行结果为:(A)=A2H,(30H)=1BH。,数据传
13、送指令,数据交换指令(5条),例3-3:设内部数据存储器的60H、61H单元中连续存放着4位BCD码。试编写一段程序将这4位BCD码倒序排列。,程序如下:MOV R0,#60H;(R0)=60H MOV R1,#61H;(R1)=61H MOV A,R0;(A)=(R0)=(60H)=a3a2 SWAP A;A中的内容高、低4位互换(A)=a2a3 XCH A,R1;SWAP A;(A)=a0a1 MOV R0,A;(R0)=(A),(60H)=a0a1,数据传送指令,外部RAM读写指令(4条)MOVX A,Ri;E2HE3H,2周期MOVX A,DPTR;E0H,2周期MOVX Ri,A;F
14、2HF3H,2周期MOVX DPTR,A;F0H,2周期,例3-4:将累加器A中的内容送入外部数据存储器的0060H单元。解:根据题意编程如下:MOV P2,#00;输出地址高8位输出00H MOV R0,#60H;地址送间址寄存器 MOVX R0,A;A中的内容送外部数据存储器的0060H单元 例3-5:将外部存储器的2000H单元的内容送入2100H单元解:MOV DPTR,#2000H;(DPTR)=2000H MOVX A,DPTR;(A)=(DPTR)MOV DPTR,#2100H;(DPTR)=2100H MOVX DPTR,A;(DPTR)=(A),数据传送指令,数据传送举例 1
15、、内部RAM 20H单元的内容送内部RAM 40H单元。2、外部RAM 0020H单元的内容送内部RAM 40H单元。3、内部RAM 0020H单元的内容送外部RAM 4000H单元。4、外部RAM 2000H单元的内容送外部RAM 4000H单元。,数据传送指令,对外部ROM读数指令(2条)MOVC A,A+PC;93H,2周期MOVC,A+DPTR;83H,2周期,数据传送指令,堆栈操作指令PUSHdirect;C0H,2周期POP direct;D0H,2周期,PUSH 40H;PUSH 50H;POP 40H;POP 50H;,(SP)(SP)+1=31H,(SP)(40H),(31H
16、)=88H,(SP)(SP)+1=32H,(SP)(50H),(32H)=11H,(40H)(SP),(SP)(SP)-1=31H,(40H)=11H,(50H)(SP),(SP)(SP)-1=30H,(50H)=88H,例3-7:已知(SP)=30H,(40H)=88H,(50H)=11H,指出下列程序段的执行结果和功能。,执行结果:(40H)=11H,(50H)=88H,(SP)=30H程序段功能:将40H和50H单元的内容互换。,算术运算指令,注意各指令对PSW中标志位的影响,CY、AC、OV、P加法指令不带进位加法指令(4条)ADD A,Rn;28H2FH1字节1周期ADD A,dir
17、ect;25H,direct2字节1周期ADD A,Ri;26H27H1字节1周期ADD A,#data;24H,data2字节1周期注:当结果的第3位和第7位分别向高一位进位时,将置位AC和CY,而在第6位和第7位中只有一个发生进位,而另一个不产生进位时置位OV,算术运算指令,加法指令不带进位加法指令(4条),例:设(A)=0C3H,(R0)=0AAH,执行指令ADD A,R0,(A):1100 0011+(R0):1010 1010 1 0110 1101,结果:(A)=6DH。标志位Cy=1,OV=1,Ac=0。,算术运算指令,带进位加法指令(4条)ADDC A,Rn;38H3FH 1字
18、节1周期ADDC A,direct;35H,direct 2字节1周期ADDC A,Ri;36H37H 1字节1周期ADDC A,#data;34H,data 2字节1周期,带进位加法指令主要用于多字节加法的高字节求和,以考虑低字节求和向高字节的进位。,算术运算指令,带进位加法指令(4条),例:设(A)=0C3H,(R0)=0AAH,(Cy)=1,执行指令:ADDC A,R0;,结果:(A)=6EH,且Cy=1,OV=1,Ac=0。,(A):1100 0011(R0):1010 1010+(Cy):1 和:1 0110 1110,算术运算指令,带进位加法指令(4条),解:低8位数相加,若有进位
19、保存在Cy中;高8位采用带进位加法。MOV A,#55H ADD A,#0FFH MOV 50H,A MOV A,#66H ADDC A,#11H MOV 51H,A,例:试编写计算6655H+11FFH的程序。结果放入50H、51H中,算术运算指令,二-十进制调整指令(1条)DA A;D4H 1字节1周期调整方法:若(A30)9或(AC)=1则(A30)(A30)+06H;若(A74)9或(Cy)=1则(A74)(A74)+06H,注:1 该指令适用于两个压缩型BCD码加法,不能用于减法。2 不影响标志位OV,算术运算指令,二-十进制调整指令(1条),例:设累加器A内容为压缩BCD码56(即
20、01010110B),寄存器 R3的内容为压缩BCD码67(即01100111B),Cy内容为1。执行下列的指令:ADDC A,R3 DA A过程:(A):0101 0110 BCD:56(R3):0110 0111 BCD:67+(Cy):0000 0001 BCD:01,和 1011 1110 调整 0110 0110,最终结果:1 0010 0100 BCD:124 Cy=1,算术运算指令,二十进制调整指令(1条),例:设有4个压缩BCD码,分别放在内部数据存储器50H51H单元 和60H61H单元中,试编写求出两个数的和的程序,结果存 放到40H41H单元中。,解:求两BCD码之和的程
21、序如下:MOV A,50H;(A)(50H)ADD A,60H;(A)(A)+(60H)DA A;BCD码修正 MOV 40H,A MOV A,51H ADDC A,61H DA A MOV 41H,A,算术运算指令,加1指令(5条)INC A;04H 1字节1周期INC Rn;08H0FH 1字节1周期INC direct;05H 2字节1周期INC Ri;06H07H 1字节1周期INC DPTR;A3H 1字节2周期,结果仍存放于原单元中。运算结果不影响标志位。,算术运算指令,减法指令带借位减法指令(4条)SUBB A,Rn;98H9FH 1字节1周期SUBB A,direct;95H,
22、direct 2字节1周期SUBB A,Ri;96H97H 1字节1周期SUBB A,#data;94H,data 2字节1周期注:1 第7位有借位,CY置1,第3位有借位,AC置1;若第6、7位不同时借位,OV置1。2 用于多字节数的减法。如果要进行单字节或多字节数低8 位数的减法运算,应先清除进位位Cy。,算术运算指令,减法指令带借位减法指令(4条),例:设累加器A的内容为0C9H,寄存器R2内容为54H,进位标志Cy=1,执行指令:SUBB A,R2,(A):1100 1001-(Cy):0000 0001 1100 1000-(R2):0101 0100 0111 0100,结果:(A
23、)=74H,(Cy)=0,(Ac)=0,(OV)=1,算术运算指令,减法指令带借位减法指令(4条),例:试编写计算EE33H-A0E0H的程序,结果存入50H、51H中。,解:进行低8位运算前应清进位位,低8位运算后由Cy保存借位;在进行高8位运算时,借位位也一起参与运算。程序如下:CLR C;(Cy)0 MOV A,#33H;(A)33H SUBB A,#0E0H;(A)(A)-E0H MOV 50H,A;(50H)(A)MOV A,#EEH SUBB A,#0A0H MOV 51H,A,算术运算指令,减1指令(4条)DEC A;14H 1字节1周期DEC Rn;18H1FH 1字节1周期D
24、EC direct;15H 2字节1周期DEC Ri;16H17H 1字节1周期,结果仍存放于原单元中去。运算结果不影响标志位。,算术运算指令,乘除法指令乘法指令MUL AB;A4H 1字节4周期积大于255,置位OV,CY总为0,例:设(A)=50H(80),(B)=0AH(160)执行指令:MUL AB;结果为:3200H(12800)。(A)=00H,(B)=32H,OV=1,Cy=0,算术运算指令,乘除法指令除法指令DIV AB;84H 1字节4周期商整数部分存于A中,余数部分存于B中;OV,CY总为0,除数=0时,置位OV,逻辑运算指令,单操作数逻辑运算指令累加器清零与取反指令(2条
25、)CLR A;E4H 1字节1周期CPL A;F4H 1字节1周期,逻辑运算指令,单操作数逻辑运算指令移位指令(4条)RL A;23H 1字节1周期RLC A;33H 1字节1周期RR A;03H 1字节1周期RRC A;13H 1字节1周期,例:若(A)=10111101B=BDH,Cy=0 执行:RLC A 结果:(A)=01111010B=7AH,Cy=1。A的内容扩大2倍。,逻辑运算指令,双操作数逻辑运算指令逻辑与指令(6条)ANL A,Rn;58H5FH 1字节1周期ANL A,direct;55H 2字节1周期ANL A,#data;54H 2字节1周期ANL A,Ri;56H57
26、H 1字节1周期ANL direct,A;52H 2字节1周期ANL direct,#data;53H 3字节2周期,后两条,若直接地址是I/O端口,则为“读-修改-写”操作。,逻辑运算指令,双操作数逻辑运算指令逻辑与指令(6条),解:程序为:MOV 40H,A;保存A中的内容 ANL A,#00001111B;清高4位,保留低4位 MOV 30H,A MOV A,40H;取原数据 ANL A,#11110000B;保留高4位,清低4位 SWAP A MOV 31H,A,例:将累加器A中压缩BCD码分为二个字节,形成非压缩BCD码,放入30H和31H单元中。,逻辑运算指令,逻辑或指令(6条)O
27、RL A,Rn;48H4FH 1字节1周期ORL A,direct;45H 2字节1周期ORL A,#data;44H 2字节1周期ORL A,Ri;46H47H 1字节1周期ORL direct,A;42H 2字节1周期ORL direct,#data;43H 3字节2周期,对于目标操作数为累加器A的指令,影响PSW奇偶校验位P位。,逻辑运算指令,逻辑或指令(6条),例:将累加器A中的低4位由P1口的低4位输出,P1口的高4位不变。,解:程序如下:ANL A,#00001111B MOV 30H,A;保留A中的低4位 MOV A,P1 ANL A,#11110000B;P1的高4位不变 OR
28、L A,30H MOV P1,A,逻辑运算指令,逻辑异或指令(6条)XRL A,Rn;68H6FH 1字节1周期XRL A,direct;65H 2字节1周期XRL A,#data;64H 2字节1周期XRL A,Ri;66H67H 1字节1周期XRL direct,A;62H 2字节1周期XRL direct,#data;63H 3字节2周期功能:1、与1相异或,可以使其取反;与其本身异或,结果为0,2、利用本指令可判断两个数是否相等,若相等,则结果为全“0”;否则不相等。,控制转移类指令(17条),无条件转移指令(4条)条件转移指令(8条)子程序调用(2条)返回指令(2条)空操作指令(1条
29、),控制转移类指令,无条件转移指令长转移指令LJMP addr16;3字节,2周期,指令的二、三字节提供16位目标转移地址,目标地址为64K 空间任意单元,不影响标志位。,执行内容:(PC)addr16,控制转移类指令,无条件转移指令绝对转移指令AJMP addr11;2字节,2周期,执行内容:(PC)(PC)+2,(PC100)add100,(PC1115)不变,控制转移类指令,无条件转移指令短转移指令SJMP rel;80H 2字节2周期,注:转移范围范围为-128+127,以补码形式给出 一条带有FEH偏移量的SJMP指令,将实现无限循环,这是因为FEH是-2的补码。,例:0123H单元
30、存放着指令SJMP 45H,则目标地址为0123H+2+45H=012AH。若指令为SJMP F2H,则目标地址为0123H+2-0EH=0116H,执行内容:(PC)(PC)+2,;(PC)(PC)+rel,控制转移类指令,无条件转移指令间接转移指令JMP A+DPTR;73H 1字节2周期,注:A中内容是8位无符号数。,执行内容:(PC)(A)+(DPTR),控制转移类指令,无条件转移指令间接转移指令,解:预先在ROM中建立一张起始地址为KYEG的转移表:利用间接转移指令 即可实现多路分支转移处理。程序如下:MOV A,R7 RL A;键值2倍,AJMP指令为双字节指令 MOV DPTR,
31、#KYEG;转移入口基地址送DPTR JMP A+DPTR KYEG:AJMP KYE0 AJMP KYE1 AJMP KYE15,例:某单片机应用系统有16个键,对应的键码值(00H0FH)存放在R7中,16个键处理程序的入口地址分别为KYE0,KYE1,KYE15。要求按下某键,程序即转移到该键的相应处理程序执行。,控制转移类指令条件转移指令,累加器A判零转移指令JZrel;60H 2字节2周期,当(A)0,程序顺序执行,当(A)=0,(PC)=(PC)+rel;,执行内容:(PC)(PC)+2,JNZrel;70H 2字节2周期,当(A)=0,程序顺序执行,当(A)0,(PC)=(PC)
32、+rel;,执行内容:(PC)(PC)+2,控制转移类指令条件转移指令,比较转移指令CJNE A,direct,rel;B5H 3字节 2周期,CJNE A,#data,rel;B4H 3字节 2周期CJNE Rn,#data,rel;B8HBFH 3字节 2周期CJNE Ri,#data,rel;B6HB7H3字节 2周期执行过程:(PC)+3比较判断修改PC值注意:目的操作数与源操作数比较,影响Cy,执行内容:(PC)(PC)+3,若(direct)(A),(PC)(PC)+rel且Cy0,若(direct)(A),(PC)(PC)+rel且 Cy1,若(direct)=(A),顺序执行且
33、Cy0,控制转移类指令条件转移指令,循环转移指令DJNZRn,rel;D8HDFH 2字节 2周期执行过程:(PC)+2(Rn)-1判断(Rn)=0?执行 DJNZdirect,rel;D5H 3字节 2周期执行过程:(PC)+3(direct)-1判断(direct)=0?执行,控制转移类指令,子程序调用,指令完成两项操作:把PC当前值压入堆栈;把子程序入口地址送PC。,控制转移类指令,子程序调用长调用指令LCALLaddr16;3字节 2周期机器码:0001 0010 addr158 addr70;三字节执行过程:(PC)+3PC值先低后高压栈修改PC值绝对调用指令ACALL addr11
34、;2字节 2周期机器码:a10a9a81 0001 addr70;双字节执行过程:(PC)+2PC值先低后高压栈修改PC低11位值,这两条指令和无条件转移指令类似,只是增加了断点压栈过程,不影响标志位。,控制转移类指令,返回指令子程序返回指令RET;22H 1字节 2周期执行过程:先高后低分别出栈PC值中断返回指令RETI;32H 1字节 2周期执行过程:先高后低分别出栈PC值空操作指令NOP机器码:0000 0000;1字节 1周期执行过程:(PC)+1,位操作指令,位数据传送指令(2条)位逻辑运算指令(10条)位控制转移指令(5条),MCS-51单片机中有一个功能很强、结构完全的位处理器,
35、又称布尔处理器。可位寻址RAM及并行I/O口等。布尔运算,主要涉及位累加器、可寻址位,位操作指令,位数据传送指令(2条)MOV C,bit;A2H 2字节1周期MOVbit,C;92H 2字节1周期特点:两个操作数中,必须一个是C,另一个是直接位地址,位操作指令,位数据传送指令(2条),例:试编程实现将00H位内容和7FH位内容相互交换的程序。程序:,MOV C,00H;MOV 01H,C MOV C,7FH MOV 00H,C MOV C,01H MOV 7FH,C,位操作指令,位逻辑运算指令(10条)位置1指令SETBC;D3H 1字节1周期SETBbit;D2H(教材有误)2字节1周期位
36、清0指令CLR C;C3H 1字节1周期CLRbit;C2H 2字节1周期位取反指令CPLC;B3H 1字节1周期CPLbit;B2H 2字节1周期位逻辑与指令ANLC,bit;82H 2字节2周期ANLC,/bit;B0H 2字节2周期位逻辑或指令ORLC,bit;72H 2字节2周期ORLC,/bit;A0H 2字节2周期,位操作指令,位控制转移指令以CY内容为条件的转移指令JCrel;40H 2字节2周期,若(C)=1,则(PC)(PC)+2+rel,若(C)=0,则(PC)(PC)+2,JNCrel;50H 2字节2周期,若(C)=0,则(PC)(PC)+2+rel,若(C)=1,则(
37、PC)(PC)+2,位操作指令,位控制转移指令以位地址bit内容为条件的转移指令JBbit,rel;20H 3字节2周期,若(bit)=1,则(PC)(PC)+3+rel,若(bit)=0,则(PC)(PC)+3,位操作指令,位控制转移指令以位地址bit内容为条件的转移指令JNBbit,rel;30H 3字节2周期,若(bit)=0,则(PC)(PC)+3+rel,若(bit)=1,则(PC)(PC)+3,位操作指令,位控制转移指令以位地址bit内容为条件的转移指令JBCbit,rel;10H 3字节2周期,若(bit)=0,则(PC)(PC)+3,若(bit)=1,则(PC)(PC)+3+rel,且(bit)0,此指令执行后,bit位值始终为0,举例,电路逻辑运算,举例,解:图中A、B、C、D为逻辑输入,而Z是运算结果输出量。为了使逻辑问题用单片机来处理,先选择一些端口位 作为逻辑输入变量和逻辑输出变量。定义:P1.0=A,P1.3=D,P1.1=B,P1.4=Z,P1.2=C编写程序如下:MOV C,P1.0;输入变量AANL C,P1.1 CPL CMOV 30H,C;保存中间运算结果MOV C,P1.2ANL C,P1.3ANL C,/P1.3ORL C,30HCPL CMOV P1.4,C;输出运算结果,举例,指令总结,见指令表,
链接地址:https://www.desk33.com/p-246771.html