《单片机第四章(指).ppt》由会员分享,可在线阅读,更多相关《单片机第四章(指).ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机应用技术讲义(第三版)单片机应用技术讲义(第三版)北京工业大学电控学院北京工业大学电控学院 张印春张印春2005.10第四章第四章 MCS-51指令系统指令系统第四章第四章 MCS-51指令系统指令系统4.1 概述概述4.1.1 基本概念基本概念指令:指令:控制计算机运行的代码,以二进制数字控制计算机运行的代码,以二进制数字 或助记符表示或助记符表示指令系统:指令系统:全部指令的集合全部指令的集合指令周期:指令周期:指令运行的时间,大于等于指令运行的时间,大于等于1个机器个机器 周期。周期。指令运行过程:指令运行过程:指令指令存储器存储器(程序)(程序)取指令取指令指指令令寄寄存存器器指
2、指令令译译码码器器单片机运行单片机运行控制信号控制信号指令分类:指令分类:存储长度存储长度-字节,字节,13(参见(参见 P269 附录附录C)执行时间执行时间-机器周期,机器周期,14(参见(参见 P269附录附录C)功能功能-5大大类类指令专用符号:指令专用符号:符符 号号说说 明明备备 注注Rn通用寄存器通用寄存器n=07Ri用于间接寻址的寄存器用于间接寻址的寄存器i=0,1direct立即立即8位地址位地址访问内访问内RAM,SFR#data立即数立即数8位位#data16立即数立即数16位位Addr112KB空间地址空间地址Addr1664KB空间地址空间地址符符 号号说说 明明备备
3、 注注rel相对转移指令的偏移量相对转移指令的偏移量-128 +127DPTR数据指针数据指针Bit可寻址位地址可寻址位地址A累加器累加器BB寄存器寄存器C进位位进位位CY或位累加器或位累加器间接寻址前缀标志间接寻址前缀标志箭头右边内容替代左边内容箭头右边内容替代左边内容()内容包含内容包含()间接寻址内容间接寻址内容上表续:上表续:4.1.2 指令格式指令格式指令分为:指令分为:操作码操作码-定义操作内容定义操作内容操作数操作数-指示操作对象(数据或地址)指示操作对象(数据或地址)单字节指令单字节指令双字节指令双字节指令三字节指令三字节指令操作码操作码操作数操作数同在一字节同在一字节操作码操
4、作码操作数操作数操作码操作码 操作数操作数1操作数操作数2操作码操作码操作数操作数1操作数操作数2单操作数指令单操作数指令双操作数指令双操作数指令操作码操作码操作数操作数2操作数操作数3操作数操作数13操作数指令操作数指令4.1.3 寻址方式寻址方式寻址方式寻址方式:指令中表明数据所在位置的方式:指令中表明数据所在位置的方式直接寻址直接寻址:直接确定数据所在位置:直接确定数据所在位置间接寻址间接寻址:通过中间环节确定数据所在位置:通过中间环节确定数据所在位置1.直接寻址方式直接寻址方式 立即寻址立即寻址(限(限 ROM 操作)操作)指令操作数为立即数指令操作数为立即数#data 或或#data
5、16的直接的直接寻址操作。寻址操作。例如:例如:MOV A,#0DBH 直接将数据直接将数据 11011011 送入累加器送入累加器 A,#data 来来自程序存储器自程序存储器 ROM。累加器累加器 A11011011(#data)直接寻址直接寻址(限内部(限内部 RAM 和和 SFR 操作)操作)指令操作数为数据存放地址指令操作数为数据存放地址 direct的直接寻址操作。的直接寻址操作。将内部将内部 RAM 地址为地址为 40H 单元中数据单元中数据 11011011 送入累加器送入累加器A。累加器累加器 A11011011内部内部RAM40H(direct)例如:例如:MOV A,40
6、H 寄存器寻址寄存器寻址(限(限寄存器名寄存器名的操作)的操作)指令操作数为指令操作数为 Rn,A,B,DPTR 等寄存器名的直等寄存器名的直接寻址操作。接寻址操作。将内部将内部 RAM 中工作寄存器中工作寄存器 R0(00H)单元单元中数据中数据 11011011 送入累加器送入累加器A。累加器累加器 A11011011内部内部RAM00H(R0)例如:例如:MOV R0,#11011011BMOV A,R0 位寻址位寻址(操作数为可寻址位)(操作数为可寻址位)指令操作数为位数据存放指令操作数为位数据存放地址的直接寻址操作。地址的直接寻址操作。CYPSW07 06 05 04 03 02 0
7、10020H内部内部RAM(Bit)1 1 0 1 1 0 1 107H 将位可寻址区将位可寻址区 07H 中的中的位数据位数据 1 送进位位送进位位 CY例如:例如:MOV C,07H累加器累加器 A2.间接寻址方式间接寻址方式 寄存器寄存器 Ri 间接寻址间接寻址(限内部限内部 RAM 和外部和外部 RAM前前 256 字节的操作字节的操作,不能用于不能用于SFR)指令操作数为通用寄存器名指令操作数为通用寄存器名 Ri,Ri 中存有数中存有数据存放的据存放的8位地址。位地址。内部内部RAM110110110100000040H 自自 R0 获得数据存放地获得数据存放地址址40H,然后将然后
8、将 40H 单元中单元中的数据送累加器的数据送累加器 A。(R0)例如:例如:MOV R0,#40HMOV A,R0 寄存器寄存器 DPTR 间接寻址间接寻址(限外部限外部 RAM 操作)操作)指令操作数为数据指针指令操作数为数据指针 DPTR,DPTR 中存有数中存有数据存放的据存放的 16 位地址。位地址。外部外部RAM累加器累加器 A8080H11011011DPTR8080H 自自 DPTR 获得数获得数据存放地址据存放地址8080H,然然后将后将 8080H 单元中的单元中的数据送累加器数据送累加器 A。例如:例如:MOV DPTR,#8080HMOVX A,DPTR 堆栈指针堆栈指
9、针 SP 间接寻址间接寻址(限内部限内部 RAM)指令操作数为堆栈指针指令操作数为堆栈指针 SP,SP 中存有数据存放中存有数据存放的的 8 位地址。实际操作指令中位地址。实际操作指令中SP为隐含操作数。为隐含操作数。内部内部RAM累加器累加器 A60H11011011SP60H 自自 SP 获得数据获得数据存放地址存放地址60H,然后将然后将 60H 单元中的数据送单元中的数据送累加器累加器 A。SFR(81H)例如:例如:MOV SP,#60HPOP A 基址基址+变址寄存器寻址变址寄存器寻址(限程序存储器(限程序存储器 ROM 操作)操作)指令操作数为指令操作数为 PC 或或 DPTR
10、与累加器与累加器 A,PC 或或DPTR 中存放中存放16位基地址,累加器位基地址,累加器A存放存放8位偏移量。位偏移量。ROM累加器累加器 A8080H11011011A80H 自自 DPTR+A 获得获得数据存放地址数据存放地址8080H,然后将然后将 8080H 单元中单元中的数据送累加器的数据送累加器 A。DPTR8000H+例如:例如:MOV DPTR,#8000HMOV A,#80H MOVC A,A+DPTR 相对寻址相对寻址(限程序存储器(限程序存储器 ROM 操作)操作)指令操作数为指令操作数为 PC(程序计数器)程序计数器)+rel(偏移量)偏移量),用于程序运行中的相对转
11、移操作。用于程序运行中的相对转移操作。例如例如:JP1:MOV A,#100 ;2字节字节SJMP JP1 ;2字节字节8000H 8001H 8002H 8003H 8004H MOV A,#100 SJMP JP1+8004H-48000H PCPCrel 在执行相对跳转的指令在执行相对跳转的指令时,将当前时,将当前 PC 值与跳转距值与跳转距离离(rel)相加相加,产生新的产生新的 PC 值继续运行程序。值继续运行程序。4.2 指令分析指令分析MCS-51单片机指令按功能分为单片机指令按功能分为五大类五大类数据传送指令(数据传送指令(28)算数操作指令(算数操作指令(24)逻辑操作指令(
12、逻辑操作指令(25)控制转移指令(控制转移指令(17)布尔变量操作指令(布尔变量操作指令(17)4.2.1 数据传送指令分析数据传送指令分析1.数据传送的对象及操作指令助记符数据传送的对象及操作指令助记符MOV -内部内部 RAM 数据传送指令助记符数据传送指令助记符MOVX -外部外部 RAM 数据传送指令助记符数据传送指令助记符MOVC -ROM 数据传送指令助记符数据传送指令助记符内部内部外部外部外部外部内部内部ROMROMRAMRAMSFRI/O扩展扩展MOVMOVCMOVX 不同区域之间的数据传送必须经过累加器不同区域之间的数据传送必须经过累加器 A 周周转,不能直接进行。转,不能直
13、接进行。外部外部 RAM 之间、扩展之间、扩展 I/O 之之间的数据传送,也必须经过累加器间的数据传送,也必须经过累加器A周转。周转。ROM外部外部RAM内部内部RAMA内部内部RAM内部内部RAMSFR外部外部RAM外部外部RAMAI/OI/OPUSH -压栈指令助记符压栈指令助记符POP -退栈指令助记符退栈指令助记符XCH -字节数据交换指令助记符字节数据交换指令助记符XCHD-低半字节数据交换指令助记符低半字节数据交换指令助记符SWAP-累加器内半字节数据交换指令助记符累加器内半字节数据交换指令助记符 下面五种操作为特殊的数据传送操作,并且局下面五种操作为特殊的数据传送操作,并且局限于
14、内部限于内部 RAM 和和 SFR 之中。之中。2.内部内部 RAM 和和SFR数据传送指令(数据传送指令(MOV)分析分析数据传送指令通常包括数据传送指令通常包括2个操作数个操作数源操作数源操作数(后)(后)-被传送数据的存放地址或数据被传送数据的存放地址或数据目的操作数(前)目的操作数(前)-数据传送的目的地址数据传送的目的地址 操作数种类操作数种类DPTR、Rn、A、SP-寄存器直接寻址寄存器直接寻址direct-直接寻址直接寻址Ri-寄存器间接寻址寄存器间接寻址#data、#data16-立即寻址立即寻址 操作数组合方式操作数组合方式源、目的不为相同操作数(源、目的不为相同操作数(di
15、rect 除外)除外)Rn、Ri 不互为操作数不互为操作数DPTR 只为目的操作数,源操作数为只为目的操作数,源操作数为#data16#data、#data16 不为目的操作数不为目的操作数 内内RAM 80HFFH只使用只使用Ri 作为源和目的操作为源和目的操作数,作数,SFR只使用只使用direct作为源和目的操作数。作为源和目的操作数。directRi、directRi内内RAM80HFFH内内RAM00H7FHSFR80HFFH 用寻址方式区用寻址方式区分地址范围同为分地址范围同为80H FFH 的内的内RAM和和FSR操作操作例如:例如:MOV A,R0MOV R0,#80HMOV
16、40H,AMOV 40H,80HMOV R0,R1MOV DPTR,#80HMOV R0,R0MOV#40H,80H错错MOV 0FFH,80H3.外部外部 RAM 数据传送指令(数据传送指令(MOVX)分析分析 操作数种类操作数种类A-寄存器直接寻址寄存器直接寻址DPTR-寄存器间接寻址(寄存器间接寻址(0FFFF范围)范围)操作数组合方式操作数组合方式源、目的不为相同操作数源、目的不为相同操作数MOVX A,DPTR MOVX DPTR,A(A)(DPTR)(DPTR)(A)例如:例如:Ri-寄存器间接寻址(寄存器间接寻址(0FFH范围)范围)MOVX A,Ri(A)()(Ri)MOVX
17、Ri,A(Ri)(A)4.程序存储器程序存储器 ROM 数据传送指令(数据传送指令(MOVC)分析分析 操作数种类操作数种类A-寄存器直接寻址寄存器直接寻址A+DPTR、A+PC-基址基址+变址寄存器变址寄存器 间接寻址间接寻址 操作数组合方式操作数组合方式程序存储器程序存储器 ROM地址地址不为目的操作数不为目的操作数MOVC A,A+DPTRMOVC A,A+PC(A)(A+DPTR)(A)()(A+PC)例如:例如:5.其它数据传送指令(内部其它数据传送指令(内部RAM和和SFR操作)分析操作)分析 堆栈堆栈操作操作源操作数:源操作数:direct-直接寻址直接寻址目的操作数目的操作数:
18、(SP)-SP间接寻址(内间接寻址(内RAM 前前128字节)字节)PUSH(压栈)操作过程压栈)操作过程:(SP)(SP)+1(SP)(direct)8051 单片机的堆栈为先进后出结构,由压栈操单片机的堆栈为先进后出结构,由压栈操作指令作指令 PUSH 和退栈操作指令和退栈操作指令 POP 实现堆栈操作。实现堆栈操作。SFRSP10H55HR055H11H(SP)内部内部RAM例如:例如:MOV SP,#10HMOV R0,#55HPUSH 0(SP)+111HSFRPUSHPOP(退栈)操作过程退栈)操作过程:(SP)(SP)-1(direct)(SP)目的操作数:目的操作数:direc
19、t-直接寻址直接寻址源操作数源操作数:(SP)-SP间接寻址(内间接寻址(内RAM 前前128字节)字节)例如:例如:POP 0 堆栈操作在子程序或中断服务程序中,堆栈操作在子程序或中断服务程序中,主要用主要用于现场保护。所以压栈、退栈操作指令必须成对使于现场保护。所以压栈、退栈操作指令必须成对使用,否则会使程序运行产生难以预料的结果。用,否则会使程序运行产生难以预料的结果。SFRSP11H55HR055H11H(SP)内部内部RAM(SP)-110HSFRPOP 数据互换操作数据互换操作 XCH源操作数:源操作数:Rn、Ri、direct目的操作数目的操作数:A例如:例如:MOV A,#0A
20、AHMOV R0,#55HXCH A,R0R0内部内部RAMA55HAAHR0内部内部RAMA55HAAHXCH 低半字节数据互换操作低半字节数据互换操作 XCHD源操作数:源操作数:Ri目的操作数目的操作数:A例如:例如:MOV A,#5AH MOV R0,#01HXCHD A,R0AA5H5AHXCHD内部内部RAM01HAAAH55H内部内部RAM01HMOV R1,#0A5H累加器内半字节数据互换操作累加器内半字节数据互换操作 SWAP源操作数:源操作数:A目的操作数目的操作数:A例如:例如:MOV A,#5AH SWAP AA5AHSWAPAA5H4.2.2 算数运算指令分析算数运算
21、指令分析操作类型操作类型助记符助记符操作内容操作内容加加 ADD 一字节加一字节加 ADDC 带进位一字节加带进位一字节加 INC 增增1减减 SUBB 带借位一字节减带借位一字节减 DEC 减减1乘乘 MUL 一字节乘一字节乘除除 DIV 一字节除一字节除1.指令助记符指令助记符 大部分算数运算指令会影响标志位,作为运大部分算数运算指令会影响标志位,作为运算结果的辅助说明。算结果的辅助说明。2.加运算加运算结果结果被加数被加数 加数加数加数寻址方式加数寻址方式AARn寄存器直接寻址寄存器直接寻址AAdirect直接寻址直接寻址AARi寄存器间接寻址寄存器间接寻址AA#data立即寻址立即寻址
22、例如:例如:MOV R0,#39H MOV A,#73HADD A,R0A39H73H内部内部RAM0HAACH+一字节加一字节加 ADD 十进制调整指令十进制调整指令DA例如:一字节例如:一字节BCD加法运算加法运算MOV R0,#39H MOV A,#73HADD A,R0A39H73H内部内部RAM0HAACH+DA AA12H1C十进制调整十进制调整A.3 A.2 A.1 A.0A.7 A.6 A.5 A.4AC=1 or A3-0 9,(A)(A)+06 C=1 or A7-4 9,(A)(A)+06 十进制调整操作过程十进制调整操作过程结果结果被加数被加数 进位位进位位+加数加数
23、加数寻址方式加数寻址方式AACY+Rn寄存器直接寻址寄存器直接寻址AACY+direct直接寻址直接寻址AACY+Ri寄存器间接寻址寄存器间接寻址AACY+#data立即寻址立即寻址 带进位一字节加带进位一字节加 ADDC例如:例如:MOV 10H,#0A0H MOV 11H,#0A0HMOV R0,#11HMOV A,10HAA0HA0H内部内部RAM10HA40H+1CY40H10H内部内部RAMMOV 20H,#40H MOV 21H,#40HMOV R0,AMOV A,20HADDC A,21HMOV 11H,AA40H40H内部内部RAM21HA81H+1CY81H11H40H10H
24、内部内部RAM内部内部RAM可以借助可以借助CY做多字节加法运算。做多字节加法运算。ADD A,R0MOV R0,#10H结果结果被加数被加数加数加数 被加数寻址方式被加数寻址方式AA1寄存器直接寻址寄存器直接寻址RnRn1寄存器直接寻址寄存器直接寻址directdirect1直接寻址直接寻址RiRi1寄存器间接寻址寄存器间接寻址DPTRDPTR1寄存器直接寻址寄存器直接寻址 增增 1 操作操作 INC例如:例如:MOV 10H,#200 INC 10HMOV R0,#10HINC R0201200内部内部RAM10H+110H内部内部RAM202201内部内部RAM10H+110H内部内部R
25、AM3.减运算减运算 带借位一字节减带借位一字节减 SUBB结果结果被减数被减数 减数减数+进位位进位位 减数寻址方式减数寻址方式AARn+CY寄存器直接寻址寄存器直接寻址AAdirect+CY直接寻址直接寻址AARi+CY寄存器间接寻址寄存器间接寻址AA#data+CY立即寻址立即寻址例如:例如:CLR C MOV 10H,#02HMOV A,#01HSUBB A,10H21内部内部RAM10HA255-1CY0CYA可以借助可以借助CY判断判断2数的大小,或做多字节减法运算。数的大小,或做多字节减法运算。结果结果被减数被减数减数减数 被减数寻址方式被减数寻址方式AA1寄存器直接寻址寄存器直
26、接寻址RnRn1寄存器直接寻址寄存器直接寻址directdirect1直接寻址直接寻址RiRi1寄存器间接寻址寄存器间接寻址DPTRDPTR1寄存器直接寻址寄存器直接寻址减减 1 操作操作 DEC例如:例如:MOV 10H,#200 DEC 10HMOV R0,#10HDEC R0199200内部内部RAM10H-110H内部内部RAM188199内部内部RAM10H-110H内部内部RAM4.一字节无符号乘法运算一字节无符号乘法运算 MUL结果结果被乘数被乘数乘数乘数寻址方式寻址方式高字节高字节 地字节地字节BAAB寄存器直接寻址寄存器直接寻址例如:例如:MOV A,#80HMOV B,#8
27、0HMUL AB80H80HAB00H40HAB5.一字节无符号除法运算一字节无符号除法运算 DIV结果结果被除数被除数除数除数寻址方式寻址方式商商余数余数ABAB寄存器直接寻址寄存器直接寻址例如:例如:MOV A,#0FFHMOV B,#07HMUL AB07HFFHAB03H24HB A商商余数余数4.2.3 逻辑运算指令分析逻辑运算指令分析操作类型操作类型助记符助记符操作内容操作内容双操作数双操作数 ANL 逻辑逻辑“与与”ORL 逻辑逻辑“或或”XRL 逻辑逻辑“异或异或”单操作数单操作数(累加器(累加器A)RL 累加器内容累加器内容“左移左移”RLC 累加器内容带进位累加器内容带进位
28、“左移左移”RR 累加器内容累加器内容“右移右移”RRC 累加器内容带进位累加器内容带进位“右移右移”CPL 累加器内容逻辑累加器内容逻辑“非非”CLR 累加器内容累加器内容“清清0”1.指令助记符指令助记符2.双操作数双操作数“与与”“或或”“异或异或”运算运算结果结果 第一操作数第一操作数 第二操作数第二操作数寻址方式寻址方式AARn寄存器直接寻址寄存器直接寻址AAdirect直接寻址直接寻址AARi寄存器间接寻址寄存器间接寻址AA#data立即寻址立即寻址第一类第一类 以以A寄存器为第一操作数及结果存放地寄存器为第一操作数及结果存放地结果结果第一操作数第一操作数 第二操作数第二操作数寻址
29、方式寻址方式directdirectA寄存器直接寻址寄存器直接寻址directdirect#data立即寻址立即寻址第二类第二类以以direct寄存器为第一操作数及结果存放地寄存器为第一操作数及结果存放地 操作数组合方式操作数组合方式 举例举例累加器累加器 A“与与”内内 RAM 20H 单元单元MOV A,#11110000B MOV 20H,#10101010BANL A,20HA20HA第一操作数第一操作数第二操作数第二操作数按位相与按位相与结果结果“与与”1 1 1 1 0 0 0 01 0 1 0 1 0 1 01 0 1 0 0 0 0 0累加器累加器 A“或或”(R0)所指单元所
30、指单元MOV A,#11110000B MOV R0,#20HORL A,R0A20HA第一操作数第一操作数第二操作数第二操作数按位相或按位相或结果结果“或或”1 1 1 1 0 0 0 01 0 1 0 1 0 1 01 1 1 1 1 0 1 0MOV 20H,#101010101B20H“异或异或”立即数立即数 10101010BMOV 20H,#11110000B XRL 20H,#10101010B20H#data20H第一操作数第一操作数第二操作数第二操作数按位异或按位异或结果结果“或或”1 1 1 1 0 0 0 01 0 1 0 1 0 1 00 1 0 1 1 0 1 0内部
31、内部RAM3.以累加器以累加器 A 为操作数的逻辑操作指令为操作数的逻辑操作指令 清清0 0CLR AA A0 0 0 0 0 0 0 0CLR 逻辑逻辑“非非”CPL AAA1 0 1 0 1 0 1 0CPL0 1 0 1 0 1 0 1累加器循环左移累加器循环左移一位一位RL AA 带进位移位带进位移位RLC ARR AD7 D6 D5 D4 D3 D2D1 D0 移位移位累加器循环右移累加器循环右移一位一位AD7 D6 D5 D4 D3 D2D1 D0带进位累加器循环左移带进位累加器循环左移一位一位A D7 D6 D5 D4 D3 D2D1 D0CYRRC A带进位累加器循环右移带进位
32、累加器循环右移一位一位A D7 D6 D5 D4 D3 D2D1 D0CY4.2.4 控制转移指令分析控制转移指令分析1.控制转移指令功能控制转移指令功能例例1:A/D转换控制程序流程转换控制程序流程启动启动A/D转换转换转换结束?转换结束?读读A/D转换结果转换结果循环结构循环结构包括:包括:循环体循环体循环判定条件循环判定条件程序流程结构举例程序流程结构举例循环过程控制循环过程控制NY例例2:温度控制程序流程:温度控制程序流程取当前温度值取当前温度值温度高于温度高于设定值?设定值?升温数据处理升温数据处理降温数据处理降温数据处理控温数据送控温数据送D/A分支结构分支结构包括:包括:分支判定
33、条件分支判定条件分支过程控制分支过程控制控制转移操作控制转移操作-改变程序流程改变程序流程YN2.指令助记符指令助记符操作类型操作类型助记符助记符转转移移类类无无条条件件绝对绝对长长 LJMP短短 AJMP相对相对 SJMP基址基址+变址变址 JMP有有条条件件 “0”JZ 非非“0”JNZ 不等于不等于 CJNE 减减1不为不为0 DJNZ调用类调用类 长长 LCALL 短短 ACALL返回类返回类 调用返回调用返回 RET 中断返回中断返回 RETI3.转移操作转移操作助记符助记符操作数操作数跳转范围跳转范围LJMP Addr16065535AJMP Addr1102047SJMP rel
34、-128+127 JMP A+DPTR065535无条件转移指令无条件转移指令AJMP 执行过程执行过程PC A10 A0 ,程序按新的程序按新的PC值继续运行值继续运行PCPC15PC11PC10 PC9 PC8 PC7 PC1 PC0 A10 A9 A8 A7 A1 A0不改变不改变例如:例如:PC15 PC11 为为 0 0 0 0 0 B,对应跳转范围对应跳转范围 为为 0000 07FFH。PC15 PC11:将将 64KB 程序存储空间分为程序存储空间分为32个块,个块,每块每块2KB,决定跳转的范围。决定跳转的范围。PC15 PC11 为为 0 0 0 0 1 B,对应跳转范围对
35、应跳转范围 为为 0800 0FFFH。A10 A0:决定在决定在2KB范围内具体的跳转位置。范围内具体的跳转位置。例如:例如:PC15 PC11 为为 0 0 0 0 1 B,PC 为为 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 B,对应对应跳转位置为跳转位置为 0801H。A10 A0:为为 0 0 0 0 0 0 0 0 0 0 1 BJMP 执行过程执行过程(PC)(A)+(DPTR),程序按新的程序按新的PC值继续运行值继续运行PC15 PC14 PC13 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 D7 D6 D5 D4 D3 D2 D1
36、D0PC D15 D14 D13 D7 D6 D5 D4 D3 D2 D1 D0+DPTRA助记符助记符转移条件转移条件操作数操作数1操作数操作数2跳转范围跳转范围DJNZ减减1不为不为0 Rnrel-128+127 directrel-128+127 JZ “0”Arel-128+127 JNZ 非非“0”Arel-128+127有条件双操作数有条件双操作数转移指令转移指令助记符助记符 转移条件转移条件 操作数操作数1 操作数操作数2 操作数操作数3跳转范围跳转范围CJNE不等于不等于 A#datarel-128+127 Rn#datarel-128+127 Ri#datarel-128+1
37、27 Adirectrel-128+127有条件三操作数转移指令有条件三操作数转移指令4.调用操作调用操作用于子程序调用用于子程序调用助记符助记符操作数操作数调用范围调用范围LCALLAddr16065535ACALLaddr1102047ACALL 执行过程(执行过程(2KB范围内的调用操作)范围内的调用操作)PUSH PCL ;ACALL后面一条指令存放后面一条指令存放 ;地址的低字节进栈;地址的低字节进栈 PUSH PCH ;ACALL后面一条指令存放后面一条指令存放 ;地址的高字节进栈;地址的高字节进栈首先保存下一条指令的存放地址首先保存下一条指令的存放地址5.返回操作返回操作子程序调
38、用返回子程序调用返回 RETRET 执行过程执行过程PC A10 A0 ,程序按新的程序按新的PC值继续运行值继续运行PCPC15PC11PC10 PC9 PC8 PC7 PC1 PC0 A10 A9 A8 A7 A1 A0不改变不改变 后续执行过程与后续执行过程与 AJMP 相同相同 POP PCH ;堆栈内容退回到堆栈内容退回到PCH POP PCL ;堆栈内容退回到堆栈内容退回到PCL程序按新的程序按新的PC值继续运行值继续运行恢复子程序调用前的恢复子程序调用前的PC值值中断服务程序返回中断服务程序返回 RETIRETI 执行过程执行过程 POP PCH ;堆栈内容退回到堆栈内容退回到P
39、CH POP PCL ;堆栈内容退回到堆栈内容退回到PCL程序按新的程序按新的PC值继续运行值继续运行恢复中断服务程序调用前的恢复中断服务程序调用前的PC值值4.2.5 布尔(位)处理指令分析布尔(位)处理指令分析1.MCS-51的位资源的位资源 内内RAM位可寻址区位可寻址区SFR位可位可 寻址单元寻址单元位累加器位累加器CYPSW007FH80F7H操作数操作数 Bit操作数操作数 C2.位操作指令助记符位操作指令助记符操作内容操作内容助记符助记符操作数操作数清清“0”CLRBit和和C置位置位SETBBit和和C取反取反CPLBit和和C单操作数逻辑操作单操作数逻辑操作操作内容操作内容助记符助记符操作数操作数1操作数操作数2与与 ANLCBit和和/Bit或或ORLCBit和和/Bit双操作数逻辑操作双操作数逻辑操作助记符助记符操作数操作数1操作数操作数2 MOVCBitMOVBitC位传送操作位传送操作助记符助记符转移条件转移条件操作数操作数1操作数操作数2跳转范围跳转范围JNC“0”转移转移C(隐含)隐含)rel-128+127JNBBitrel-128+127JC“1”转移转移C(隐含)隐含)rel-128+127JBBitrel-128+127JBC“1”清清0转转移移Bitrel-128+127条件转移操作条件转移操作
限制150内