版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章8051指令系统主要内容1、汇编语言2、寻址方式3、MCS-51单片机的指令系统3.1汇编语言3.1.1指令和程序设计语言
指令:是CPU根据人们的意图来执行某种操作的命令。
指令系统:是计算机所能够执行的全部指令的集合。
程序:是按人们的要求所编制的指令操作序列。
程序设计语言:是编写程序的某种规则。
三类编程语言:机器语言、汇编语言、高级语言3.1.2指令格式
操作码[操作数1][,操作数2][,操作数3][;注释]
单字节指令:有两种情况,共49条(1)指令码中隐含着对某一个寄存器的操作。(2)指令码中的某些位指定某一个寄存器。双字节指令:一个字节示操作码,另一个字节示操作数。共46条
三字节指令:一个字节示操作码及某些位指定某一个寄存器,另两个字节示操作数。共16条3.2寻址方式3.2.0寻址方式概述
寻址方式:就是指令中找到操作数或操作数地址的方式。8051单片机有七种寻址方式:1、寄存器寻址2、直接寻址3、立即数寻址4、寄存器间接寻址5、变址寻址6、相对寻址7、位寻址3.2.1七种寻址方式一、寄存器寻址
操作数在某一个寄存器中。所用的寄存器可以是:R0~R7、A、B、DPTR等。如:MOVA,R0;(R0)→ADECB;(B)-1→BADDA,R1;(A)+(R1)→AINCDPTR;(DPTR)+1→DPTR3.2.1七种寻址方式二、直接寻址
指令中直接给出操作数所在存储单元的地址。
可以直接寻址的存储单元是:片内RAM中的所有单元,即片内RAM的低128字节和所有的特殊功能寄存器(SFR)。如:MOVA,3AH;(3AH)→AMOV P1,R0;(R0)→P1口INC58H;(58H)+1→58HSUBBA,TL0;(A)-(TL0)-(Cy)
→A3.2.1七种寻址方式三、立即数寻址操作数在指令中,在操作码后面。用“#”表示。操作数可以是8位的,也可以是16位的。如:MOVA,3AH;(3AH)→AMOVA,#3AH;3AH→A
MOV DPTR,#23C8H;23C8H→DPTRADDA,#0D4H;(A)+0D4H→A3.2.1七种寻址方式四、寄存器间接寻址指令中寄存器中的内容给出的是操作数的地址。8051规定:R0、R1和DPTR可以作为间接寻址寄存器。1、R0、R1间址访问片内RAM的低128B或片外RAM的低256B空间如:设(R0)=65H,(65H)=47HMOV;(65H)→A,A中的值是47HMOV@R0,#3AH;3AH→65HMOVX;外RAM的(65H)→A3.2.1七种寻址方式2、DPTR间址访问片外RAM的64KB空间
如:设(DPTR)=2000HMOVX@DPTR,A;A→外RAM的2000H单元MOVX;外RAM的2000H单元→A3.2.1七种寻址方式五、变址寻址(基址+变址间接寻址)
DPTR或PC作为基地址寄存器、A作为变地址寄存器的间接寻址。
只能访问程序存储器,范围:64KB如:MOVC;((A)+(DPTR))→AMOVC;((A)+(PC))→AJMP@A+DPTR;(A)+(DPTR)→PC该寻址方式多用于查表操作。3.2.1七种寻址方式[例3.1]已知片外ROM的0320H单元有一常数X,现欲把它取到累加器A中,请编写相应的程序.解:根据变址寻址的特点,基地址显然应取0300H,地址偏移量为02H.相应程序为:MOV DPTR,#0300HMOV A,#02HMOVC A,@A+DPTR3.2.1七种寻址方式六、相对寻址以当前的PC值加上指令中给出的地址偏移量rel而形成的实际地址。
相对寻址只出现在相对转移指令中。
目的地址=源地址+指令的字节数(2或3)+relrel=目的地址--源地址--指令的字节数(2或3)rel:-128~+127用补码表示,大于0正向跳转,小于0则反向跳转。如:JCrelSJMPNEXT1JZFIRSTDJNZR1,LOOP23.2.1七种寻址方式3.2.1七种寻址方式七、位寻址位操作指令中的操作数是位地址。用“bit”示1、位寻址区域
在片内RAM中:(1)20H~2FH16个单元的128位(00H~7FH)(2)字节地址能被8整除的11个SFR中的位(80H~FFH)
2、位地址的表示方法(1)直接用位地址如:00H、7FH、82H、0B0H(2)用特殊功能寄存器名加位数如:PSW.3P1.2(3)用位名如:TR0、EX0(4)用bit定义的有名字的位地址3、位寻址例子MOVC,00HSETBPSW.3CLRTR1JB01H,NEXT23.2.2寻址空间及符号注释一、寻址空间3.2.2寻址空间及符号注释二、寻址方式中的常用符号注释1、Rn(n=0~7)表示当前选中的工作寄存器R0~R72、Ri(i=0,1)
表示当前选中的、作地址指针的寄存器R0、R13、#data表示8位立即数4、#data16表示16位立即数如:MOVDPTR,#data165、direct8位片内RAM单元(包括SFR)的直接地址如:MOVdirect,#data;#datadirect6、addr11
11位目的地址,用于ACALL和AJMP指令中7、addr16
16位目的地址,用于LCALL和LJMP指令中3.2.2寻址空间及符号注释8、rel补码形式的8位地址偏移量9、bit片内RAM或SFR的直接寻址的位地址10、@间接地址方式中,表示间址寄存器的符号11、/对位取反操作,指令中,表示对RAM或SFR的直接寻址的位地址。如:ANLC,/P1.212、(×)指×中的内容,其内容是数据;×是地址13、((×))由×指出的地址单元中的内容,×中的内容是地址,×地址如:设58H单元的数据是36H,R0的内容是58HINC58H;(58H)+1→58HDEC@R0;((R0))-1→(R0)14、→表示将箭头左边的内容传送到箭头右边的单元3.3MCS-51单片机的指令系统3.3.0指令系统概述
共111条指令。
按字节数分:单字节指令49条,双字节指令46条,三字节指令16条。
按执行时间分:单机器令64条,双令45条,四令2条(乘、除指令).
按功能分,
MCS-51指令系统分为五大类:数据传送指令(29条);算术运算指令(24条);逻辑运算指令(24条);控制转移指令(17条);位操作或布尔操作(17条).3.3MCS-51单片机的指令系统3.3.1数据传送指令数据传送类指令丰富,功能强。分成九个小类,一般不影响标志位。共29条指令。一、以A为目的操作数的指令(4条)MOVA,Rn;(Rn)→AMOVA,direct;(direct)→AMOV;((Ri))→AMOVA,#data;data→A如:MOVA,R2MOVA,30HMOVMOVA,#36H3.3MCS-51单片机的指令系统二、以Rn为目的操作数的指令(3条)MOVRn,A;(Rn)→RnMOVRn,direct;(direct)→RnMOVRn,#data;data→Rn如:MOVR0,AMOVR3,30HMOVR7,#36HMOVR1,#30MOVR6,#01101100B3.3MCS-51单片机的指令系统三、以直接地址为目的操作数的指令(5条)MOVdirect,A;(A)→directMOVdirect,Rn;(Rn)→directMOVdirect,direct;(源direct)→目的directMOV;((Ri))→directMOVdirect,#data;data→direct如:MOV30H,AMOVP1,R2MOV38H,60HMOVMOV58H,#36H3.3MCS-51单片机的指令系统四、以间接地址为目的操作数的指令(3条)MOV@Ri,A;(A)→(Ri)MOV@Ri,direct;(direct)→(Ri)MOV@Ri,#data;data→(Ri)如:MOV@R0,AMOV@R1,36HMOV@R0,SBUFMOV@R1,#48MOV@R0,#0D6H3.3MCS-51单片机的指令系统MOV指令在片内RAM的允图不允作有:@RiRn→←Rn@Ri→←Rn3.3MCS-51单片机的指令系统[例3.2]已知:R0=20H,试问8031执行如下指令后累加器A、R7、20H和21H单元的内容是什么?MOV A,#18HMOV R7,#28HMOV @R0,#38HMOV 21H,#48H3.3MCS-51单片机的指令系统[例3.3]已知:R1=32H,(30H)=AAH,(31H)=BBH,(32H)=CCH,试问如下指令执行后累加器A、50H、R6、32H和P1口中的内容是什么?MOV A,30HMOV 50H,AMOV R6,31HMOV @R1,30HMOV P1,32H3.3MCS-51单片机的指令系统[例3.4]已知(40H)=11H,(41H)=22H,R0=40H,R1=41H,试问如下指令执行后累加器 A、40H、41H和42H单元中的内容是什么?MOV MOV @R1,AMOV 42H,@R13.3MCS-51单片机的指令系统[例3.5]试编写把30H单元和40H单元中的内容进行交换的程序.解: MOV A,30HMOV 30H,40HMOV 40H,A3.3MCS-51单片机的指令系统五、十六位数据传送指令(1条)MOVDPTR,#data16;dataH→DPH,dataL→DPL如:MOVDPTR,#2368H
MOVDPTR,#35326六、查表指令(2条)MOVC;((A)+(DPTR))→A一般DPTR放表的首地址,A放所查数据在表中的偏移;查表范围为64KB空间,称为远程查表。MOVCA,@A+PC;((A)+(PC))→APC的值为下条指令的地址,A放所查数据相对PC值的偏移;查表范围为最大为256B空间,称为近程查表。3.3MCS-51单片机的指令系统例1近程查表设程序中的数据表格为:1010H:02H1011H:04H1012H:06H1013H:08H执行程序:1000H:MOVA,#0DH1002H:MOVC;(0DH+1003H)→A1003H:MOVR0,A;(A)→R0
结果为:(A)=02H,(R0)=02H,(PC)=1004H3.3MCS-51单片机的指令系统例2远程查表设程序中的数据表格为:7010H:02H7011H:04H7012H:06H7013H:08H执行程序:1000H:MOVA,#10H1002H:PUSHDPH1004H:PUSHDPL1006H:MOVDPTR,#7000H1009H:MOVC;(10H+7000H)→A100AH:POPDPL100CH:POPDPH
结果为:(A)=02H,(PC)=100EH,(DPTR)=原值3.3MCS-51单片机的指令系统七、累加器A与片外RAM的数据传送指令(4条)
用间址方式MOVX;((Ri))→A,且使/RD=0MOVXA,@DPTR;((DPTR))→A,且使/RD=0MOVX@Ri,A;(A)→(Ri),且使/WR=0MOVX@DPTR,A;(A)→(DPTR),且使/WR=0说明:1、第2、4两条指令以DPTR为片外RAM16位地址指针,寻址范围为64KB空间;2、第1、3两条指令以R0或R1作低8位地址指针,由P0口送出,寻址范围为256B空间(P2口仍可作通用I/O口)。3.3MCS-51单片机的指令系统3.3MCS-51单片机的指令系统[例3.7]已知外部RAM单元的88H中有一数X,试编写一个能把X传送到外部RAM的1818H单元的程序.解: ORG 2000H MOV R0,#88H MOV DPTR,#1818H MOVX A,@R0 MOVX @DPTR,A SJMP $ END3.3MCS-51单片机的指令系统八、堆栈操作指令(2条)PUSHdirect;先(SP)+1→SP,后(direct)→(SP)POPdirect;先((SP))→direct,后(SP)-1→SP如:PUSH0E0H;实际是(A)→(SP)
POP05H;实际是((SP))→R5注意:其操作数为直接地址,不能用寄存器名。3.3MCS-51单片机的指令系统堆栈操作指令是直接寻址指令,所以要注意指令的书写格式。正确指令错误指令PUSHACCPUSHAPUSH00HPUSHR0POPACCPOPAPOP00HPOPR03.3MCS-51单片机的指令系统九、交换指令(5条)
1、字节交换指令XCHA,Rn;(A)→←(Rn)XCHA,direct;(A)→←(direct)XCH;(A)→←((Ri))3.3MCS-51单片机的指令系统2、半字节交换指令(1)二低半字节交换指令XCHD;(A0~3)→←((Ri)0~3)如:设(A)=36H,(R1)=65H,(65H)=42HXCHD;(A)=32H,(65H)=46HA3.3MCS-51单片机的指令系统(2)累加器A高、低半字节交换指令SWAPA;(A0~3)→←(A4~7)如:设(A)=36HSWAPA;(A)=63H3.3MCS-51单片机的指令系统[例3.9]已知外部RAM的20H单元中有一个数X,RAM20H单元中有一个数Y,试编出使它们互相交换的程序.解:MOVR1,#20HMOVXA,@R1XCHA,@R1MOVX@R1,A[例3.10]已知50H中有一个0~9的数,请编程把它变成相应的ASCII码程序.解:MOVR0,#50HMOVA,#30HXCHDA,@R0MOV@R0,A3.3MCS-51单片机的指令系统3.3.2算术运算指令包括加、减、乘、除运算;第一操作数一般为A;一般影响标志位CY、AC、OV和P。共24条指令,分成七个小类。一、不带进位加法指令(4条)ADDA,Rn;(A)+(Rn)→AADDA,direct;(A)+(direct)→AADD;(A)+((Ri))→AADDA,#data;(A)+#data→A例3-1(A)=0C3H,(R0)=0AAH执行“ADDA,R0”的和为6DH,标志位CY=1,OV=1,AC=1。OV=C7C6对第6、第7位的进位位C7、C6异或。3.3MCS-51单片机的指令系统二、带进位加法指令(4条)ADDCA,Rn;(A)+(Rn)+CY→AADDCA,direct;(A)+(direct)+CY→AADDC;(A)+((Ri))+CY→AADDCA,#data;(A)+#data+CY→A三、带借位减法指令(4条)SUBBA,Rn;(A)-CY-(Rn)→ASUBBA,direct;(A)-CY-(direct)→ASUBB;(A)-CY-((Ri))→ASUBBA,#data;(A)-CY-#data→A注意:这两类指令其助记符与8086的不同。3.3MCS-51单片机的指令系统[例3.14]已知:M1和M2单元中存放两个16位无符号数X1和X2(低8位在前,高8位在后),试写出X1+X2并把结果放在M1和M1+1单元(低8位在M1单元,高8位在M1+1单元)的程序.设两数之和不会超过16位.解:参考程序为:ORG 0100HMOV R0,#M1MOVR1,#M2MOVADDA,@R1MOV@R0,AINCR0INCR1MOVA,@R0ADDCA,@R1MOV@R0,ASJMP$END3.3MCS-51单片机的指令系统四、乘除法指令(2条)1、乘法指令
MULAB;(A)×(B)→B15~8,A7~0说明:(1)为无符号乘法;(2)若结果的B≠0,则OV=1,若B=0,则OV=0;CY=0。2、除法指令
DIVAB;(A)/(B)的商→A,余数→B说明:(1)为无符号除法;(2)若除数B=0,则OV=1,若B≠0,则OV=0;CY=0。3.3MCS-51单片机的指令系统[例3.19]已知两个8位无符号乘数分别放在30H和31H单元中,试编出令它们相乘并把积的低8位放在32H单元.积的高8位放入33H单元的程序.解:参考程序为:ORG 0100HMOV R0,#30HMOV A,@R0INC R0MOV B,@R0MUL ABINC R0MOV @R0,AINC R0MOV @R0,BSJMP $END3.3MCS-51单片机的指令系统五、加1指令(5条)INCA;(A)+1→AINCRn;(Rn)+1→RnINCdirect;(direct)+1→directINC@Ri;((Ri))+1→(Ri)INCDPTR;(DPTR)+1→DPTR说明:此类指令不影响标志位CY、AC和OV3.3MCS-51单片机的指令系统六、减1指令(4条)DECA;(A)-1→ADECRn;(Rn)-1→RnDECdirect;(direct)-1→directDEC@Ri;((Ri))-1→(Ri)说明:此类指令不影响标志CY、AC和OV3.3MCS-51单片机的指令系统七、十进制数调整指令(1条)DAA
;调整累加器内容为BCD码(压缩的)说明:(1)此指令必须跟在ADD或ADDC指令之后,将A中的和调整为BCD码,并且ADD或ADDC的两个操作数是BCD码;(2)调整方法:若(A0~3)>9或AC=1,则(A0~3)+6→(A0~3);若(A4~7)>9或CY=1,则(A4~7)+6→(A4~7);(3)对标志的影响:若结果A>99,则CY=1;不影响OV。3.3MCS-51单片机的指令系统[例3.18]已知:M1和M2中分别存有被减数91和减数36,试编程求差并存入M3单元.解:由于DAA(十进制调整指令)只能跟在加法指令后面,因此应该变减法运算为加法运算,也就是先求减数的BCD码的补码,然后再进行加法运算.相应的程序为:ORG 1000HCLR CMOV A,#9AHSUBB A,M2ADD A,M1 DA AMOV M3,ACLR CSJMP $END3.3MCS-51单片机的指令系统3.3.3逻辑操作指令包括与、或、异或、清除、求反、移位等操作。这类指令一般不影响标志位CY、AC和OV。共24条指令,分成五个小类。一、累加器A清0与取反指令(2条)1、累加器A清0指令CLRA
;0→A说明:只影响标志位P。2、累加器A取反指令(按位取反)CPLA
;(/A)→A,相当于0FFH-A→A说明:不影响标志位。如:(A)=56HCPLA;结果为0A9H3.3MCS-51单片机的指令系统二、移位指令(4条)1、累加器A循环左移RLA;2、累加器A循环右移RRA;3、累加器A带进位位循环左移RLCA;4、累加器A带进位位循环右移RRCA;说明:(1)各条指令每次只某著名企业一位;(2)左移一位相当于乘以2;右移一位相当于除以2;(3)带进位位某著名企业的影响标志位CY和P。3.3MCS-51单片机的指令系统[例3.25]已知M1和M1+1单元中有一个16位的二进制数(M1中为低8位),请通过编程令其扩大到二倍(设该数扩大后应小于65536).解:①算法16位左移一次.②程序为:ORG 1000HCLR CMOV R1,#M1MOV A,@R1RLC AMOV @R1,AINC R1MOV A,@R1RLC AMOV @R1,ASJMP $END3.3MCS-51单片机的指令系统三、逻辑“与”指令(6条)ANLA,Rn;(A)∧(Rn)→AANLA,direct;(A)∧(direct)→AANL;(A)∧((Ri))→AANLA,#data;(A)∧#data→AANLdirect,A;(direct)∧(A)→directANLdirect,#data;(direct)∧#data→direct说明:(1)目的操作数只能是A或者direct;(2)前4条指令仅影响标志位P;后两条不影响标志位;(3)与运算常用于使某些位清0。3.3MCS-51单片机的指令系统四、逻辑“或”指令(6条)ORLA,Rn;(A)∨(Rn)→AORLA,direct;(A)∨(direct)→AORL;(A)∨((Ri))→AORLA,#data;(A)∨#data→AORLdirect,A;(direct)∨(A)→directORLdirect,#data;(direct)∨#data→direct说明:(1)目的操作数只能是A或者direct;(2)前4条指令仅影响标志位P;后两条不影响标志位。(3)或运算常用于使某些位置1。3.3MCS-51单片机的指令系统五、逻辑“异或”指令(6条)XRLA,Rn;(A)⊕(Rn)→AXRLA,direct;(A)⊕(direct)→AXRL;(A)⊕((Ri))→AXRLA,#data;(A)⊕#data→AXRLdirect,A;(direct)⊕(A)→directXRLdirect,#data;(direct)⊕#data→direct说明:(1)目的操作数只能是A或者direct;(2)前4条指令仅影响标志位P;后两条不影响标志位。(3)用1异或使对应位取反,用0异或使对应位不变,异或运算常用于使某些位取反。3.3MCS-51单片机的指令系统逻辑操作类指令操作图3.3MCS-51单片机的指令系统3.3.4控制程序转移类指令
包括无条件转移、条件转移、子程序调用和返回指令等,共17条。只有比较转移指令影响标志。一、无条件转移指令(4条)
1、绝对转移指令AJMPaddr11;先(PC)+2→PC;addr11→PC10~0,(PC15~11)不变说明:(1)该指令执行前PC值为下一条指令的首地址;(2)转移范围:含有下一条指令首地址的同一个2KB范围,即高5位地址相同;(3)本指令有8种操作码。如:AJMPFIRST3.3MCS-51单片机的指令系统2、长转移指令LJMPaddr16;addr16→PC说明:转移范围:64KB全程序空间任何单元。如:LJMPNEXT3.3MCS-51单片机的指令系统3、相对转移(短转移)指令SJMPrel;先(PC)+2→PC,后(PC)+rel→PC;
说明:(1)该指令执行前PC值为下一条指令的首地址;(2)转移范围:-128~+127;对应rel值为:00H~7FH(0~+127)、80H~FFH(-128~-1);如:SJMPFIRSTSJMP$;无限循环执行本指令,rel=FEHWEIT:SJMPWEIT;与上条指令相同3.3MCS-51单片机的指令系统3.3MCS-51单片机的指令系统4、间接转移指令JMP@A+DPTR;(A)+(DPTR)→PC说明:(1)具有多分枝转移功能,即散转功能,又叫散转指令;(2)转移范围:是以DPTR为首地址的256B。例3-11根据累加器A中的命令键键值,设计命令键操作程序入口跳转表。3.3MCS-51单片机的指令系统CLRCRLCAMOVDPTR,#JPTABJMP@A+DPTRJPTAB:AJMPCCS0AJMPCCS1AJMPCCS2:3.3MCS-51单片机的指令系统二、条件转移指令(8条)
均为相对寻址方式。
1、累加器A为零(非零)转移指令JZrel;当A=0时,(PC)+rel→(PC)转移;;当A≠0时,顺序执行。JNZrel;当A≠0时,(PC)+rel→(PC)转移;;当A=0时,顺序执行。3.3MCS-51单片机的指令系统[例3.31]已知:外部RAM中以DATA1(DATA1在0页内)为起始地址的数据块以零为结束标志.试通过编程将之传送到以DATA2为起始地址的RAM区.解:相应程序为:ORG 0500HMOV R0,#DATA1MOV R1,#DATA2LOOP:MOVX A,@R0JZ DONEMOV @R1,AINC R0INC R1SJMP LOOPDONE:SJMP $END3.3MCS-51单片机的指令系统2、比较转移指令
为新增设的,4条,均为三字节指令。一般形式为:
CJNE(目的操作数),(源操作数),relCJNEA,direct,rel
;若A>(direct),则(PC)+rel→PC,且0→CY;
;若A<(direct),则(PC)+rel→PC,且1→CY;
;若A=(direct),则顺序执行,且0→CY。CJNEA,#data,rel
;若A>#data,则(PC)+rel→PC,且0→CY;
;若A<#data,则(PC)+rel→PC,且1→CY;
;若A=#data,则顺序执行,且0→CY。3.3MCS-51单片机的指令系统CJNERn,#data,rel
;若(Rn)>#data,则(PC)+rel→PC,且0→CY;
;若(Rn)<#data,则(PC)+rel→PC,且1→CY;
;若(Rn)=#data,则顺序执行,且0→CY。CJNE@Ri,#data,rel
;若((Ri))>#data,则(PC)+rel→PC,且0→CY;
;若((Ri))<#data,则(PC)+rel→PC,且1→CY;
;若((Ri))=#data,则顺序执行,且0→CY。3.3MCS-51单片机的指令系统说明:(1)PC值为下一条指令第一个字节的地址,为本条指令PC值加3,即(PC)+3→(PC);(2)×→CY,实际是A-(direct)操作的借位值送CY;CY可以作为进一步操作的依据。如:CJNEA,38H,FIRSTCJNEA,#56H,SECONDCJNER2,#32,THIRDCJNE@R1,#48H,FOURTH3.3MCS-51单片机的指令系统3、循环转移指令DJNZRn,rel;(Rn)-1→Rn;;若(Rn)≠0,则(PC)+rel→PC;;若(Rn)=0,则结束循环,顺序执行DJNZdirect,rel;(direct)-1→direct;;若(direct)≠0,则(PC)+rel→PC;;若(direct)=0,则结束循环,顺序执行
说明:(1)PC的含义同上;
(2)Rn、direct相当于控制循环的计数器。计数器=0?计数器-1(PC)+relPC结束循环,顺序执行YN3.3MCS-51单片机的指令系统[例3.32]试编一程序令片内RAM中以DAT为起始地址的数据块中的连续10个无符号数相加,并将和送到SUM单元.设相加结果不超过8位二进制数所能表示的范围.解:相应的程序为: ORG 1000HMOV R2,#0AHMOV R0,#DATCLR ALOOP: ADD A,@R0INC R0DJNZ R2,LOOPMOV SUM,ASJMP$END3.3MCS-51单片机的指令系统三、子程序调用和返回指令(3条)
1、短(绝对)调用指令ACALLaddr11
;(PC)+2→PC
;(SP)+1→SP,(PC0~7)→(SP);(SP)+1→SP,(PC8~15)→(SP);addr0~10→PC0~10,(PC11~15不变)说明:(1)该指令执行前PC值为下一条指令的首地址;(2)转移范围:含有下一条指令首地址的同一个2KB范围,即高5位地址相同。如:ACALLSUBJIA3.3MCS-51单片机的指令系统2、长调用指令LCALLaddr16
;(PC)+3→PC
;(SP)+1→SP,(PC0~7)→(SP);(SP)+1→SP,(PC8~15)→(SP);addr0~15→PC说明:(1)该指令执行前PC值为下一条指令的首地址;(2)转移范围:整个程序存储空间,64KB范围。如:LCALLSUBJIAN3.3MCS-51单片机的指令系统例3-12设(SP)=5FH,符号地址“SUBRTN”指向5678H,执行指令0123HLCALLSUBRTN0126H……..
结果:26H→60H,[(SP)+1→SP,26H→(SP)]01H→61H,[(SP)+1→SP,01H→(SP)]5678H→PC,转去执行“SUBRTN”子程序3.3MCS-51单片机的指令系统3、返回指令
子程序返回指令RET;((SP))→PC8~15,(SP)-1→SP;((SP))→PC0~7,(SP)-1→SP
中断服务程序返回指令RETI;((SP))→PC8~15,(SP)-1→SP;((SP))→PC0~7,(SP)-1→SP;开放中断逻辑3.3MCS-51单片机的指令系统[例3.35]试利用子程序技术编出令20H~2AH,30H~3EH和40H~4FH三个子域清零的程序.解:相应的程序为:ORG 1000HMOV SP,#70HMOV R0,#20HMOV R2,#0BHACALLZEROMOV R0,#30HMOV R2,#0FHACALL ZEROMOV R0,#40HMOV R2,#10HACALLZEROSJMP $ORG 1050HZERO:MOV @R0,#00HINC R0DJNZ R2,ZERORETEND3.3MCS-51单片机的指令系统3.3.5位操作类指令
包括位变量传送、逻辑运算、控制转移等指令,共17
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年低压电工操作证理论考试练习题及答案
- 服装加工厂裁剪设备安全防护方案
- 梅尼埃病限盐饮水量化管理共识
- 2026学年广东省河源市五年级语文期末深度自测快速提分题(详细参考解析)详细答案和解析
- 2026年畜牧兽医考试题库及答案
- OC岗位综合考核试题及详细答案
- 2027届江苏省句容市数学八上期末联考模拟试题含解析
- 职业健康促进企业创建实施方案
- 儿童共同性斜视随访观察指南(2026版)
- 液压管路预制酸洗操作工规程
- 洋葱根尖细胞有丝分裂研究
- 2025年05月内蒙古锡林郭勒盟盟直事业单位引进急需紧缺人才85人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- DB31-T 983-2016 热固改性聚苯板节能与安全技术要求
- DB45T 1942-2019 汽车加油站职业卫生管理规范
- 九宫数独200题(附答案全)
- (正式版)JTT 382-2024 内河运输船舶评价指标
- (高清版)DZT 0004-2015 重力调查技术规范(150 000)
- 变应性支气管肺曲霉病诊治专家-共识(2022年修订版)解读
- 第2章 CR400AF动车组司机室设备操作《复兴号动车组司机操作及整备》教学课件
- 高二上学期第一次月考总结班会课件
- 金融实习证明
评论
0/150
提交评论