版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二、指令字长和指令周期二、指令字长和指令周期指令字长是指存储这条指令所占的存储单元的个数。指令字长是指存储这条指令所占的存储单元的个数。指令字长有单字节、双字节和三字节三种。指令字长有单字节、双字节和三字节三种。例:例:RETRET;单字节指令;单字节指令 00100010 22H 00100010 22H 例:例:MOV AMOV A,#0FH#0FH;双字节指令;双字节指令 例:例:MOV 55HMOV 55H,#0AH#0AH;三字节指令;三字节指令 机器周期:机器周期: 指令字节数越多,所占存储单元越多,但指令周期并指令字节数越多,所占存储单元越多,但指令周期并不与指令所占字节数成比例
2、。不与指令所占字节数成比例。例:例:f=12MHZ T=1usf=12MHZ T=1us指令周期:执行一条指令所需的时间。指令周期:执行一条指令所需的时间。例:例:MUL ABMUL AB;乘法指令,是单字节指令,但指令;乘法指令,是单字节指令,但指令周期为周期为4 4个机器周期。个机器周期。 凡以字母凡以字母A-FA-F开头的十六进制数均需加前导开头的十六进制数均需加前导0 0 寻址方式是指寻址方式是指CPUCPU寻找操作数或操作数地址的方法寻找操作数或操作数地址的方法一、直接寻址一、直接寻址指令中直接给出操作数所在的单元地址或位地址指令中直接给出操作数所在的单元地址或位地址1 1、可访问的
3、存储空间、可访问的存储空间1.1 1.1 内部内部RAMRAM低低128128单元(单元(00H-7FH00H-7FH)例:例:MOV AMOV A,50H50H; (50H50H) (A A) MOV A MOV A,PSWPSW; (PSWPSW) (A A)1.2 1.2 特殊功能寄存器区,可以以单元地址给出,也可特殊功能寄存器区,可以以单元地址给出,也可用寄存器符号形式给出。(用寄存器符号形式给出。(A A,ABAB,DPTRDPTR除外)除外)例:例:MOV AMOV A,70H70H; (70H70H) (A A)1.3 2111.3 211个位地址空间个位地址空间。 内部内部RA
4、MRAM中可位寻址的中可位寻址的20H-2FH20H-2FH对应的对应的128128个位地址和个位地址和1111个个SFRSFR中中8383个可用的位地址空间个可用的位地址空间 例:例:MOV AMOV A,30H30H;30H30H是单元地址是单元地址 例:例:MOV CMOV C,30H30H;30H30H是位地址是位地址 二、立即寻址二、立即寻址 操作数为立即数。立即数前加操作数为立即数。立即数前加“#”#”,以区别地址,以区别地址例:例:MOV AMOV A,#7AH#7AH; 7AH 7AH (A A) MOV DPTRMOV DPTR,#1234H#1234H;12H 12H (D
5、PHDPH),),34H 34H (DPLDPL) 三、寄存器寻址三、寄存器寻址操作数在寄存器中。操作数在寄存器中。寻址范围:寻址范围: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=
7、20H; 2 2 与与P2P2口配合,用口配合,用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 DPTR 3 DPTR 间接寻址寄存器,可寻址片外程序存储器、数间接寻址寄存器,可寻址片外程序存储器、数据存储器、据存储器、I/OI/O的的64KB64KB区域区域. . 例:(例:(DPTRDPTR)=
8、4000H=4000H,(,(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,PC=3F00HPC=3F
10、00H,(,(3F51H3F51H)=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
12、=1,则跳转到,则跳转到PC+relPC+rel处去执行程序处去执行程序) 结果结果: :程序转向(程序转向(PCPC)+2+rel=2002H+2+75H=2079H+2+rel=2002H+2+75H=2079H单元去执行单元去执行 相对寻址用于访问程序存储器,只出现在转移指相对寻址用于访问程序存储器,只出现在转移指令中。寻址不是寻找操作数的地址,而是要得到令中。寻址不是寻找操作数的地址,而是要得到程序跳转地址程序跳转地址PCPC值。值。 七七 位寻址位寻址 1 1 位寻址范围:内部位寻址范围:内部RAMRAM的位寻址区,共的位寻址区,共1616个单元的个单元的128128位,单元地址为:
13、位,单元地址为:20H-2FH20H-2FH,位地址为:,位地址为: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.
14、4 专用寄存器符号加位的表示法专用寄存器符号加位的表示法 MOV C MOV C,PSW.6PSW.6 表表31 7 种寻址方式及使用空间种寻址方式及使用空间 MCS51 MCS51单片机指令系统分为单片机指令系统分为: : 数据传送类指令、数据传送类指令、 算术运算类指令、逻辑运算及移位类指令、控制转算术运算类指令、逻辑运算及移位类指令、控制转移类指令和位操作(布尔操作)指令移类指令和位操作(布尔操作)指令5 5大类大类, , 共计共计111111条指令。现按其分类分别介绍各条指令的格式、条指令。现按其分类分别介绍各条指令的格式、 功能、对状态标志的影响以及应用。功能、对状态标志的影响以及应
15、用。 3 MCS-513 MCS-51单片机指令系统单片机指令系统AA累加器。累加器。 BB寄存器寄存器, , 用于用于MULMUL和和DIVDIV指令中。指令中。 CC进位标志或进位位。进位标志或进位位。 间接寻址寄存器或基址寄存器的前缀间接寻址寄存器或基址寄存器的前缀, , 如如Ri,DPTRRi,DPTR。 /位操作数的前缀位操作数的前缀, , 表示对该位取反。表示对该位取反。 (X X) X X中的内容。中的内容。 (X X)由由X X寻址的单元中的内容。寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所代替。箭头左边的内容被箭头右边的内容所代替。 RnRn寄存器区中的寄存器区中的
16、8 8个工作寄存器个工作寄存器R0R0R7, R7, 即即n=0n=07 7。RiRi寄存器区中的寄存器区中的2 2个寄存器个寄存器R0R0、R1, i=0R1, i=0、1 1。direct8direct8位内部位内部RAMRAM单元的地址单元的地址, , 它可以是一个内它可以是一个内部数据区部数据区RAMRAM单元单元(00H(00H7FH)7FH)或特殊功能寄存器地址或特殊功能寄存器地址datadata指令中的指令中的8 8位常数。位常数。 data16data16指令中的指令中的1616位常数。位常数。 addr1616addr1616位的目的地址位的目的地址, , 用于用于LJMP,
17、 LCALLLJMP, LCALL指令指令, , 可指向可指向64KB64KB程序存储器地址空间。程序存储器地址空间。 addr1111addr1111位的目的地址位的目的地址, , 用于用于AJMP, ACALLAJMP, ACALL指指令。目的地址必须与下一条指令的第一个字节在令。目的地址必须与下一条指令的第一个字节在同一个同一个2 KB2 KB程序存储器地址空间之内。程序存储器地址空间之内。 rel 8rel 8位带符号的偏移量字节位带符号的偏移量字节, , 用于用于SJMPSJMP和所和所有条件转移指令中。偏移量相对于下一条指令的有条件转移指令中。偏移量相对于下一条指令的第一个字节计算
18、第一个字节计算, , 在在128128+127+127范围内取范围内取bitbit内部数据内部数据RAMRAM或特殊功能寄存器中的可直接或特殊功能寄存器中的可直接寻址位。寻址位。 DPTRDPTR数据指针数据指针, , 可用作可用作 16 16 位的地址寄存器。位的地址寄存器。 一一 数据传送指令数据传送指令 1 1 内部数据传送指令(内部数据传送指令(MOVMOV) 指令格式:指令格式:MOV MOV 目的操作数,目的操作数, 指令的源操作数和目的操作数都在单片机内部。可以指令的源操作数和目的操作数都在单片机内部。可以是片内是片内RAMRAM地址,也可以是特殊功能寄存器地址,也可以是特殊功能
19、寄存器SFRSFR的地址的地址 指令的功能是把源操作数指定的字节变量复制到目的指令的功能是把源操作数指定的字节变量复制到目的操作数所规定的单元或寄存器中,源字节不变。操作数所规定的单元或寄存器中,源字节不变。 1.1 1.1 立即数传送指令立即数传送指令 源操作数为立即数源操作数为立即数 八位立即数传送指令:八位立即数传送指令: MOV AMOV A,#DATA#DATA; DATADATA (A A) 例:例:MOV AMOV A,#02H#02H; MOV RnMOV Rn,#DATA#DATA; DATADATA (RnRn) n=0-7n=0-7 例:例:MOV RMOV R3 3,#
20、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) 立即数的高八位送立即数的高八位送DPHDPH,低八位送,低八位送DPLDPL。 例例:(:(R0R0)=30H=30H,求,求A A,R4R4,30H30H,31H31H的内容的内容 MOV AMOV A,#10H#10H;MOV R4MO
21、V R4,#36H#36H;MOV MOV R0R0,#7AH#7AH;MOV 31HMOV 31H,#01H#01H; 结果:(结果:(A A)=10H=10H,(,(R4R4)=36H=36H,(,(30H30H)=7AH=7AH (31H31H)=01H =01H 1616位立即数传送指令位立即数传送指令MOV DPTRMOV DPTR,#DATA16#DATA16; 例:例:MOV DPTRMOV DPTR,#2500H#2500H; 结果:(结果:(DPTRDPTR)=2500H=2500H,(,(DPHDPH)=25H=25H,(,(DPLDPL)=00H=00H1.2 1.2 内
22、部数据存储器与累加器内部数据存储器与累加器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) ((Ri)(Ri)),i=0,1,i=0,1 MOV AMOV A,direct;direct;(directdirect) (A),(A), MOV directMOV direct,A;(A) A;
23、(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;(Rn) (direct),n=0-7Rn;(Rn) (direct),n=0-7 MOV RnMOV Rn,direct;(direct) (Rn),n=0-7direct;(dire
24、ct) (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) (direct2),(direct2), 1.3 1.3 内部内部RAMRAM中中Rn,SFRRn,SFR与片内与片内RAMRAM之间的数据传送之间的数据传送 例:设内部例:设内部RAMRAM中
25、中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;MOV MOV R1R1,P1P1;MOV P2MOV P2,P1P1; (R0R0)=30H =30H (A A)=40H =40H (R1R1)=40H =40H (B B)=10H
26、=10H (40H40H)=0CAH =0CAH (P2P2)=0CAH =0CAH 1.4 1.4 内部数据传送指令的使用内部数据传送指令的使用 DirectDirect直接地址直接地址 RiRi间接地址间接地址 Rn Rn 寄存器寄存器 #data #data 立即数立即数 A A 累加器累加器 例:例:MOV MOV R1R1,R3R3; 2 2 外部数据存储器(或外部数据存储器(或I/OI/O)的读写指令)的读写指令 2.1 2.1 用用DPTRDPTR进行间接寻址的指令进行间接寻址的指令 MOVX A, MOVX A, DPTRDPTR; ((DPTR)(DPTR) (A)(A) M
27、OVX MOVX DPTR,ADPTR,A; (A)A) (DPTR)(DPTR) DPTRDPTR为为1616位数据指针,该指令可寻址外部位数据指针,该指令可寻址外部RAM64KRAM64K范围范围(0000H-0FFFFH0000H-0FFFFH),地址低),地址低8 8位由位由P0P0口输出,地址高口输出,地址高8 8位由位由P2P2口输出,数据通过口输出,数据通过P0P0口读入或写出。口读入或写出。 2.2 2.2 用用RiRi进行间接寻址的指令进行间接寻址的指令 MOVX A, MOVX A, RiRi; ((Ri)(Ri) (A)(A) MOVX MOVX Ri,ARi,A; (A
28、)A) (DPTR)(DPTR) 说明:若外部扩展说明:若外部扩展RAMRAM小于等于小于等于256256单元,用单元,用RiRi间接间接寻址进行数据传送,寻址进行数据传送,8 8位地址线足够使用。位地址线足够使用。若外部扩展较大的若外部扩展较大的RAMRAM区域,须用区域,须用P2P2口输出高口输出高8 8位地址,位地址,用用RiRi表示低八位地址,表示低八位地址,P0P0口分时作低口分时作低8 8位地址线和数位地址线和数据线,据线,P2P2口应事先预置。口应事先预置。 例:若外部例:若外部RAMRAM中,(中,(20FFH20FFH)=30H=30H,(,(2100H2100H)=15H=
29、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,R0R0; 结果:(结果:(A A)=10H =10H 外部外部RAMRAM之间不能直接传送数据,必须通过累加器之间不能直接传送数据,必须通过累加器A A传送传送 例:例:MOVX 2000H
30、MOVX 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作为变址寄存器,将其中的内容作为变址寄存器,将其中的内容与基址寄存器(与基址寄存器(DPTRDPTR、PCPC)内容相加,得到程序存储)内容相加,得到程序存储器某单元地址,再把该地址单元内容送累加器器某单元地址,再把该地址
31、单元内容送累加器A A。例:已知累加器例:已知累加器A A中有一个中有一个0-90-9范围内的数,用查表指范围内的数,用查表指令编出能查出该数平方值的程序。设平方表表头的地令编出能查出该数平方值的程序。设平方表表头的地址为址为2000H2000H。 MOV DPTRMOV DPTR,#2000H#2000H;MOVC AMOVC A,A+DPTRA+DPTR;2000H2000H:DB 0DB 02001H2001H:DB 1DB 12002H2002H:DB 4DB 42003H2003H:DB 9DB 92009H2009H:DB 81DB 811FFBH1FFBH:ADD AADD A,
32、# #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-1FFEH=02H 例:将片内例:将片内RAM40HRAM40H单元内容送至片外单元内容送至片外50H50H单元中单元中; ; 将片外将片外2350H2350H单元内容送片内单元内容送片内
33、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 堆栈及堆栈指令堆栈及堆栈指令 4.1 4.1 堆栈的功能堆栈的功能计算机在转去执行子程序或中断服务程序后,很可能计算机在转去执行子程序或中断服务程序后,很可能要使用单片机的某些寄存单元,这样就会破坏这些寄要使用单片机的某些寄存单元,这
34、样就会破坏这些寄存单元中原有内容。为了既能在子程序中或中断服务存单元中原有内容。为了既能在子程序中或中断服务程序中使用这些寄存单元,又能保证在返回主程序之程序中使用这些寄存单元,又能保证在返回主程序之后恢复这些寄存单元的原有内容,后恢复这些寄存单元的原有内容,CPUCPU在执行中断服务在执行中断服务之前要把单片机中各有关寄存器中内容保存起来,这之前要把单片机中各有关寄存器中内容保存起来,这就是所谓保护现场。断点和现场的内容保存在堆栈中。就是所谓保护现场。断点和现场的内容保存在堆栈中。 4.24.2 堆栈指针堆栈指针SPSP 数据写入堆栈称为数据写入堆栈称为入栈入栈,数据从堆栈中读出称为,数据从
35、堆栈中读出称为出栈出栈堆栈的最大特点就是堆栈的最大特点就是“后进先出后进先出”。 堆栈有栈顶和栈底之分,栈底地址一经设定后固定堆栈有栈顶和栈底之分,栈底地址一经设定后固定不变。不论是数据进栈还是数据出栈,都是对栈顶不变。不论是数据进栈还是数据出栈,都是对栈顶单元进行的。为了指示栈顶地址,要设置堆栈指针单元进行的。为了指示栈顶地址,要设置堆栈指针SPSP。SPSP的内容为栈顶地址。的内容为栈顶地址。SPSP为为8 8位,它在片内位,它在片内RAM128RAM128个字节中开辟栈区,并随时跟踪栈顶地址。个字节中开辟栈区,并随时跟踪栈顶地址。系统复位后,系统复位后,SPSP初始化为初始化为07H07
36、H。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)=03H=03H,(,(40H40H)=04H=04H,试利用堆栈实现,试利用堆栈实现30
37、H30H和和40H40H单元的数据交换。单元的数据交换。 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 使用栈操作指令,应注意指令操作码后紧跟直接地址,
38、使用栈操作指令,应注意指令操作码后紧跟直接地址,要注意书写格式。如:要注意书写格式。如:PUSH ACCPUSH ACC;POP ACC POP ACC 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) 例:已知外部例:已知外部RAMRAM的的20H20H单元中有一个数单元中有一个数X X,内部,内部RAMRAM的的20H20H单元中有一个数
39、单元中有一个数Y Y,试利用字节交换指令编出,试利用字节交换指令编出可以使它们互相交换的程序。可以使它们互相交换的程序。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; 5.2 5.2 低半字节交换指令低半字节交换指令 XCHD AXCHD A,RiRi;(;((Ri)(Ri))
40、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高低半字节交换指令高低半字节交换指令SWAP ASWAP A;(;(A A)0-30-3 (A A)4-74-7 例:设(例:设(A A)=0F7H=0F7H SWAP A SW
41、AP 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,A A; MOV DPTRMOV DPTR,#2020H#2020H;MOVX AMOVX A,DPTRDPTR; XCH AXCH A,2
42、0H20H; 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 加法指令加法指令 ADD AADD A,Rn;(Rn)+Rn;(Rn)+(A A) (A),n=0-7(A),n=0-7 ADD AADD A,Ri;
43、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位二进制数,且对位二进制数,且对PSWPSW中的标志位(中的标志位(CYCY,ACAC,OVOV,P P)产生影响。)产生影响。ADDC AAD
44、DC 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+(CYCY) (A)A) 1.2 1.2 带进位的加法指令带进位的加法指令 带进位加法运算指令常用于多字节加法运算,结果对带进位加法运算指令
45、常用于多字节加法运算,结果对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)- -(directdirect)- -(CYCY) (A)(A) SUBB ASUBB A,#DATA;(A)-DATA-#DATA;(A)-DATA-(
46、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 INC Ri;Ri;((Ri)(Ri))+1 +1 ((Ri)(Ri)),i=0,1,i=0,1 INC DPTR;INC DPTR;(DPT
47、RDPTR)+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。设两数之和不超过。设两数之和不超过1616位。位。 MOV R0MOV R0,#20H#20H;MOV R1MOV R1,#30H#30H;MOV AM
48、OV 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;(directdirect)-1 (direct)-1 (direct) DEC DEC Ri;Ri;((Ri)(Ri))-1 -1 ((Ri)(Ri)),i
49、=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)=40H=40H (7FH7FH)=3FH=3FH (R1R1)=7EH=7EH (7EH7EH)=0FFH=0FFH 5 5 乘法指令乘法指令
50、 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的奇偶校验位;的奇偶校验位;当积大于当积大于255255(B B中的内容不为中的内容不为0 0),则),则OV=1OV=1,否则,否则OV=0 OV=0 例:设(例:设(A A
51、)=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中。中。 运算结果对运算结果对CYCY、OVOV、P P标志位产生影响:标志位产生影响:进位标志位进位标志位CYCY总是清总是清“0”0”;P
52、 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 ADA A; 调整规律如下:调整规律如下:若若AC=1AC=1或(或(A A)0-3 0-3 9 9,则(,则(A A)+06H +06H
53、(A A););若若CY=1CY=1或(或(A A)4-7 4-7 9 9,则(,则(A A)+60H +60H (A A););该指令用于压缩该指令用于压缩BCDBCD码加法运算的十进制调整,使用码加法运算的十进制调整,使用时应注意几点:时应注意几点:本指令使用时跟在本指令使用时跟在ADDADD或或ADDCADDC后;后;不能用不能用DADA指令对指令对BCDBCD码减法操作进行直接调整;码减法操作进行直接调整;本指令不影响溢出标志位本指令不影响溢出标志位OVOV; 例:执行下列程序后,求例:执行下列程序后,求30H30H、A A单元的内容单元的内容MOV AMOV A,#85H#85H;A
54、DD 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) (A),n=0-7(A),n=0-7 ANL AANL A,direct;(direct) direct;(direct) (A) (A)(A
55、) (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 (direct),direct), 例:(例:(R0R0)=30H=30H,(,(30H30H)=0AAH=0AAH,执行如下指令后累,执行如下
56、指令后累加器加器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 逻辑与指令主要用于从某个存储单元取出某几位而把逻辑与指令主要用于从某个存储单元取出某几位而把其他位变其他位变0 0。2 2 逻辑或运算指令逻辑或运算指令 ORL AORL A,Rn;(Rn) Rn
57、;(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) (A) (A) (directdirect) ORL directORL direct,#DATA;(direct) #DATA;(direc
58、t) DATA DATA (direct),direct), 逻辑或指令可用于对某个存储单元,使其中某些位变逻辑或指令可用于对某个存储单元,使其中某些位变为为“1”1”,而其余位不变。,而其余位不变。 例:设(例:设(A A)=0AAH=0AAH,(,(P1P1)=0FFH=0FFH,试编程把累加器,试编程把累加器A A中低四位送中低四位送P1P1口低四位,口低四位,P1P1口高四位不变。口高四位不变。 MOV R0MOV R0,A A; ANL AANL A,#0FH#0FH;ANL P1ANL P1,#0F0H#0F0H;ORL P1ORL P1,A A; MOV AMOV A,R0R0;
59、 (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;Ri;((Ri)(Ri)) (A) (A),i=0,1(A) (A),i=0,1 XRL A,#DATA;XRL A,#DATA;(A A) DA
60、TA DATA (A A) XRL directXRL direct,A;A;(directdirect) (A) (A) (directdirect) XRL directXRL direct,#DATA;(direct) DATA #DATA;(direct) DATA (direct),direct), 逻辑或指令可用于对某个存储单元,使其中某些位变逻辑或指令可用于对某个存储单元,使其中某些位变反,而其余位不变。反,而其余位不变。 例:外例:外RAMRAM(30H30H)=0AAH=0AAH,现欲令它高四位不变,低,现欲令它高四位不变,低四位取反。四位取反。 MOV R0MOV R0,#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024简单家具维修合同范本
- 2024年加工承揽合同标的与质量标准
- 2024建筑材料采购合同范本下载
- 2024年度公园绿化树苗采购合同
- 2024年山东潍坊物业委托管理合同
- 迷雾解说课件教学课件
- 2024年度互联网金融产品研发与推广合同
- 04版智能家居系统研发与销售合同
- 2024年度云服务提供商合同
- 2024年店铺投资合作协议
- 护理质量安全与风险管理的案例分析
- 工程流体力学课后习题答案-(杜广生)
- AI智能客服应用实践
- 《止吐药临床应用》课件
- 幕墙工程检验批质量验收记录
- 危险化学品经营企业安全生产奖惩制度范本
- 报价单模板完
- 30题药品质量检测岗位常见面试问题含HR问题考察点及参考回答
- 《婴幼儿行为观察、记录与评价》期末试卷及答案 卷3
- 企业战略管理概述
- 消防安全概述
评论
0/150
提交评论