第三章 MCS-51 单片机指令系统_第1页
第三章 MCS-51 单片机指令系统_第2页
第三章 MCS-51 单片机指令系统_第3页
第三章 MCS-51 单片机指令系统_第4页
第三章 MCS-51 单片机指令系统_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、指令字长指令字长指存储这条指令所占的存储单元的个数。指存储这条指令所占的存储单元的个数。指令字长有单字节、双字节和三字节三种。指令字长有单字节、双字节和三字节三种。例:例:RETRET;单字节指令;单字节指令 (00100010B 22H00100010B 22H) 例:例:MOV AMOV A,#0FH#0FH;双字节指令;双字节指令 机器周期:机器周期: 例:例:f=12MHZf=12MHZ、 T=1usT=1us指令周期:执行一条指令所需的时间。指令周期:执行一条指令所需的时间。 (1(1个机器周期个机器周期) )例:例:MOV 55HMOV 55H,#0AH#0AH;三字节指令;三字节

2、指令 例:例:MUL ABMUL AB;乘法指令,是单字节指令,但指令乘法指令,是单字节指令,但指令周期为周期为4 4个机器周期。个机器周期。 指令字节数越多,所占存储单元越多,但指令周指令字节数越多,所占存储单元越多,但指令周期并不与指令所占字节数成比例。期并不与指令所占字节数成比例。寻址方式是指寻址方式是指CPUCPU寻找操作数或操作数地址的方法。寻找操作数或操作数地址的方法。一、立即寻址一、立即寻址 操作数为立即数。立即数前加操作数为立即数。立即数前加“#”#”,以区别地址,以区别地址例:例:MOV AMOV A,#7AH#7AH; 7AH 7AH (A A) MOV DPTRMOV D

3、PTR,#1234H#1234H;12H 12H (DPHDPH),),34H 34H (DPLDPL) 二、直接寻址二、直接寻址指令中直接给出操作数所在的单元地址或位地址指令中直接给出操作数所在的单元地址或位地址1 1、可访问的存储空间、可访问的存储空间u 内部内部RAMRAM低低128128单元(单元(00H-7FH00H-7FH)例:例:MOV AMOV A,70H70H; (70H70H) (A A)凡以字母凡以字母A-FA-F开头的十六进制数均需加前导开头的十六进制数均需加前导0 0。 例:例:MOV AMOV A,0D0H0D0H; (0D0H0D0H) (A A) MOV A M

4、OV A,PSWPSW; (PSWPSW) (A A)u 特殊功能寄存器区,可以单元地址,也可用寄存特殊功能寄存器区,可以单元地址,也可用寄存器符号形式。(器符号形式。(A A,ABAB,DPTRDPTR除外)除外)u 211 211个位地址空间个位地址空间。 内部内部RAMRAM中可位寻址的中可位寻址的20H-2FH20H-2FH对应的对应的128128个位地址个位地址和和1111个个SFRSFR中中8383个可用的位地址空间个可用的位地址空间 例:例:MOV AMOV A,30H30H;30H30H是单元地址是单元地址 例:例:MOV CMOV C,30H30H;30H30H是位地址是位地

5、址 三、寄存器寻址三、寄存器寻址 指令中的操作数在寄存器中。指令中的操作数在寄存器中。寻址范围:寻址范围:1 1、四组工作寄存器、四组工作寄存器R0-R7R0-R7共共3232个工作寄存器个工作寄存器 例:例:MOV AMOV A,R0R0;(;(R0R0) (A A) 2 2、特殊功能寄存器中有:、特殊功能寄存器中有:A A,ABAB,DPTRDPTR,CYCY 寄存器寄存器B B只有在执行只有在执行乘除法乘除法指令时,才是寄存指令时,才是寄存器寻址方式。器寻址方式。四、寄存器间接寻址四、寄存器间接寻址 间接寻址是指某一间接寻址是指某一寄存器的内容寄存器的内容作为操作数的作为操作数的地址地址

6、。该地址指定的单元内容作为被寻找的操作数。该地址指定的单元内容作为被寻找的操作数。MCS-51MCS-51用于间接寻址的寄存器有用于间接寻址的寄存器有R0R0、R1R1、堆栈指针、堆栈指针SPSP、数据指针数据指针DPTR DPTR 1 1、内部、内部RAMRAM低低128128单元,地址范围单元,地址范围00H-7FH00H-7FH,用,用RiRi(i=0i=0、1 1)和和SPSP作为间址寄存器作为间址寄存器例:例:(R0)=30H(R0)=30H,(30H)=20H(30H)=20H MOV A MOV A,R0R0; 结果:(结果:(A A)=20H=20H; 2 2、 与与P2P2口

7、配合,用口配合,用RiRi指示低指示低8 8位地址,可寻址片外数位地址,可寻址片外数据存储器或据存储器或I/OI/O的的64K64K区域。区域。 例:(例:(P2P2)=20H =20H ,(,(R0)=10H,(2010H)=30H R0)=10H,(2010H)=30H MOVX A, MOVX A, R0;R0;结果:(结果:(A A)=30H =30H 3 3、 DPTR DPTR 间接寻址寄存器,可寻址片外程序存储器、间接寻址寄存器,可寻址片外程序存储器、数据存储器、数据存储器、I/OI/O的的64KB64KB区域。区域。 例:(例:(DPTRDPTR)=4000H=4000H,(,

8、(4000H4000H)=50H=50H MOVX A, MOVX A, DPTR; DPTR; 结果:(结果:(A A)=50H =50H 寄存器间接寻址方式不能用于对特殊功能寄存器间接寻址方式不能用于对特殊功能寄存器区寄存器区SFRSFR的寻址。的寻址。 例:例:MOV R0MOV R0,#0F0H#0F0H; MOV AMOV A,R0R0; 以上指令不能执行,因为以上指令不能执行,因为0F0H0F0H为特殊功能寄存器为特殊功能寄存器B B的单元地址,的单元地址,而对特殊功能寄存器只能直接寻址,而对特殊功能寄存器只能直接寻址,不能间接寻址。不能间接寻址。 五五 基址加变址寄存器间接寻址(

9、变址寻址)基址加变址寄存器间接寻址(变址寻址) 变址寻址是以数据指针变址寻址是以数据指针DPTRDPTR或程序指针或程序指针PCPC作为基作为基址寄存器,以累加器址寄存器,以累加器A A作为变址寄存器,并以两者内作为变址寄存器,并以两者内容相加形成新的容相加形成新的1616位地址作为操作数地址,再寻址该位地址作为操作数地址,再寻址该地址,读取数据。地址,读取数据。 变址寻址指令:变址寻址指令:MOVC AMOVC A,A+PCA+PC MOVC A MOVC A,A+DPTR A+DPTR 37H 37H 例:(例:(A A)=50H=50H,(,(PCPC)=3F00H=3F00H,(,(3

10、F51H3F51H)=37H=37H MOVC A MOVC A,A+PC ;A+PC ; (A)=? (A)=? 变址寻址方式只能对变址寻址方式只能对程序存储器进行寻址程序存储器进行寻址,因此只能用于读取数据,而不能用于存放数据,因此只能用于读取数据,而不能用于存放数据,它主要用于查表性质的访问。它主要用于查表性质的访问。 六六 相对寻址相对寻址 它以它以PCPC值加上指令中给出的相对偏移量(值加上指令中给出的相对偏移量(rel)rel)形成转形成转移地址。相对偏移量是一个带符号的移地址。相对偏移量是一个带符号的8 8位二进制数,位二进制数,以补码形式出现。以补码形式出现。 相对转移指令满足

11、条件后相对转移指令满足条件后, , 转移的地址(一般称为目转移的地址(一般称为目的地址)的地址) 目的地址目的地址 = = 当前当前PCPC值值 + rel + rel = = 源地址源地址 + + 转移指令字节数转移指令字节数 + rel+ rel例如:例如: JZ 08HJZ 08H 累加器累加器A A为零条件满足后为零条件满足后, , 从源地址(从源地址(2050H2050H)分别)分别向下、向下、 向上转移向上转移1010个单元。个单元。例:例:rel=75H ,CY=1rel=75H ,CY=12002H:JC rel;(2002H:JC rel;(如如CY=1CY=1,则跳转到,则

12、跳转到PC+relPC+rel处去执行程序处去执行程序) 结果结果: :程序转向(程序转向(PCPC)+2+rel=2002H+2+75H=2079H+2+rel=2002H+2+75H=2079H单元去执行单元去执行 相对寻址用于访问程序存储器,只出现在相对寻址用于访问程序存储器,只出现在转移转移指令指令中。寻址不是寻找操作数的地址,而是要得到中。寻址不是寻找操作数的地址,而是要得到程序跳转程序跳转地址地址PCPC值值。 七七 位寻址位寻址 1 1、位寻址范围:、位寻址范围: 内部内部RAMRAM的位寻址区,的位寻址区,单元地址为:单元地址为:20H-2FH20H-2FH,位,位地址为:地址

13、为:00H-7FH00H-7FH ;特殊功能寄存器;特殊功能寄存器SFRSFR可供位寻址可供位寻址的专用寄存器的专用寄存器1111个,实用个,实用位地址位地址8383位位。 2 2、位地址在指令中的、位地址在指令中的4 4种表达方式种表达方式 2.1 2.1 直接使用位地址直接使用位地址 MOV C MOV C,0D6H0D6H; 2.2 2.2 位名称表示法位名称表示法 MOV C MOV C,ACAC; 2.3 2.3 单元地址加位的表示法单元地址加位的表示法 MOV C MOV C,0D0H.6; 0D0H.6; 2.4 2.4 专用寄存器符号加位的表示法专用寄存器符号加位的表示法 MO

14、V C MOV C,PSW.6PSW.6 表表31 7 种寻址方式及使用空间种寻址方式及使用空间 3 MCS-51单片机指令系统单片机指令系统A A累加器。累加器。 B B寄存器寄存器, , 用于用于MULMUL和和DIVDIV指令中。指令中。 C C进位标志或进位位。进位标志或进位位。 间接寻址寄存器或基址寄存器的前缀间接寻址寄存器或基址寄存器的前缀, , 如如Ri,DPTRRi,DPTR。 / /位操作数的前缀位操作数的前缀, , 表示对该位取反。表示对该位取反。 (X X) X X中的内容。中的内容。 (X X)由由X X寻址的单元中的内容。寻址的单元中的内容。 箭头左边的内容被箭头右边

15、的内容所代箭头左边的内容被箭头右边的内容所代RnRn寄存器区中的寄存器区中的8 8个工作寄存器个工作寄存器R0R0R7, R7, 即即n=0n=07 7。RiRi寄存器区中的寄存器区中的2 2个寄存器个寄存器R0R0、R1, i=0R1, i=0、1 1。directdirect88位内部位内部RAMRAM单元的地址。单元的地址。datadata指令中的指令中的8 8位常数。位常数。 data16data16指令中的指令中的1616位常数。位常数。 addr16addr161616位的目的地址位的目的地址, , 用于用于LJMP, LCALLLJMP, LCALL指令。指令。addr11add

16、r111111位的目的地址位的目的地址, , 用于用于AJMP, ACALLAJMP, ACALL指令。指令。relrel 8 8位带符号的偏移量字节位带符号的偏移量字节, , 用于用于SJMPSJMP和所有条和所有条 件转移指令中,在件转移指令中,在128128+127+127范围内取。范围内取。bitbit内部数据内部数据RAM(RAM(特殊功能寄存器特殊功能寄存器) )的直接寻址位。的直接寻址位。 DPTRDPTR数据指针数据指针, , 可用作可用作 16 16 位的地址寄存器。位的地址寄存器。 一、数据传送指令一、数据传送指令 1 1 内部数据传送指令(内部数据传送指令(MOVMOV)

17、 指令格式:指令格式:MOV MOV 目的操作数,目的操作数, 指令的源操作数和目的操作数,可以是片内指令的源操作数和目的操作数,可以是片内RAMRAM地地址,也可以是特殊功能寄存器址,也可以是特殊功能寄存器SFRSFR的地址。的地址。 指令的功能是把源操作数指定的字节变量复制到目指令的功能是把源操作数指定的字节变量复制到目的操作数所规定的单元或寄存器中,的操作数所规定的单元或寄存器中,源字节不变。源字节不变。 1.1 1.1 立即数传送指令立即数传送指令 源操作数为立即数源操作数为立即数 八位立即数传送指令:八位立即数传送指令: MOV AMOV A,#DATA#DATA; DATADATA

18、 (A A) 例:例:MOV AMOV A,#02H#02H; MOV RnMOV Rn,#DATA#DATA; DATADATA (RnRn) n=0-7n=0-7 例:例:MOV RMOV R3 3,#02H#02H; 例:例:MOV 30HMOV 30H,#02H#02H; MOV MOV RiRi,#DATA#DATA; DATADATA ((Ri(Ri)) ) i=0i=0,1 1 例:例:MOV MOV R1R1,#02H#02H; MOV directMOV direct,#DATA#DATA; DATADATA (direct)direct) 立即数的高八位送立即数的高八位送D

19、PHDPH,低八位送,低八位送DPLDPL。 例例:(:(R0R0)=30H=30H,求,求A A,R4R4,30H30H,31H31H的内容的内容 MOV AMOV A,#10H#10H;MOV R4MOV R4,#36H#36H;MOV MOV R0R0,#7AH#7AH;MOV 31HMOV 31H,#01H#01H; 1616位立即数传送指令位立即数传送指令 MOV DPTRMOV DPTR,#DATA16#DATA16; (A A)=10H =10H (R4R4)=36H =36H (30H30H)=7AHH =7AHH (31H31H)=01H =01H 例:例:MOV DPTRM

20、OV DPTR,#2500H#2500H; 结果:(结果:(DPTRDPTR)=2500H=2500H,(,(DPHDPH)=25H=25H,(,(DPLDPL)=00H=00H1.2 1.2 内部数据存储器与累加器内部数据存储器与累加器A A之间传送数据之间传送数据 MOV AMOV A,Rn;(Rn) (A),n=0-7Rn;(Rn) (A),n=0-7 MOV RnMOV Rn,A;(A) (Rn),n=0-7A;(A) (Rn),n=0-7 MOV AMOV A,Ri;Ri;((Ri)(Ri)) (A),i=0,1(A),i=0,1 MOV MOV RiRi,A;A;(A A) ((R

21、i)(Ri)),i=0,1,i=0,1 MOV AMOV A,direct;direct;(directdirect) (A)(A) MOV directMOV direct,A;(A) A;(A) (direct)direct) 例例:(A)=40H,(40H)=42H:(A)=40H,(40H)=42HMOV R0,A;MOV R0,A;MOV A, MOV A, R0R0 ; ; MOV 30HMOV 30H,A A;求(求(30H30H)= =? (R0R0)=40H =40H (A A)=42H=42H(30H30H)=42H =42H MOV directMOV direct,Rn

22、;(Rn) (direct),n=0-7Rn;(Rn) (direct),n=0-7 MOV RnMOV Rn,direct;(direct) (Rn),n=0-7direct;(direct) (Rn),n=0-7 MOV directMOV direct,Ri;Ri;((Ri)(Ri)) (direct),i=0,1(direct),i=0,1 MOV MOV RiRi,direct;direct;(directdirect) ((Ri)(Ri)),i=0,1,i=0,1 MOV direct2MOV direct2,direct1;direct1;(direct1direct1) (di

23、rect2),(direct2), 1.3 1.3 内部内部RAMRAM中中Rn,SFRRn,SFR与片内与片内RAMRAM之间的数据传送之间的数据传送 例:设内部例:设内部RAMRAM中中30H30H单元的内容为单元的内容为40H40H,40H40H单元的内单元的内容为容为10H10H,P1P1口作输入口,输入数据为口作输入口,输入数据为0CAH0CAH。求。求R0R0,R1R1,A A,B B,40H40H,P2P2各单元中的内容。各单元中的内容。 MOV R0MOV R0,#30H#30H;MOV AMOV A,R0R0;MOV R1MOV R1,A A;MOV BMOV B,R1R1;

24、MOV MOV R1R1,P1P1;MOV P2MOV P2,P1P1; (R0R0)=30H =30H (A A)=40H =40H (R1R1)=40H =40H (B B)=10H =10H (40H40H)=0CAH =0CAH (P2P2)=0CAH =0CAH 1.4 1.4 内部数据传送指令的使用内部数据传送指令的使用 DirectDirect直接地址直接地址 RiRi间接地址间接地址 RnRn 寄存器寄存器 #data #data立即数立即数 A A 累加器累加器 例:例:MOV MOV R1R1,R3R3; 2 2 外部数据存储器(或外部数据存储器(或I/OI/O)的读写指令

25、)的读写指令 2.1 2.1 用用DPTRDPTR进行间接寻址的指令进行间接寻址的指令 MOVX A, MOVX A, DPTRDPTR; ((DPTR)(DPTR) (A)(A) MOVX MOVX DPTR,ADPTR,A; (A)A) (DPTR)(DPTR) DPTR DPTR为为1616位数据指针,该指令可寻址外部位数据指针,该指令可寻址外部RAM64KRAM64K范围(范围(0000H-0FFFFH0000H-0FFFFH),地址低),地址低8 8位由位由P0P0口输出,地址口输出,地址高高8 8位由位由P2P2口输出,数据通过口输出,数据通过P0P0口读入或写出。口读入或写出。

26、2.2 2.2 用用RiRi进行间接寻址的指令进行间接寻址的指令 MOVX A, MOVX A, RiRi; ((Ri)(Ri) (A)(A) MOVX MOVX Ri,ARi,A; (A)A) (DPTR)(DPTR) 说明:若外部扩展说明:若外部扩展RAMRAM小于等于小于等于256256单元,用单元,用RiRi间接间接寻址进行数据传送,寻址进行数据传送,8 8位地址线足够使用。位地址线足够使用。 若外部扩展较大的若外部扩展较大的RAMRAM区域,须用区域,须用P2P2口输出高口输出高8 8位位地址,用地址,用RiRi表示低八位地址,表示低八位地址,P0P0口分时作低口分时作低8 8位地址

27、位地址线和数据线,线和数据线,P2P2口应事先预置。口应事先预置。 例:若外部例:若外部RAMRAM中,(中,(20FFH20FFH)=30H=30H,(,(2100H2100H)=15H=15H(2000H2000H)=10H=10H,求,求A A中的内容中的内容 MOV DPTRMOV DPTR,#20FFH#20FFH;INC DPTRINC DPTR;MOVX AMOVX A,DPTRDPTR; 结果:(结果:(A A)=15H =15H MOV P2MOV P2,#20H#20H;MOV R0MOV R0,#0FFH#0FFH; INC R0INC R0;MOVX AMOVX A,R

28、0R0; 结果:(结果:(A A)=10H =10H 外部外部RAMRAM之间不能直接传送数据,必须通过累加器之间不能直接传送数据,必须通过累加器A A传送传送 例:例:MOVX 2000HMOVX 2000H,2001H2001H; 3 3 程序存储器与累加器程序存储器与累加器A A传送数据指令传送数据指令 MOVC A, MOVC A, A+DPTRA+DPTR; ((A)+(DPTR)(A)+(DPTR) (A)(A) MOVC A,MOVC A,A+PCA+PC; (A)+(PC)(A)+(PC) (A)(A) 指令功能是把累加器指令功能是把累加器A A作为变址寄存器,将其中的作为变址

29、寄存器,将其中的内容与基址寄存器(内容与基址寄存器(DPTRDPTR、PCPC)内容相加,得到程序)内容相加,得到程序存储器某单元地址,再把该地址单元内容送累加器存储器某单元地址,再把该地址单元内容送累加器A A。例:已知累加器例:已知累加器A A中有一个中有一个0-90-9范围内的数,用查表指范围内的数,用查表指令编出能查出该数平方值的程序。设平方表表头的地令编出能查出该数平方值的程序。设平方表表头的地址为址为2000H2000H。 MOV DPTRMOV DPTR,#2000H#2000H;MOVC AMOVC A,A+DPTRA+DPTR;2000H2000H:DB 0DB 02001H

30、2001H:DB 1DB 12002H2002H:DB 4DB 42003H2003H:DB 9DB 92009H2009H:DB 81DB 811FFBH1FFBH:ADD AADD A,# #02H02H;1FFDH1FFDH:MOVC AMOVC A,A+PCA+PC;1FFEH1FFEH:2000H2000H:DB 0DB 02001H2001H:DB 1DB 12002H2002H:DB 4DB 42003H2003H:DB 9DB 92009H2009H:DB 81DB 81修正量修正量= =表头首地址表头首地址-PC-PC当前值当前值=2000H-1FFEH=02H =2000H

31、-1FFEH=02H 例例: :(1)(1)片内片内RAM40HRAM40H单元内容送至片外单元内容送至片外50H50H单元单元; ; (2) (2)片外片外RAM2350HRAM2350H单元内容送片内单元内容送片内41H41H单元。单元。MOV AMOV A,40H40H;MOV P2MOV P2,#00H#00H;MOV R0MOV R0,#50H#50H;MOVX MOVX R0R0,A A; MOV P2MOV P2,#23H#23H;MOV R0, #50HMOV R0, #50HMOVX AMOVX A,R0R0; MOV 41HMOV 41H,A A; 4 4 堆栈及堆栈指令堆

32、栈及堆栈指令 4.1 4.1 堆栈的功能堆栈的功能 计算机在执行计算机在执行子程序子程序或或中断服务程序时中断服务程序时, ,为了既为了既能在子程序中或中断服务程序中使用寄存单元,又能能在子程序中或中断服务程序中使用寄存单元,又能保证在返回主程序之后恢复寄存单元的原有内容,保证在返回主程序之后恢复寄存单元的原有内容,CPUCPU在执行中断服务之前要进行保护现场。在执行中断服务之前要进行保护现场。断点和现断点和现场的内容保存在堆栈中。场的内容保存在堆栈中。 4.24.2 堆栈指针堆栈指针SPSP 数据写入堆栈称为数据写入堆栈称为入栈入栈,数据从堆栈中读出称为,数据从堆栈中读出称为出栈出栈堆栈的最

33、大特点就是堆栈的最大特点就是“后进先出后进先出”。 4.3 4.3 堆栈操作指令堆栈操作指令 进栈指令用于保护片内某个单元的内容,出栈指进栈指令用于保护片内某个单元的内容,出栈指令用于恢复片内某个单元的内容。令用于恢复片内某个单元的内容。 PUSH directPUSH direct;(SPSP)+1 +1 (SPSP),(),(directdirect) ( ((SPSP)) ) POP directPOP direct;((SP)(SP)) (directdirect),(SP,(SP)-1 (SP) -1 (SP) 利用堆栈实现利用堆栈实现30H30H和和40H40H单元的数据交换。单元

34、的数据交换。 MOV SPMOV SP,#50H#50H;PUSH 40HPUSH 40H;PUSH 30HPUSH 30H;POP 40HPOP 40H;POP 30HPOP 30H; (SPSP)=50H =50H (SPSP)=51H=51H,(,(51H51H)=04H =04H (SPSP)=52H=52H,(,(52H52H)=03H =03H (40H40H)=03H =03H ,(,(SPSP)=51H =51H (30H30H)=04H =04H ,(,(SPSP)=50H =50H 使用栈操作指令,应注意指令操作码后紧跟直接地使用栈操作指令,应注意指令操作码后紧跟直接地址,

35、要注意书写格式。如:址,要注意书写格式。如:PUSH ACCPUSH ACC;POP ACC POP ACC 已知:(已知:(30H30H)=03H=03H,(,(40H40H)=04H=04H。 功能:功能:5 5 数据交换指令数据交换指令 5.1 5.1 整字节交换指令整字节交换指令 XCH AXCH A,RnRn;(;(RnRn) (A A) XCH AXCH A,RiRi;(;((Ri)(Ri)) (A A) XCH AXCH A,directdirect;(;(directdirect) (A A) 例:例:XCH AXCH A,R1R1; XCH A, 30HXCH A, 30H。

36、MOV P2, #00H;MOV P2, #00H;MOV R1MOV R1,#20H#20H;MOVX AMOVX A,R1R1;(R1R1)=20H =20H (A A)=X =X (A A)=Y=Y,内,内RAMRAM(20H20H)=X =X 外外RAMRAM(20H)=Y 20H)=Y XCH AXCH A,R1R1;MOVX MOVX R1R1,A A; 例:已知外部例:已知外部RAMRAM的的20H20H单元中有一个数单元中有一个数X X,内部,内部RAMRAM的的20H20H单元中有一个数单元中有一个数Y Y,试利用字节交换指令编出,试利用字节交换指令编出可以使它们互相交换的程

37、序。可以使它们互相交换的程序。5.2 5.2 低半字节交换指令低半字节交换指令 XCHD AXCHD A,RiRi;(;((Ri)(Ri))0-30-3 (A A)0-3 0-3 累加器累加器A A低四位与片内低四位与片内RAMRAM某单元的低四位交换,某单元的低四位交换,高四位不变。高四位不变。 例:(例:(R1R1)=30H=30H,(,(A A)=67H=67H,(,(30H30H)=84H=84H XCHD A XCHD A,R1R1; 结果:(结果:(A A)=64H=64H,(,(30H30H)=87H=87H5.3 5.3 累加器累加器A A高低半字节交换指令高低半字节交换指令S

38、WAP ASWAP A;(;(A A)0-30-3 (A A)4-74-7 例:设(例:设(A A)=0F7H=0F7H SWAP A SWAP A;结果:(结果:(A A)=7FH=7FH例:已知外部例:已知外部RAM2020HRAM2020H单元有一个数单元有一个数X X,内部,内部RAM20HRAM20H单单元有一个数元有一个数Y Y,试编出可以使它们互相交换的程序。,试编出可以使它们互相交换的程序。MOV P2MOV P2,#20H#20H;MOV R1MOV R1,#20H#20H;MOVX AMOVX A,R1R1; XCH AXCH A,R1R1; MOVX MOVX R1R1,

39、A A; MOV DPTRMOV DPTR,#2020H#2020H;MOVX AMOVX A,DPTRDPTR; XCH AXCH A,20H20H; MOVX MOVX DPTRDPTR,A A; 例:已知片内例:已知片内50H50H单元中有一个单元中有一个0-90-9的数,试编程把它的数,试编程把它变为相应的变为相应的ASCIIASCII码。码。MOV R0MOV R0,#50H#50H;MOV AMOV A,#30H#30H; XCHD AXCHD A,R0R0; MOV MOV R0R0,A A; 表32 数据传送类指令助记符与操作 二、算术运算指令二、算术运算指令1 1 加法指令加

40、法指令 ADD AADD A,Rn;(Rn)+Rn;(Rn)+(A A) (A),n=0-7(A),n=0-7 ADD AADD A,Ri;Ri;((Ri)(Ri))+ +(A A) (A),i=0,1(A),i=0,1 ADD AADD A,direct;direct;(directdirect)+ +(A A) (A)(A) ADD AADD A,#DATA;(A)+DATA #DATA;(A)+DATA (A)A) 1.1 1.1 不带进位的加法指令不带进位的加法指令 参加运算的两个操作数都是参加运算的两个操作数都是8 8位二进制数,操作位二进制数,操作结果也是一个结果也是一个8 8位二

41、进制数,且对位二进制数,且对PSWPSW中的标志位中的标志位(CYCY,ACAC,OVOV,P P)产生影响。)产生影响。ADDC AADDC A,Rn;(Rn)+Rn;(Rn)+(A A)+ +(CYCY) (A),n=0-7(A),n=0-7 ADDC AADDC A,Ri;Ri;((Ri)(Ri))+ +(A A)+ +(CYCY) (A),i=0,1(A),i=0,1 ADDC AADDC A,direct;direct;(directdirect)+ +(A A)+ +(CYCY) (A)(A) ADDC AADDC A,#DATA;(A)+DATA+#DATA;(A)+DATA+(

42、CYCY) (A)A) 1.2 1.2 带进位的加法指令带进位的加法指令 带进位加法运算指令常用于多字节加法运算,结带进位加法运算指令常用于多字节加法运算,结果对果对PSWPSW中的标志位(中的标志位(CYCY,ACAC,OVOV,P P)产生影响。)产生影响。SUBB ASUBB A,Rn;(A)-Rn;(A)-(RnRn)- -(CYCY) (A),n=0-7(A),n=0-7 SUBB ASUBB A,Ri;Ri;(A A)- -((Ri)(Ri))- -(CYCY) (A),i=0,1(A),i=0,1 SUBB ASUBB A,direct;direct;(A A)- -(direc

43、tdirect)- -(CYCY) (A)(A) SUBB ASUBB A,#DATA;(A)-DATA-#DATA;(A)-DATA-(CYCY) (A)A) 2 2 带借位的减法指令带借位的减法指令 结果对结果对PSWPSW中的标志位(中的标志位(CYCY,ACAC,OVOV,P P)产生影响。)产生影响。INC A;(A)+1 (A)INC A;(A)+1 (A) INC RnINC Rn,(,(RnRn)+1 (Rn),n=0-7+1 (Rn),n=0-7 INC direct;INC direct;(directdirect)+1 (direct)+1 (direct) INC IN

44、C Ri;Ri;((Ri)(Ri))+1 +1 ((Ri)(Ri)),i=0,1,i=0,1 INC DPTR;INC DPTR;(DPTRDPTR)+1 (DPTR),+1 (DPTR), 3 3 加加1 1指令指令 例:设例:设20H20H、21H21H单元存放一个单元存放一个1616位二进制数位二进制数X1X1(高(高8 8位存于位存于21H21H单元),单元),30H30H、31H31H单元存放另一个单元存放另一个1616位二位二进制数进制数X2X2(高(高8 8位存于位存于31H31H单元),求单元),求X1+X2X1+X2,和存于,和存于20H20H和和21H21H。设两数之和不超

45、过。设两数之和不超过1616位。位。 MOV R0MOV R0,#20H#20H;MOV R1MOV R1,#30H#30H;MOV AMOV A,R0R0;ADD AADD A,R1R1;MOV MOV R0R0,A A;INC R0INC R0;INC R1INC R1;MOV AMOV A,R0R0;ADDC AADDC A,R1R1;MOV MOV R0R0,A A;DEC A;(A)-1 (A)DEC A;(A)-1 (A) DEC RnDEC Rn,(,(RnRn)-1 (Rn),n=0-7-1 (Rn),n=0-7 DEC direct;DEC direct;(directdir

46、ect)-1 (direct)-1 (direct) DEC DEC Ri;Ri;((Ri)(Ri))-1 -1 ((Ri)(Ri)),i=0,1,i=0,1 4 4 减减1 1指令指令 例:试分析执行程序后,例:试分析执行程序后,R1R1,7EH7EH,7FH7FH各单元的内容各单元的内容 MOV R1MOV R1,#7FH#7FH;MOV 7EHMOV 7EH,#00H#00H;MOV 7FHMOV 7FH,#40H#40H;DEC DEC R1R1;DEC R1DEC R1;DEC DEC R1R1; (R1R1)=7FH=7FH (7EH7EH)=00H=00H (7FH7FH)=40

47、H=40H (7FH7FH)=3FH=3FH (R1R1)=7EH=7EH (7EH7EH)=0FFH=0FFH 5 5 乘法指令乘法指令 MUL AB MUL AB 指令功能是把累加器指令功能是把累加器A A和寄存器和寄存器B B中两个中两个8 8位无符号数位无符号数相乘,积的高八位存在相乘,积的高八位存在B B寄存器中,积的低八位存在寄存器中,积的低八位存在累加器累加器A A中。中。 运算结果对运算结果对CYCY、OVOV、P P标志位产生影响:标志位产生影响:进位标志位进位标志位CYCY总是清总是清“0”0”;P P标志仍为累加器标志仍为累加器A A的奇偶校验位;的奇偶校验位;当积大于当

48、积大于255255(B B中的内容不为中的内容不为0 0),则),则OV=1OV=1,否则,否则OV=0 OV=0 例:设(例:设(A A)=90H=90H,(,(B B)=62H=62H MUL AB MUL AB; 结果:(结果:(A A)=20H=20H,(,(B B)=37H=37H,OV=1OV=1,CY=0CY=0,P=1 P=1 6 6 除法指令除法指令 DIV AB DIV AB 指令功能是把累加器指令功能是把累加器A A中中8 8位无符号整数除以寄存器位无符号整数除以寄存器B B中中8 8位无符号整数,所得商存在位无符号整数,所得商存在A A中,余数存在中,余数存在B B中。

49、中。 运算结果对运算结果对CYCY、OVOV、P P标志位产生影响:标志位产生影响:进位标志位进位标志位CYCY总是清总是清“0”0”;P P标志仍为累加器标志仍为累加器A A的奇偶校验位;的奇偶校验位;当除数为当除数为0 0时,除法没有意义,则时,除法没有意义,则OV=1OV=1,否则,否则OV=0 OV=0 例:设(例:设(A A)=65H=65H,(,(B B)=14H=14H DIV AB DIV AB; 结果:(结果:(A A)=05H=05H,(,(B B)=01H=01H,OV=0OV=0,CY=0CY=0,P=0 P=0 6 6 二二- -十进制调整指令十进制调整指令 DA A

50、DA A; 调整规律如下:调整规律如下:若若AC=1AC=1或(或(A A)0-3 0-3 9 9,则(,则(A A)+06H +06H (A A););若若CY=1CY=1或(或(A A)4-7 4-7 9 9,则(,则(A A)+60H +60H (A A););该指令用于压缩该指令用于压缩BCDBCD码加法运算的十进制调整,使用码加法运算的十进制调整,使用时应注意几点:时应注意几点:本指令使用时跟在本指令使用时跟在ADDADD或或ADDCADDC后;后;不能用不能用DADA指令对指令对BCDBCD码减法操作进行直接调整;码减法操作进行直接调整;本指令不影响溢出标志位本指令不影响溢出标志位

51、OVOV; 例:执行下列程序后,求例:执行下列程序后,求30H30H、A A单元的内容单元的内容MOV AMOV A,#85H#85H;ADD AADD A,#59H#59H;DA ADA A;MOV 30HMOV 30H,A A;CLR ACLR A;ADDC AADDC A,#00H#00H;(A A)=85H=85H(A A)=DEH=DEH(A A)=44H=44H(30H30H)=44H=44H(A A)=00H=00H(A A)=01H=01H三、三、 逻辑运算指令逻辑运算指令 1 1 逻辑与运算指令逻辑与运算指令 ANL AANL A,Rn;(Rn) Rn;(Rn) (A A)

52、(A),n=0-7(A),n=0-7 ANL AANL A,direct;(direct) direct;(direct) (A) (A)(A) (A) ANL AANL A,Ri;Ri;((Ri)(Ri))(A) (A),i=0,1(A) (A),i=0,1 ANL A,#DATA;ANL A,#DATA;(A A)DATA DATA (A A) ANL directANL direct,A;A;(directdirect)(A) (A) (directdirect) ANL directANL direct,#DATA;(direct) #DATA;(direct) DATA DATA (

53、direct),direct), 例:(例:(R0R0)=30H=30H,(,(30H30H)=0AAH=0AAH,执行如下指令后累,执行如下指令后累加器加器A A和和30H30H单元中的内容是什么?单元中的内容是什么?MOV AMOV A,#0FFH#0FFH;ANL AANL A,R0R0; 结果:(结果:(A A)=30H=30H,(,(30H30H)=0AAH=0AAH MOV AMOV A,#0FH#0FH;ANL AANL A,30H30H; 结果:结果:(A)=0AH,(30H)=0AAH(A)=0AH,(30H)=0AAH 逻辑与指令主要用于从某个存储单元取出某几位逻辑与指令主

54、要用于从某个存储单元取出某几位而把其他位变而把其他位变“0”0”。2 2 逻辑或运算指令逻辑或运算指令 ORL AORL A,Rn;(Rn) Rn;(Rn) (A A) (A),n=0-7(A),n=0-7 ORL AORL A,direct;(direct) direct;(direct) (A) (A)(A) (A) ORL AORL A,Ri;Ri;((Ri)(Ri)) (A) (A),i=0,1(A) (A),i=0,1 ORL A,#DATA;ORL A,#DATA;(A A)DATA DATA (A A) ORL directORL direct,A;A;(directdirect

55、) (A) (A) (directdirect) ORL directORL direct,#DATA;(direct) #DATA;(direct) DATA DATA (direct),direct), 逻辑或指令可用于对某个存储单元,使其中某些逻辑或指令可用于对某个存储单元,使其中某些位变为位变为“1”1”,而其余位不变。,而其余位不变。 例:设(例:设(A A)=0AAH=0AAH,(,(P1P1)=0FFH=0FFH,试编程把累加器,试编程把累加器A A中低四位送中低四位送P1P1口低四位,口低四位,P1P1口高四位不变。口高四位不变。 MOV R0MOV R0,A A; ANL A

56、ANL A,#0FH#0FH;ANL P1ANL P1,#0F0H#0F0H;ORL P1ORL P1,A A; MOV AMOV A,R0R0; (R0R0)=0AAH=0AAH (A A)=0AH=0AH (P1P1)=0F0H=0F0H (P1P1)=0FAH=0FAH (A A)=0AAH=0AAH 2 2 逻辑异或运算指令逻辑异或运算指令 XRL AXRL A,Rn;(Rn) Rn;(Rn) (A A) (A),n=0-7(A),n=0-7 XRL AXRL A,direct;(direct) (A) (A)direct;(direct) (A) (A) XRL AXRL A,Ri;

57、Ri;((Ri)(Ri)) (A) (A),i=0,1(A) (A),i=0,1 XRL A,#DATA;XRL A,#DATA;(A A) DATA DATA (A A) XRL directXRL direct,A;A;(directdirect) (A) (A) (directdirect) XRL directXRL direct,#DATA;(direct) DATA #DATA;(direct) DATA (direct)direct) 逻辑或指令可用于对某个存储单元,使其中某些逻辑或指令可用于对某个存储单元,使其中某些位变反,而其余位不变。位变反,而其余位不变。 例:外例:外RA

58、MRAM(30H30H)=0AAH=0AAH,现欲令它高四位不变,现欲令它高四位不变, 低四位取反。低四位取反。 MOV R0MOV R0,#30H#30H;MOVX AMOVX A,R0R0;XRL AXRL A,#0FH#0FH;MOVX MOVX R0R0,A A;4 4 移位指令移位指令 RL ARL A;累加器左环移累加器左环移 RLC ARLC A;累加器通过累加器通过CYCY左环移左环移 RR ARR A;累加器右环移累加器右环移 RRC ARRC A;累加器通过累加器通过CYCY右环移右环移 已知已知:(A)=08H:(A)=08H RL A RL A已知已知:(A)=08H:

59、(A)=08H RR A RR A5 5 清零取反指令清零取反指令 CLR ACLR A;累加器累加器A A清清0 0 CPL ACPL A;累加器累加器A A按位取反按位取反 已知已知: M1: M1和和M1+1M1+1单元中有一个单元中有一个1616位的二进制数,位的二进制数, 通过移位实现通过移位实现* *2 2。MOV R0, #M1MOV R0, #M1MOV A, MOV A, R0 R0 RL ARL AMOV R0MOV R0,A AINC R0INC R0MOV A, R0MOV A, R0RLC ARLC AMOV R0MOV R0,A ASJMP $SJMP $1 1、

60、位传送指令位传送指令 MOV CMOV C,BIT;(BIT) BIT;(BIT) (C C)MOV BITMOV BIT,C;(C) (BIT) C;(C) (BIT) 四、四、 位操作指令位操作指令 2 2、 位变量修改指令位变量修改指令 CLR CCLR C;0 0 (C C)CLR BITCLR BIT;0 0 (BITBIT)SETB CSETB C;1 1 (C C)SETB BITSETB BIT;1 1 (BITBIT)CPL CCPL C;(;(C C) (C C)CPL BITCPL BIT;(;(BITBIT) (C C)3 3、 位逻辑运算指令位逻辑运算指令ANL CA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论