《单片机基础3课件.ppt》由会员分享,可在线阅读,更多相关《单片机基础3课件.ppt(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 指令系统第第3章章MCS-51单片机指令系统单片机指令系统3.1寻址方式寻址方式3.2指令系统指令系统第3章 指令系统 一一条条汇汇编编语语言言指指令令中中最最多多包包含含4个个区区段段,如如下下所示所示:标号标号:操作码操作码操作数操作数;注释注释4个个区区段段之之间间要要用用分分隔隔符符分分开开:如如果果操操作作数数有有两两个个以以上上,则则在在操操作作数数之之间间要要用用逗逗号号“,”隔隔开开(乘乘法指令和除法指令除外法指令和除法指令除外)。标标号号代代表表该该指指令令所所存存放放的的第第一一个个字字节节存存储储单单元的地址,故标号又称为元的地址,故标号又称为“符号地址符号地址”
2、。操作码也称操作码也称“助记符助记符”。第3章 指令系统1.单字节指令单字节指令(49条)条)单字节指令格式由单字节指令格式由8位二进制编码表示位二进制编码表示,例如例如:CLRAE4H2.双字节指令双字节指令(45条)条)双双字字节节指指令令格格式式由由两两个个字字节节组组成成,操操作作码码和和操操作作数数,例例如如:MOVA,10H74H10H3.三字节指令三字节指令(17条)条)三三字字节节指指令令格格式式中中,第第一一个个字字节节为为操操作作码码,后后两两个个字字节节为为操作数操作数,例如例如:MOV40H,30H75H40H30H 从执行时间看:单周期从执行时间看:单周期64条,双周
3、期条,双周期45条,四周期条,四周期2条。条。第3章 指令系统3.1寻址方式寻址方式所所谓谓寻寻址址方方式式,就就是是寻寻找找操操作作数数地地址址的的方方式式,在在用用汇汇编编语语言言编编程程时时,数数据据的的存存放放、传传送送、运运算算都都要要通通过过指指令令来来完完成成。编编程程者者必必须须自自始始至至终终都都要要十十分分清清楚楚操操作作数数的的位位置置,以以及及如如何何将将它它们们传传送送到到适适当当的的寄寄存存器器去去参参与与运运算算。每每一一种种计计算算机机都都具具有有多多种种寻寻址址方方式式。寻寻址址方方式式的的多多少少是是反反映映指指令系统优劣的主要指标之一。令系统优劣的主要指标
4、之一。第3章 指令系统 在在MCS-51单片机指令系统中单片机指令系统中,有以下有以下7种寻址方式种寻址方式:(1)立即寻址立即寻址;(2)直接寻址直接寻址;(3)寄存器寻址寄存器寻址;(4)寄存器间接寻址寄存器间接寻址;(5)基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址;(6)相对寻址相对寻址;(7)位寻址。位寻址。第3章 指令系统1.立即寻址立即寻址立立即即寻寻址址方方式式是是指指操操作作数数包包含含在在指指令令字字节节中中。跟跟在在指指令令操操作作码码后后面面的的数数就就是是参参加加运运算算的的数数,该该操操作作数数称称为为立立即即数数。立即数有一字节和二字节两种可能立即
5、数有一字节和二字节两种可能,例如指令例如指令:MOVA,3AHMOVDPTR,0DFFFH上上述述两两条条指指令令均均为为立立即即寻寻址址方方式式,第第一一条条指指令令的的功功能能是是将将立立即即数数3AH送送累累加加器器A中中,第第二二条条指指令令的的功功能能是是将将立立即即数数0DFFFH送数据指针送数据指针DPTR中(中(0DFHDPH,0FFHDPL)。)。第3章 指令系统2.直接寻址直接寻址在在指指令令中中直直接接给给出出操操作作数数的的地地址址,这这种种寻寻址址方方式式就就属属于于直直接接寻寻址址方方式式。在在这这种种方方式式中中,指指令令的的操操作作数数部部分分直直接接是是操操作
6、作数数的地址。的地址。在在MCS-51单单片片机机指指令令系系统统中中,直直接接寻寻址址方方式式中中可可以以访访问问3种存储器空间种存储器空间:(1)内部数据存储器的低内部数据存储器的低128个字节单元(个字节单元(00H7FH)。)。(2)特特殊殊功功能能寄寄存存器器。特特殊殊功功能能寄寄存存器器只只能能用用直直接接寻寻址址方方式进行访问。式进行访问。(3)位地址空间。位地址空间。MOVA,30HMOVC,00HMOVA,SBUF第3章 指令系统 3.寄存器寻址寄存器寻址在在该该寻寻址址方方式式中中,参参加加操操作作的的数数存存放放在在寄寄存存器器里里。寄寄存存器器包包括括8个个工工作作寄寄
7、存存器器R0R7,累累加加器器A,寄寄存存器器B、数数据据指针指针DPTR和布尔处理器的位累加器和布尔处理器的位累加器Cy。例如例如:MOVA,R1MOVB,R2MOVDPTR,#8000H第3章 指令系统4.寄存器间接寻址寄存器间接寻址指指令令中中给给出出间间接接寻寻址址寄寄存存器器,其其内内容容为为操操作作数数的的地地址址。寻寻址址内内部部RAM区区的的数数据据时时,可可使使用用寄寄存存器器R0、R1作作为为地地址址指指针针;当当访访问问外外部部RAM时时,可可使使用用R0、R1及及DPTR作作为为地地址址指指针针。寄寄存存器器间间接寻址符号为接寻址符号为“”,例如例如:第3章 指令系统5
8、.基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址这这种种寻寻址址方方式式用用于于访访问问程程序序存存储储器器中中的的数数据据表表格格,它它以以基基址址寄寄存存器器DPTR或或PC的的内内容容为为基基本本地地址址,加加上上变变址址寄寄存存器器A的的内内容容作作为为操操作作数数的的地地址址,例例如如:MOVCA,ADPTRMOVCA,APCJMPADPTR;散转指令;散转指令第3章 指令系统6.相对寻址相对寻址在在MCS-51指指令令系系统统中中设设有有转转移移指指令令,分分为为直直接接转转移移和和相相对对转转移移指指令令,在在相相对对转转移移指指令令中中采采用用相相对对寻寻址址方方
9、式式。这这种种寻寻址址方方式式是是以以PC的的内内容容为为基基本本地地址址,加加上上指指令令中中给给定定的的偏偏移移量量作作为为转转移移地地址址。指指令令中中给给出出的的偏偏移移量量是是一一个个8位位带符号的常数带符号的常数,可正可负可正可负,其范围为其范围为128+127。JC06H7.位寻址位寻址该该种种寻寻址址方方式式中中,操操作作数数是是内内部部RAM单单元元中中某某一一位位的的信息。信息。MOVC,30H第3章 指令系统3.2指令系统指令系统3.2.1指令分类指令分类按指令的功能按指令的功能,MCS-51指令系统可分为下列指令系统可分为下列5类类:(1)数据传送数据传送;(2)算术运
10、算算术运算;(3)逻辑运算逻辑运算;(4)位操作位操作;(5)控制转移。控制转移。第3章 指令系统描述指令的一些符号的意义:描述指令的一些符号的意义:Rn当前选定的寄存器区中的当前选定的寄存器区中的8个工作寄存器个工作寄存器R0R7,即即n=07。Ri当前选定的寄存器区中的当前选定的寄存器区中的2个寄存器个寄存器R0、R1,i=0或或1direct8位位内内部部RAM单单元元的的地地址址,它它可可以以是是一一个个内内部部数数据据区区RAM单单元元(00H7FH)或或特特殊殊功功能能寄寄存存器器地地址址(I/O端端口口、控制寄存器、控制寄存器、状态寄存器状态寄存器80H0FFH)。data指令中
11、的指令中的8位常数。位常数。data16指令中的指令中的16位常数。位常数。addr1616位位的的目目的的地地址址,用用于于LJMP,LCALL指指令令,可可指向指向64KB程序存储器地址空间。程序存储器地址空间。第3章 指令系统 addr1111位位的的目目的的地地址址,用用于于AJMP,ACALL指指令令。目目的的地地址址必必须须与与下下一一条条指指令令的的第第一一个个字字节节在在同同一一个个2KB程程序存储器地址空间之内。序存储器地址空间之内。rel8位位带带符符号号的的偏偏移移量量字字节节,用用于于SJMP和和所所有有条条件件转转移移指指令令中中。偏偏移移量量相相对对于于下下一一条条
12、指指令令的的第第一一个个字字节节计计算算,在在128+127范围内取值。范围内取值。bit内内部部数数据据RAM或或特特殊殊功功能能寄寄存存器器中中的的可可直直接接寻寻址位。址位。DPTR数据指针数据指针,可用作可用作16位的地址寄存器。位的地址寄存器。第3章 指令系统A累加器。累加器。B寄存器寄存器,用于用于MUL和和DIV指令中。指令中。C进位标志或进位位。进位标志或进位位。间间接接寻寻址址寄寄存存器器或或基基址址寄寄存存器器的的前前缀缀,如如Ri,DPTR。/位操作数的前缀位操作数的前缀,表示对该位取反。表示对该位取反。(X)X中的内容。中的内容。(X)由由X寻址的单元中的内容。寻址的单
13、元中的内容。箭头左边的内容被箭头右边的内容所代替。箭头左边的内容被箭头右边的内容所代替。第3章 指令系统3.2.2数据传送类指令数据传送类指令图图31MCS-51传送指令示意图传送指令示意图 第3章 指令系统1.数据传送到累加器数据传送到累加器A的指令的指令MOVA,RnMOVA,directMOVA,RiMOVA,data这这组组指指令令的的功功能能是是:把把源源操操作作数数的的内内容容送送入入累累加加器器A。例例如如:MOVA,10H,该该指指令令执执行行时时将将立立即即数数10H送送入入累累加器加器A中。中。第3章 指令系统2.数据传送到工作寄存器数据传送到工作寄存器Rn的指令的指令 M
14、OVRn,AMOVRn,directMOVRn,data这这组组指指令令的的功功能能是是:把把源源操操作作数数的的内内容容送送入入当当前前工工作作寄寄存存器器区区的的R0R7中中的的某某一一个个寄寄存存器器。指指令令中中Rn在在内内部部数数据据存存储储器器中中的的地地址址由由当当前前的的工工作作寄寄存存器器区区选选择择位位RS1、RS0确确定定,可可以以是是 00H07H、08H0FH、10H17H、18H1FH。例例如如:MOVR0,A,若若当当前前RS1、RS0设设置置为为00(即即工工作作寄寄存存器器0区区),执执行行该该指指令令时时,将将累累加加器器A中中的的数数据据传传送送至工作寄存
15、器至工作寄存器R0(内部内部RAM00H)单元中。单元中。第3章 指令系统3.数据传送到内部数据传送到内部RAM单元或特殊功能寄存器单元或特殊功能寄存器SFR的指令的指令 MOVdirect,AMOVdirect,RnMOVdirect1,direct2MOVdirect,RiMOVdirect,dataMOVRi,AMOVRi,directMOVRi,dataMOVDPTR,data16第3章 指令系统 这这组组指指令令的的功功能能是是:把把源源操操作作数数的的内内容容送送入入内内部部RAM单单元元或或特特殊殊功功能能寄寄存存器器。其其中中第第三三条条指指令令和和最最后后一一条条指指令令都都
16、是是三三字字节节指指令令。第第三三条条指指令令的的功功能能很很强强,能能实实现现内内部部RAM之之间间、特特殊殊功功能能寄寄存存器器之之间间或或特特殊殊功功能能寄寄存存器器与与内内部部RAM之之间间的的直直接接数数据据传传送送。最最后后一一条条指指令令是是将将16位位的的立立即即数送入数据指针寄存器数送入数据指针寄存器DPTR。第3章 指令系统4.累加器累加器A与外部数据存储器之间的传送指令与外部数据存储器之间的传送指令 MOVXA,DPTRMOVXA,RiMOVXDPTR,AMOVXRi,A第3章 指令系统 这这组组指指令令是是:在在累累加加器器A与与外外部部数数据据存存储储器器RAM单单元
17、元或或I/O口口之之间间进进行行数数据据传传送送,前前两两条条指指令令执执行行时时,P3.7引引脚脚上上输输出出RD有有效效信信号号,用用作作外外部部数数据据存存储储器器的的读读选选通通信信号号;后后两两条条指指令令执执行行时时,P3.6引引脚脚上上输输出出WR有有效效信信号号,用用作作外外部部数数据据存存储储器器的的写写选选通通信信号号。DPTR所所包包含含的的16位位地地址址信信息息由由P0(低低8位位)和和P2(高高8位位)输输出出,而而数数据据信信息息由由P0口口传传送送,P0口口作作分分时时复复用用的的总总线线。由由Ri作作为为间间接接寻寻址址寄寄存存器器时时,P0口口上上分分时时输
18、输出出Ri指定的指定的8位地址信息及传输位地址信息及传输8位数据。位数据。第3章 指令系统5.堆栈操作指令堆栈操作指令 PUSHdirectPOPdirect在在MCS-51单单片片机机的的内内部部RAM中中,可可以以设设定定一一个个先先进进后后出出的的区区域域,称称其其为为堆堆栈栈。在在特特殊殊功功能能寄寄存存器器中中有有一一个个堆堆栈栈指指针针SP,它它指指出出栈栈顶顶的的位位置置。进进栈栈指指令令的的功功能能是是:首首先先将将堆堆栈栈指指针针SP的的内内容容加加1,然然后后将将直直接接地地址址所所指指出出的的内内容容送送入入SP指指出出的的内内部部RAM单单元元;出出栈栈指指令令的的功功
19、能能是是:将将SP所所指指出出的的内内部部RAM单单元元的的内内容容送送入入由由直直接接地地址址所所指指出出的的字字节节单单元元,接接着着将将堆堆栈栈指指针针SP的内容减的内容减1。第3章 指令系统 例例如如:进进入入中中断断服服务务子子程程序序时时,把把程程序序状状态态寄寄存存器器PSW、累累加加器器A、数数据据指指针针DPTR进进栈栈保保护护。设设当当前前SP为为60H。则则程序段程序段PUSHPSWPUSHACCPUSHDPLPUSHDPH执执行行后后,SP内内容容修修改改为为64H,而而61H、62H、63H、64H单单元元中中依依次次栈栈入入PSW、A、DPL、DPH的的内内容容。当
20、当中中断断服服务务程程序序结结束之前束之前,如下程序段如下程序段(SP保持保持64H不变不变)第3章 指令系统 POPDPHPOPDPLPOPACCPOPPSW执执行行之之后后,SP内内容容修修改改为为60H,而而64H、63H、62H、61H单元中的内容依次弹出到单元中的内容依次弹出到DPH、DPL、A、PSW中。中。MCS-51提提供供一一个个向向上上升升的的堆堆栈栈,因因此此SP设设置置初初值值时时要要充充分分考考虑虑堆堆栈栈的的深深度度,要要留留出出适适当当的的单单元元空空间间,满满足足堆堆栈栈的使用。的使用。第3章 指令系统6.程序存储器内容送累加器程序存储器内容送累加器 MOVCA
21、,A+PCMOVCA,A+DPTR这这是是两两条条很很有有用用的的查查表表指指令令,可可用用来来查查找找存存放放在在程程序序存存储储器器中中的的常常数数表表格格。第第一一条条指指令令是是以以PC作作为为基基址址寄寄存存器器,A的的内内容容作作为为无无符符号号数数和和PC的的内内容容(下下一一条条指指令令的的起起始始地地址址)相相加加后后得得到到一一个个16位位的的地地址址,并并将将该该地地址址指指出出的的程程序序存存储储器器单单元元的的内内容容送送到到累累加加器器A。这这条条指指令令的的优优点点是是不不改改变变特特殊殊功功能能寄寄存存器器和和PC的的状状态态,只只要要根根据据A的的内内容容就就
22、可可以以取取出出表表格格中中的的常常数数。缺缺点点是是表表格格只只能能放放在在该该条条查查表表指指令令后后面面的的256个个单单元元之之中中,表表格格的大小受到限制的大小受到限制,而且表格只能被一段程序所利用。而且表格只能被一段程序所利用。第3章 指令系统 第第二二条条指指令令是是以以DPTR作作为为基基址址寄寄存存器器,累累加加器器A的的内内容容作作为为无无符符号号数数与与DPTR内内容容相相加加,得得到到一一个个16位位的的地地址址,并并把把该该地地址址指指出出的的程程序序存存储储器器单单元元的的内内容容送送到到累累加加器器A。这这条条指指令令的的执执行行结结果果只只与与指指针针DPTR及
23、及累累加加器器A的的内内容容有有关关,与与该该指指令令存存放放的的地地址址无无关关,因因此此,表表格格的的大大小小和和位位置置可可以以在在64KB程程序序存存储储器器中中任任意意安安排排,并并且且一一个个表表格格可可以以为为各各个个程程序序块所共用。块所共用。第3章 指令系统 7.交换指令交换指令 XCHA,RnXCHA,RiXCHA,directXCHDA,RiSWAPA前前三三条条指指令令是是将将累累加加器器A的的内内容容和和源源操操作作数数内内容容相相互互交交换换;后后两两条条指指令令是是半半字字节节交交换换指指令令,最最后后一一条条指指令令是是将将累累加加器器A的的高高4位位与与低低4
24、位位之之间间进进行行交交换换,而而另另外外一一条条指指令令是是将将累累加加器器A的的低低4位位内内容容和和(Ri)所所指指出出的的内内部部RAM单单元元的的低低4位内容相互交换。位内容相互交换。第3章 指令系统 传送类指令举例:传送类指令举例:1、将立即数、将立即数01H送入内部送入内部RAM30H中中MOV30H,#01H或或MOVA,#01HMOV30H,A2、将立即数、将立即数01H送外部送外部RAM2000H单元中单元中方案方案1:MOVX2000H,#01H;?方案方案2;MOVA,#01HMOVX2000H,A;?方案方案3:MOVB,#01H;?MOVDPTR,#2000HMOV
25、XDPTR,B第3章 指令系统正确的方案:正确的方案:MOVA,#01HMOVDPTR,#2000HMOVXDPTR,A3、编程实现内部、编程实现内部RAM30H和和31H单元的内容交换单元的内容交换方案方案1、XCH31H,30H;?方案方案2、MOVA,30H;暂存;暂存MOV30H,31HMOV31H,A方案方案3、XCHA,30HXCHA,31HXCHA,30H第3章 指令系统方案方案4、PUSH30HPUSH31HPOP30HPOP31H4、将程序存储器、将程序存储器1000H单元的内容送外部单元的内容送外部RAM30HMOVA,#00HMOVDPTR,#1000HMOVCA,A+D
26、PTRMOVR0,#30HMOVXR0,A第3章 指令系统作业作业:P552,8第3章 指令系统一、一、加法指令加法指令1.普通加法指令普通加法指令ADDA,RnADDA,directADDA,RiADDA,data3.2.3算术运算类指令算术运算类指令第3章 指令系统1000100010011100+100100100(A)=24H,P=0,CY=1,OV=1,如如果果两两数数均均为为有有符符号号数,运算结果溢出。数,运算结果溢出。例例1:MOVA,#88HADDA,#9CH程序段运行后,程序段运行后,A,P,CY,OV各为多少?如果两数均为有符号各为多少?如果两数均为有符号数,问运算结果是
27、否有溢出?数,问运算结果是否有溢出?算术运算类指令举例:算术运算类指令举例:第3章 指令系统例例2:MOVA,#78HADDA,#64H011110000110010011011100+(A)=DCH,P=1,CY=0,OV=1,1、看成有符号数时:看成有符号数时:结果溢出。结果溢出。2、看成无符号数时:、看成无符号数时:无溢出。无溢出。问:程序段运行后,问:程序段运行后,A,P,CY,OV各为多少?运算结果是否有溢出?各为多少?运算结果是否有溢出?算术运算类指令举例:算术运算类指令举例:第3章 指令系统2.带进位加法指令带进位加法指令ADDCA,RnADDCA,directADDCA,RiA
28、DDCA,data这这组组指指令令的的功功能能与与普普通通加加法法指指令令类类似似,唯唯一一的的不不同同之之处处是是,在在执执行行加加法法时时,还还要要将将上上一一次次进进位位标标志志Cy的的内内容容也也一一起起加进去加进去,对于标志位的影响也与普通加法指令相同。对于标志位的影响也与普通加法指令相同。第3章 指令系统 带进位加法应用举例:带进位加法应用举例:思思考考:要要计计算算1234H+5678H并并将将运运算算结结果果放放入入40H,41H单单元元中中,如何实现?如何实现?算算法法考考虑虑:先先加加低低八八位位,再再加加高高八八位位,加加高高八八位位时时必必须须将将低低八八位的进位信号加
29、进去。位的进位信号加进去。MOVA,#34HADDA,#78HMOV40H,AMOVA,#12HADDCA,56HMOV41H,A第3章 指令系统 3.增量指令增量指令 INCAINCRnINCdirectINCRiINCDPTR这这组组指指令令的的功功能能是是:将将指指令令中中所所指指出出操操作作数数的的内内容容加加1。若若原原来来的的内内容容为为0FFH,则则加加1后后将将产产生生溢溢出出,使使操操作作数数的的内内容容变变成成00H,但但不不影影响响任任何何标标志志。最最后后一一条条指指令令是是对对16位位的的数数据据指指针针寄寄存存器器DPTR执执行行加加1操操作作,指指令令执执行行时时
30、,先先对对低低8位位指指针针DPL的的内内容容加加1,当当产产生生溢溢出出时时就就对对高高8位位指指针针DPH加加1,但但不不影影响响任任何何标志。标志。第3章 指令系统4.十进制调整指令十进制调整指令 DAA这这条条指指令令对对累累加加器器A参参与与的的BCD码码加加法法运运算算所所获获得得的的8位位结结果果进进行行十十进进制制调调整整,使使累累加加器器A中中的的内内容容调调整整为为二二位位压压缩缩型型BCD码码的的数数。使使用用时时必必须须注注意意,它它只只能能跟跟在在加加法法指指令令之之后后,不不能能对对减减法法指指令令的的结结果果进进行行调调整整,且且其其结结果果不不影影响响溢溢出出标
31、标志志位位和和半进位标志半进位标志。执执行行该该指指令令时时,判判断断A中中的的低低4位位是是否否大大于于9和和辅辅助助进进位位标标志志AC是是否否为为“1”,若若两两者者有有一一个个条条件件满满足足,则则低低4位位加加6操操作作;同同样样,A中中的的高高4位位大大于于9或或进进位位标标志志Cy为为“1”两两者者有有一一个个条条件件满满足足时时,高高4位位加加6操操作作。例例如如:有有两两个个BCD数数36与与45相加相加,结果应为结果应为BCD码码81,程序如下程序如下:第3章 指令系统例例3:MOVA,78HADDA,64HDAA011110000110010011011100011001
32、1001000010+1问:程序段运行后,问:程序段运行后,A,P,CY,OV各为多少?各为多少?(A)=42H,P=0,CY=1,OV=1Why?算术运算类指令举例:算术运算类指令举例:第3章 指令系统二、二、减法指令减法指令1.带进位减法指令带进位减法指令 SUBBA,RnSUBBA,directSUBBA,RiSUBBA,data这这组组指指令令的的功功能能是是:将将累累加加器器A的的内内容容与与第第二二操操作作数数及及进进位位标标志志相相减减,结结果果送送回回到到累累加加器器A中中。在在执执行行减减法法过过程程中中,如如果果位位7(D7)有有借借位位,则则进进位位标标志志Cy置置“1”
33、,否否则则清清“0”;如如果果位位3(D3)有有借借位位,则则辅辅助助进进位位标标志志AC置置“1”,否否则则清清“0”;如如位位6有有借借位位而而位位7没没有有借借位位,或或位位7有有借借位位而而位位6没没有有借借位位,则则溢溢出出标标志志OV置置“1”,否则清否则清“0”。若若要要进进行行不不带带借借位位的的减减法法操操作作,则则必必须须先先将将Cy清清“0”。第3章 指令系统 2.减减1指令指令 DECADECRnDECdirectDECRi这这组组指指令令的的功功能能是是:将将指指出出的的操操作作数数内内容容减减1。如如果果原原来来的的操操作作数数为为00H,则则减减1后后将将产产生生
34、下下溢溢出出,使使操操作作数数变变成成0FFH,但但不影响任何标志。不影响任何标志。第3章 指令系统三、三、乘法指令乘法指令 乘法指令完成单字节的乘法乘法指令完成单字节的乘法,只有一条指令只有一条指令:MULAB这这条条指指令令的的功功能能是是:将将累累加加器器A的的内内容容与与寄寄存存器器B的的内内容容相相乘乘,乘乘积积的的低低8位位存存放放在在累累加加器器A中中,高高8位位存存放放于于寄寄存存器器B中中。如如果果乘乘积积超超过过0FFH,则则溢溢出出标标志志OV置置“1”,否否则则清清“0”。进位标志进位标志Cy总是被清总是被清“0”。第3章 指令系统 四、四、除法指令除法指令 除法指令完
35、成单字节的除法除法指令完成单字节的除法,只有一条指令只有一条指令:DIVAB这这条条指指令令的的功功能能是是:将将累累加加器器A中中的的内内容容除除以以寄寄存存器器B中中的的8位位无无符符号号整整数数,所所得得商商的的整整数数部部分分存存放放在在累累加加器器A中中,余余数数部部分分存存放放在在寄寄存存器器B中中,清清“0”进进位位标标志志Cy和和溢溢出出标标志志OV。若若原原来来B中中的的内内容容为为0,则则执执行行该该指指令令后后A与与B中中的的内内容容不不定定,并并将将溢溢出出标标志志OV置置“1”,在在任任何何情情况况下下,进进位位标标志志Cy总总是是被被清清“0”。第3章 指令系统例例
36、4.MOVA,#78HADDA,#64HMULAB上述程序段运行后,上述程序段运行后,(A)=,(,(CY)=,(B)=,(,(OV)=。算术运算类指令举例:算术运算类指令举例:上述程序段运行后,上述程序段运行后,(A)=E0H,(,(CY)=0,(B)=2EH,(,(OV)=1。第3章 指令系统例例5.MOVA,#78HADDA,#64HDIVAB上述程序段运行后,上述程序段运行后,(A)=,(,(CY)=,(B)=,(,(OV)=。算术运算类指令举例:算术运算类指令举例:上述程序段运行后,上述程序段运行后,(A)=01H,(,(CY)=0,(B)=0EH,(,(OV)=0。第3章 指令系统
37、表 3.3 影响标志位的指令 第3章 指令系统表 3.3 影响标志位的指令 第3章 指令系统补充作业补充作业:阅读下列程序,填空并回答问题。阅读下列程序,填空并回答问题。1.MOVA,#59HMOVR0,#68HADDA,R0上述程序段运行后,上述程序段运行后,(A)=,(,(CY)=,(P)=,(,(OV)=。如果参与运算的两数是有符号数,结果是否有溢出?如果参与运算的两数是有符号数,结果是否有溢出?如果参与运算的两数是无符号数,结果是否有溢出?如果参与运算的两数是无符号数,结果是否有溢出?第3章 指令系统2.MOVA,#59HMOVR0,#68HADDA,R0DAA上述程序段运行后,上述程
38、序段运行后,(A)=,(,(CY)=,(P)=,(,(OV)=。3.MOVA,#59HMOVB,#68HMULAB上述程序段运行后,上述程序段运行后,(A)=,(,(CY)=,(B)=,(,(OV)=。第3章 指令系统4.MOVA,#68HMOVB,#59HDIVAB上述程序段运行后,上述程序段运行后,(A)=,(,(CY)=,(B)=,(,(OV)=。第3章 指令系统 一、一、简单逻辑操作指令简单逻辑操作指令 CLRA;对累加器对累加器A清清“0”CPLA;对累加器对累加器A按位取反按位取反RLA;累加器累加器A的内容向左环移的内容向左环移1位位RLCA;累加器累加器A的内容带进位标志位向左
39、环移的内容带进位标志位向左环移1位位RRA;累加器累加器A的内容向右环移的内容向右环移1位位RRCA;累加器累加器A的内容带进位标志位向右环移的内容带进位标志位向右环移1位位这这组组指指令令的的功功能能是是:对对累累加加器器A的的内内容容进进行行简简单单的的逻逻辑辑操操作作。除除了了带带进进位位标标志志位位的的移移位位指指令令外外,其其它它都都不不影影响响Cy,AC,OV等标志。等标志。3.2.4逻辑运算类指令逻辑运算类指令第3章 指令系统二、二、逻辑与指令逻辑与指令 ANLA,RnANLA,directANLA,RiANLA,dataANLdirect,AANLdirect,data这这组组
40、指指令令的的功功能能是是:将将两两个个操操作作数数的的内内容容按按位位进进行行逻逻辑与操作辑与操作,并将结果送回目的操作数的单元中。并将结果送回目的操作数的单元中。第3章 指令系统三、三、逻辑或指令逻辑或指令ORLA,RnORLA,directORLA,RiORLA,dataORLdirect,AORLdirect,data这这组组指指令令的的功功能能是是:将将两两个个操操作作数数的的内内容容按按位位进进行行逻逻辑辑或或操作操作,并将结果送回目的操作数的单元中。并将结果送回目的操作数的单元中。第3章 指令系统四、四、逻辑异或指令逻辑异或指令XRLA,RnXRLA,directXRLA,RiXR
41、LA,dataXRLdirect,AXRLdirect,data这这组组指指令令的的功功能能是是:将将两两个个操操作作数数的的内内容容按按位位进进行行逻逻辑辑异或操作异或操作,并将结果送回到目的操作数的单元中。并将结果送回到目的操作数的单元中。第3章 指令系统逻辑运算指令举例逻辑运算指令举例例例1:CLRA;MOVA,#0E0HADDA,#33HRLARLCA(A)=Cy=第3章 指令系统例例2:利用左移指令实现对累加器利用左移指令实现对累加器A中内容乘中内容乘8操作(操作(A)=01HRLARLARLA例例3:(1)将内部将内部RAM30H单元的低四位变反,其余位不变单元的低四位变反,其余位
42、不变XRL30H,#0FH(2)将内部将内部RAM30H单元的低六位置单元的低六位置1,其余位不变,其余位不变ORL30H,#3FH(3)将内部将内部RAM30H单元的最高位置单元的最高位置0,其余位不变,其余位不变ANL30H,#7FH第3章 指令系统例例4:利利用用移移位位指指令令实实现现对对内内部部RAM30H(低低位位),31H的的16位位数乘以数乘以2(假定结果不溢出)(假定结果不溢出)CLRCMOVA,30HRLCAMOV30H,AMOVA,31HRLCAMOV31H,A第3章 指令系统5.MOVB,#0C9HMOVA,#58HADDA,BRLCARLCA上述几条指令执行后,上述几
43、条指令执行后,(A)=,CY=,P=。补充作业补充作业:阅读下列程序并填空阅读下列程序并填空6.MOVA,89HMOVB,#76HADDA,BRLCAXCHA,BRRCAXCHA,BSJMP$上述几条指令执行后,上述几条指令执行后,(A)=,(B)=,CY=。第3章 指令系统控控制制转转移移指指令令共共有有17条条,不不包包括括按按布布尔尔变变量量控控制制程程序序转转移移指指令令(见见表表3.5)。其其中中有有64KB范范围围内内的的长长调调用用、长长转转移移指指令令;有有2KB范范围围内内的的绝绝对对调调用用和和绝绝对对转转移移指指令令;有有全全空空间间的的长长相相对对转转移移及及一一页页范
44、范围围内内的的短短相相对对转转移移指指令令;还还有有多多种种条条件件转转移移指指令令。由由于于MCS-51提提供供了了较较丰丰富富的的控控制制转转移移指指令令,因因此此在在编编程程上上相相当当灵灵活活方方便便。这这类类指指令令用用到到的的助助记记符符共共有有10种种:AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNZ。3.2.5控制转移指令控制转移指令第3章 指令系统一、一、无条件转移指令无条件转移指令1.绝对转移指令绝对转移指令AJMPaddr11这这是是2KB范范围围内内的的无无条条件件跳跳转转指指令令,执执行行该该指指令令时时,先先将将PC+2
45、,然然后后将将addr11送送入入PC10PC0,而而PC15PC11保保持持不不变变。这这样样得得到到跳跳转转的的目目的的地地址址。需需要要注注意意的的是是,目目标标地地址址与与AJMP后后面面一一条条指指令令的的第第一一个个字字节节必必须须在在同同一一个个2KB区域的存储器区内。区域的存储器区内。第3章 指令系统2.短转移指令短转移指令SJMPrel执执行行该该指指令令时时,先先将将PC+2,再再把把指指令令中中带带符符号号的的偏偏移移量加到量加到PC上上,得到跳转的目标地址送入得到跳转的目标地址送入PC。3.长跳转指令长跳转指令LJMPaddr16执执行行该该指指令令时时,将将16位位目
46、目标标地地址址addr16装装入入PC,程程序序无无条条件件转转向向指指定定的的目目标标地地址址。转转移移的的目目标标地地址址可可以以在在64KB程序存储器地址空间的任何地方程序存储器地址空间的任何地方,不影响任何标志。不影响任何标志。第3章 指令系统4.散转指令散转指令JMPA+DPTR执执行行该该指指令令时时,把把累累加加器器A中中的的8位位无无符符号号数数与与数数据据指指针针中中的的16位位数数相相加加,结结果果作作为为下下条条指指令令的的地地址址送送入入PC,不不改改变变累累加加器器A和和数数据据指指针针DPTR的的内内容容,也也不不影影响响标标志志。利用这条指令能实现程序的散转。利用
47、这条指令能实现程序的散转。第3章 指令系统二、二、条件转移指令条件转移指令JZrel;(A)=0转移转移JNZrel;(A)0转移转移这这类类指指令令是是依依据据累累加加器器A的的内内容容是是否否为为0的的条条件件转转移移指指令令。条条件件满满足足时时转转移移(相相当当于于一一条条相相对对转转移移指指令令),条条件件不不满满足足时时则则顺顺序序执执行行下下面面一一条条指指令令。转转移移的的目目标标地地址址在在以以下下一一条条指指令令的的起起始始地地址址为为中中心心的的256个个字字节节范范围围之之内内(128+127)。当当条条件件满满足足时时,PC(PC)+N+rel,其其中中(PC)为为该
48、该条条件件转转移移指指令令的的第第一一个个字字节节的的地地址址,N为为该该转转移移指指令令的的字字节节数(长度)数(长度),本转移指令本转移指令N=2。第3章 指令系统三、三、比较转移指令比较转移指令在在MCS-51中中没没有有专专门门的的比比较较指指令令,但但提提供供了了下下面面4条条比较不相等转移指令比较不相等转移指令:CJNEA,direct,relCJNEA,data,relCJNERn,data,relCJNERi,data,rel这这组组指指令令的的功功能能是是:比比较较前前面面两两个个操操作作数数的的大大小小,如如果果它它们们的的值值不不相相等等则则转转移移。转转移移地地址址的的
49、计计算算方方法法与与上上述述两两条条指指令令相相同同。如如果果第第一一个个操操作作数数(无无符符号号整整数数)小小于于第第二二个个操操作作数数,则则进进位位标标志志Cy置置“1”,否否则则清清“0”,但但不不影影响响任任何何操操作作数数的的内容。内容。该指令要影响标志位该指令要影响标志位Cy。第3章 指令系统四、四、减减1不为不为0转移指令转移指令DJNZRn,relDJNZdirect,rel这这两两条条指指令令把把源源操操作作数数减减1,结结果果回回送送到到源源操操作作数数中中去去,如果结果不为如果结果不为0则转移(转移地址的计算方法同前)。则转移(转移地址的计算方法同前)。该指令不影响标
50、志位。该指令不影响标志位。五、五、调用及返回指令调用及返回指令在在程程序序设设计计中中,通通常常把把具具有有一一定定功功能能的的公公用用程程序序段段编编制制成成子子程程序序,当当主主程程序序需需要要使使用用子子程程序序时时用用调调用用指指令令,而而在在子子程程序序的的最最后后安安排排一一条条子子程程序序返返回回指指令令,以以便便执执行行完完子子程程序序后后能能返返回回主程序继续执行。主程序继续执行。第3章 指令系统1.绝对调用指令绝对调用指令ACALLaddr11这这是是一一条条2KB范范围围内内的的子子程程序序调调用用指指令令。执执行行该该指指令令时时,先先将将PC+2以以获获得得下下一一条