单片机原理与应用第3章课件.ppt

上传人(卖家):三亚风情 文档编号:3438104 上传时间:2022-08-31 格式:PPT 页数:123 大小:2.12MB
下载 相关 举报
单片机原理与应用第3章课件.ppt_第1页
第1页 / 共123页
单片机原理与应用第3章课件.ppt_第2页
第2页 / 共123页
单片机原理与应用第3章课件.ppt_第3页
第3页 / 共123页
单片机原理与应用第3章课件.ppt_第4页
第4页 / 共123页
单片机原理与应用第3章课件.ppt_第5页
第5页 / 共123页
点击查看更多>>
资源描述

1、第第3 3章章 MCS-51MCS-51单片机的指单片机的指令系统令系统3.1 指令格式及分类指令格式及分类3.2 寻址方式寻址方式3.3 指令系统分析指令系统分析3.4 单片机汇编语言程序设计单片机汇编语言程序设计3.5 汇编语言编程实训汇编语言编程实训u掌握汇编指令的基本格式;掌握汇编指令的基本格式;u掌握掌握5151系列单片机的寻址方式;系列单片机的寻址方式;u掌握掌握5151系列单片机的各指令;系列单片机的各指令;u能阅读程序并能编写简单程序。能阅读程序并能编写简单程序。本章重点本章重点1.1.汇编语言的概念汇编语言的概念 计算机要完成某项工作所需过程是这样的:按照程序规定的次序,计算

2、机要完成某项工作所需过程是这样的:按照程序规定的次序,依次从程序存储器中取出要执行的指令代码,送到控制器的指令寄存依次从程序存储器中取出要执行的指令代码,送到控制器的指令寄存器中对所取的指令进行分析,由控制器发出完成操作所需的一系列控器中对所取的指令进行分析,由控制器发出完成操作所需的一系列控制电平,指挥计算机有关部件完成相应的操作。制电平,指挥计算机有关部件完成相应的操作。机器语言自身的特点决定了其难于用它进行程序设计,为了既能机器语言自身的特点决定了其难于用它进行程序设计,为了既能保持机器语言的特点,又能方便编写程序和阅读程序,人们采用助记保持机器语言的特点,又能方便编写程序和阅读程序,人

3、们采用助记符来代替机器指令代码,助记符与机器指令代码一一对应,人们把这符来代替机器指令代码,助记符与机器指令代码一一对应,人们把这种编程语言称为汇编语言。种编程语言称为汇编语言。3.1 3.1 指令格式及分类指令格式及分类3.1.1 3.1.1 汇编语言的概念及格式汇编语言的概念及格式2.2.汇编语言的指令格式汇编语言的指令格式 MCS-51MCS-51单片机的指令由标号、操作码、操作数和注释单片机的指令由标号、操作码、操作数和注释4 4个部分组成,个部分组成,格式如下:格式如下:标号:标号:操作码操作码 目的操作数目的操作数,源操作数源操作数,第三操作数第三操作数;注释注释 说明:带有方括号

4、说明:带有方括号的部分代表可选项。的部分代表可选项。【例】【例】LOOP:MOV ALOOP:MOV A,31H 31H ;将立即数;将立即数31H31H送累加器送累加器A A中中操作码操作码目的操作数目的操作数源操作数源操作数标号标号注释注释机器语言指令格式机器语言指令格式(1 1)单字节指令格式:操作码)单字节指令格式:操作码【例】汇编语言指令【例】汇编语言指令 ADD AADD A,R0 R0 对应的机器语言是:对应的机器语言是:2828(2 2)双字节指令格式:操作码操作数)双字节指令格式:操作码操作数【例】汇编语言指令【例】汇编语言指令 ADD AADD A,31H 31H 对应的机

5、器语言是对应的机器语言是:24 31 24 31(3 3)三字节指令格式:操作码)三字节指令格式:操作码 第一操作数第一操作数 第二操作数第二操作数【例】汇编语言指令【例】汇编语言指令 MOV 30HMOV 30H,7AH 7AH 对应的机器语言是:对应的机器语言是:75 30 7A75 30 7A3.1.2 3.1.2 指令系统中的符号约定指令系统中的符号约定RnRn:0 07 7,代表工作寄存器,代表工作寄存器R0R7R0R7。RiRi:代表工作寄存器代表工作寄存器RiRi间接寻址间接寻址8 8位存储单元,存储单元地址位存储单元,存储单元地址00H00HFFHFFH。其中其中0 0、1 1

6、,RiRi代表工作寄存器代表工作寄存器R0R0、R1R1。directdirect:代表代表8 8位地址,该位地址,该8 8位地址可以是内位地址可以是内RAMRAM的任何一个地址(的任何一个地址(00H00H7FH7FH),也可以为),也可以为SFRSFR(特殊功能寄存器)中的任何一个(特殊功能寄存器)中的任何一个(80H80HFFHFFH)。)。datadata:为为8 8位的立即数,该数为真正参与运算或传送的数据。位的立即数,该数为真正参与运算或传送的数据。data16data16:为为1616位的立即数,该数为参与传送的数据。位的立即数,该数为参与传送的数据。addr16addr16:为

7、为1616位目的地址,用于位目的地址,用于LCALLLCALL、LJMPLJMP二个指令中,可以实现在二个指令中,可以实现在64K64K程序存储器范围内调用子程序或转移。程序存储器范围内调用子程序或转移。addr11addr11:为为1111位目的地址,用于位目的地址,用于ACALLACALL、AJMPAJMP二个指令中,可以实现在二个指令中,可以实现在下条指令地址所在的下条指令地址所在的2K2K范围内调用子程序或转移。范围内调用子程序或转移。relrel:为带符号的为带符号的8 8位偏移地址,用于位偏移地址,用于SJMPSJMP和所有的条件转移指令,可以和所有的条件转移指令,可以在下条指令地

8、址所在的在下条指令地址所在的-128-128+127+127的程序存储器范围内转移。的程序存储器范围内转移。DPTRDPTR:数据指针,可用作数据指针,可用作1616位地址寄存器。位地址寄存器。A A:累加器累加器ACCACC。B B:通用寄存器,主要用于乘法通用寄存器,主要用于乘法MULMUL和除法和除法DIVDIV指令中。指令中。CyCy:代表进位标志位或在布尔处理器中的累加器。代表进位标志位或在布尔处理器中的累加器。bitbit:位地址。片内位地址。片内RAMRAM中的位寻址单元及中的位寻址单元及SFRSFR中的可寻址位。中的可寻址位。/bit/bit:在位操作指令中,表示对该位(在位操

9、作指令中,表示对该位(bitbit)先取反,再进行传送或运算,)先取反,再进行传送或运算,不改变该位(不改变该位(bitbit)的原值。)的原值。寻址就是寻找操作数的地址,寻找操作数地址的方式,称为操寻址就是寻找操作数的地址,寻找操作数地址的方式,称为操作数地址的寻址方式,简称寻址方式。作数地址的寻址方式,简称寻址方式。序号序号寻址方式寻址方式存储空间存储空间1直接寻址直接寻址内部内部RAM的的00H7FH,SFR,程序存储器,程序存储器2立即数寻址立即数寻址程序存储器程序存储器3寄存器寻址寄存器寻址R0R7,A,B,Cy,DPTR寄存器寄存器4寄存器间接寻址寄存器间接寻址内部内部RAM的的0

10、0H7FH,外部外部RAM5变址寻址变址寻址程序存储器程序存储器6相对寻址相对寻址程序存储器程序存储器7位寻址位寻址内部内部RAM中中20H2FH的的128位,位,SFR中的中的93位位寻址方式所对应的寄存器和存储空间寻址方式所对应的寄存器和存储空间3.2 3.2 寻址方式寻址方式3.2.1 3.2.1 直接寻址直接寻址 直接寻址方式就是指令中给出操作数地址的寻址方式,即指令中给直接寻址方式就是指令中给出操作数地址的寻址方式,即指令中给出的数据作为地址,该地址对应存储单元中的数据才是真正的操作数。出的数据作为地址,该地址对应存储单元中的数据才是真正的操作数。【例】【例】设内设内RAM 60HR

11、AM 60H单元中的内容为单元中的内容为55H55H,则执行指令,则执行指令 MOV AMOV A,60H 60H 后,后,A A中的内容为中的内容为55H55H,即,即A A55H55H直接寻址示意图直接寻址示意图3.2.2 3.2.2 立即数寻址立即数寻址 立即数寻址(立即数寻址(immediate constant addressingimmediate constant addressing)也称为立即寻址。)也称为立即寻址。把参与运算的操作数直接在指令中给出,操作数紧跟在操作符之后,这把参与运算的操作数直接在指令中给出,操作数紧跟在操作符之后,这种由指令直接提供的操作数叫种由指令直接

12、提供的操作数叫“立即数立即数”,是一个常数,可以是,是一个常数,可以是8 8位或位或者者1616位,并要在其前冠以位,并要在其前冠以“#”#”前缀,以区别于地址,主要用于赋值操前缀,以区别于地址,主要用于赋值操作。作。例如:例如:MOV A,#55H ;(A)55HMOV A,#55H ;(A)55H立即数寻址示意图立即数寻址示意图3.2.3 3.2.3 寄存器寻址寄存器寻址 寄存器寻址(寄存器寻址(register register addressingaddressing)方式在指令中指出了参与)方式在指令中指出了参与运算的操作数所在的寄存器,操作数存运算的操作数所在的寄存器,操作数存储在

13、寄存器中。寄存器寻址方式中的寄储在寄存器中。寄存器寻址方式中的寄存器为工作寄存器存器为工作寄存器R0R0R7R7、DPTRDPTR、累加、累加器器A A、寄存器、寄存器B(B(仅在乘除法时仅在乘除法时)和布尔累和布尔累加器加器C C。例如:例如:MOV A,R0 ;(A)(R0)MOV A,R0 ;(A)(R0)该指令执行的操作是把工作寄存器该指令执行的操作是把工作寄存器R0R0中的数送到累加器中的数送到累加器A A中,若中,若R0R0寄存器寄存器单元中的内容是单元中的内容是55H55H,则该指令执行后,则该指令执行后A A的内容就是的内容就是55H55H。寄存器寻址示意图寄存器寻址示意图3.

14、2.4 3.2.4 寄存器间接寻址寄存器间接寻址 寄存器间接寻址方式就是将指令指定的寄存器中的内容作为地寄存器间接寻址方式就是将指令指定的寄存器中的内容作为地址,将该地址所对应的存储单元中的数据作为真正参与运算或传送址,将该地址所对应的存储单元中的数据作为真正参与运算或传送的操作数的寻址方式。寄存器间接寻址也简称寄存器间址。的操作数的寻址方式。寄存器间接寻址也简称寄存器间址。注意:注意:与寄存器寻址方式的格式不同在于寄存器前加与寄存器寻址方式的格式不同在于寄存器前加。例如:例如:MOV A,R0 ;(A)(R0)MOV A,R0 ;(A)(R0)该指令执行的操作是把该指令执行的操作是把R0R0

15、寄存器指向地址单元中的内容送到累加器寄存器指向地址单元中的内容送到累加器A A中。若寄存器中。若寄存器R0R0的内容为的内容为20H20H,20H20H单元的内容是单元的内容是55H55H,就是将地址寄存器,就是将地址寄存器R0R0的内容的内容20H20H作为操作数所在单元地址,该单元中的内容作为操作数所在单元地址,该单元中的内容55H55H为操作数,为操作数,则执行该指令后累加器则执行该指令后累加器A A的内容是的内容是55H55H。寄存器间接寻址示意图寄存器间接寻址示意图3.2.5 3.2.5 变址寻址变址寻址 变址寻址(变址寻址(indexed addressingindexed add

16、ressing)方式也称为基址寄存器加变址寄)方式也称为基址寄存器加变址寄存器间接寻址方式。存放操作数单元的地址为基址寄存器和变址寄存器存器间接寻址方式。存放操作数单元的地址为基址寄存器和变址寄存器两者内容之和。变址寻址是以两者内容之和。变址寻址是以DPTRDPTR或或PCPC作为基址寄存器,以累加器作为基址寄存器,以累加器A A作为作为变址寄存器,将两寄存器的内容相加形成变址寄存器,将两寄存器的内容相加形成1616位地址操作数的实际地址。位地址操作数的实际地址。该类寻址方式主要用于查表操作。该类寻址方式主要用于查表操作。例如:例如:MOV A,A+DPTR ;(A)(A+DPTR)MOV A

17、,A+DPTR ;(A)(A+DPTR)该指令执行的操作是把累加器该指令执行的操作是把累加器A A的内容和基址寄存器的内容和基址寄存器DPTRDPTR的内容累加,的内容累加,相加结果作为操作数存放的地址(地址在内部存储器中),再将操作数相加结果作为操作数存放的地址(地址在内部存储器中),再将操作数取出来送到累加器取出来送到累加器A A中。若中。若A A的内容为的内容为20H20H,DPTRDPTR的内容为的内容为1000H1000H,程序存,程序存储单元储单元1020H1020H中的内容是中的内容是55H55H,则执行该指令后,则执行该指令后A A的内容就是的内容就是55H55H。变址寻址示意

18、图变址寻址示意图3.2.6 3.2.6 相对寻址相对寻址 相对寻址(相对寻址(relative addressingrelative addressing)方式是为了程序的相对转移而)方式是为了程序的相对转移而设计的。其原理是以程序计数器(设计的。其原理是以程序计数器(PCPC)的内容为基址,加上给出的相对)的内容为基址,加上给出的相对偏移量偏移量relrel作为新的有效的转移地址,从而实现程序的转移。值得注意的作为新的有效的转移地址,从而实现程序的转移。值得注意的是,相对偏移量是,相对偏移量relrel是有正负之分的,以补码表示。偏移量的取值范围是是有正负之分的,以补码表示。偏移量的取值范围

19、是-128+127-128+127。例如:例如:SJMP 08H ;(PC)(PC)+08HSJMP 08H ;(PC)(PC)+08H 该指令执行的操作是将该指令执行的操作是将PCPC当前值与当前值与08H08H相加,结果再送回到相加,结果再送回到PCPC中,中,成为下一条将要执行指令的地址。指令成为下一条将要执行指令的地址。指令“SJMP 08H”SJMP 08H”是双字节指令,其是双字节指令,其机器码为机器码为“80H80H、08H”08H”,若存放在,若存放在1000H1000H处,当执行到该指令时,取出处,当执行到该指令时,取出操作码后操作码后PCPC指向指向1001H1001H单元

20、,取出偏移量后单元,取出偏移量后PCPC指向指向1002H1002H单元(转移指令单元(转移指令首地址加首地址加2 2,有些指令如,有些指令如JB bit,relJB bit,rel则加则加3 3),再把),再把PCPC的内容与操作数的内容与操作数08H08H相加,形成目标地址相加,形成目标地址100AH100AH,再送回,再送回PCPC,使得程序跳转到,使得程序跳转到100AH100AH单元单元继续执行。继续执行。相对寻址示意图相对寻址示意图 注意:在相对寻址方式时,在注意:在相对寻址方式时,在relrel为正数和负数两种不同情况下,目为正数和负数两种不同情况下,目的地址的地址PCPC的求法

21、可以用下列不同的公式求:的求法可以用下列不同的公式求:当当relrel为正数时,为正数时,PCPC目的目的PCPC当前当前当前指令字节数当前指令字节数relrel 当当relrel为负数时,为负数时,PCPC目的目的PCPC当前当前当前指令字节数当前指令字节数relrel100H100H 在人工汇编时,往往知道在人工汇编时,往往知道PCPC目的目的和和PCPC当前当前,需要求,需要求relrel,如果,如果PCPC目的目的PCPC当前当前,采用第一个公式;如果采用第一个公式;如果PCPC目的目的PCPC当前当前,采用第二个公式。采用第二个公式。3.2.7 3.2.7 位寻址位寻址 位寻址就是对

22、内部位寻址就是对内部RAMRAM和特殊功能寄存器的可寻址位的内容进行操和特殊功能寄存器的可寻址位的内容进行操作的寻址方式。这种寻址方式只是对指令指定的作的寻址方式。这种寻址方式只是对指令指定的1 1位进行操作,其寻址位进行操作,其寻址方式与直接寻址方式相同。方式与直接寻址方式相同。【例】如果【例】如果A A74H74H,则执行指令,则执行指令 SETB ACC.3SETB ACC.3后,后,A A7CH7CH,见下图。,见下图。执行前执行前A A01110100执行后执行后A A011111003.3 3.3 指令系统分析指令系统分析 数据传送指令共有数据传送指令共有2929条,数据传送指令一

23、般的操作是把源条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志传送指令,数据传送指令不影响标志CyCy,ACAC和和OVOV,但可能会对,但可能会对奇偶标志奇偶标志P P有影响。有影响。3.3.1 3.3.1 数据传送指令数据传送指令1.1.以累加器为目的操作

24、数的指令以累加器为目的操作数的指令基本格式:基本格式:MOV A,MOV A,源操作数源操作数 这组指令的作用是把源操作数指向的内容送到累加器这组指令的作用是把源操作数指向的内容送到累加器A A。有直接、立即数、。有直接、立即数、寄存器和寄存器间接寻址方式:寄存器和寄存器间接寻址方式:MOV A,direct ;MOV A,direct ;直接单元地址中的内容送到累加器直接单元地址中的内容送到累加器A AMOV A,#data ;MOV A,#data ;立即数送到累加器立即数送到累加器A A中中MOV A,Rn ;RnMOV A,Rn ;Rn中的内容送到累加器中的内容送到累加器A A中中MO

25、V A,Ri ;RiMOV A,Ri ;Ri内容指向的地址单元中的内容送到累加器内容指向的地址单元中的内容送到累加器A A例如:例如:MOV A,30H ;MOV A,30H ;把内部把内部RAMRAM地址为地址为30H30H单元的内容送到累加器单元的内容送到累加器A AMOV A,#36H ;MOV A,#36H ;把常数把常数36H36H送到累加器送到累加器A A中中MOV A,R2 ;MOV A,R2 ;把寄存器把寄存器R2R2中的内容送到累加器中的内容送到累加器A A中中MOV A,R0 ;MOV A,R0 ;把内部寄存器把内部寄存器R0R0内容指向的地址单元中的内容送到累加器内容指向

26、的地址单元中的内容送到累加器A A43H指令:指令:MOVMOVA A,direct direct;A(directA(direct)功能:该指令是将数据存储器地址为功能:该指令是将数据存储器地址为directdirect单元中的内容送到累加器中,单元中的内容送到累加器中,该单元中的内容保持不变。该单元中的内容保持不变。【例】如果当前(【例】如果当前(40H40H)=6DH,A=43H=6DH,A=43H,则执行指令:,则执行指令:MOVMOVA,40HA,40H结果:结果:6D6D14H6DH41H41H40H40HA A6DH43H指令:指令:MOVMOVA A,data data ;Ad

27、ataAdata功能:该指令是将立即数功能:该指令是将立即数datadata送到累加器中。送到累加器中。注意:与注意:与MOVMOVA A,directdirect的形式与功能的区别的形式与功能的区别 【例】如果当前【例】如果当前A=43H,A=43H,则执行指令:则执行指令:MOVMOVA,#40HA,#40H结果:结果:A=40HA=40H14H6DH41H41H40H40HA A40H立即数立即数93H指令:指令:MOVMOVA A,RnRn ;ARnARn,n=0n=07 7功能:该指令是将寄存器功能:该指令是将寄存器RnRn中的内容送到累加器中,中的内容送到累加器中,RnRn中中的内

28、容保持不变。的内容保持不变。【例】如果当前【例】如果当前R0=56HR0=56H,A=93H,A=93H,则执行指令:则执行指令:MOV AMOV A,R0R0 结果:结果:A=56HA=56H14H6BHA3H56HR3R3R2R2R1R1R0R0A A56H93H指令:指令:MOVMOVA A,RiRi ;A(RiA(Ri),i=0i=0,1 1功能:该指令是将寄存器功能:该指令是将寄存器RiRi中的内容作为数据存储器的地址,中的内容作为数据存储器的地址,将该地址对应单元中的内容送到累加器中,该单元及将该地址对应单元中的内容送到累加器中,该单元及RiRi中中的内容保持不变。的内容保持不变。

29、【例】如果当前【例】如果当前R0=30HR0=30H,(30H)=0B3H,A=93H,(30H)=0B3H,A=93H,执行指令:执行指令:MOV AMOV A,R0R0 结果:结果:B3B314HB3H30H31H31H30H30HR0R0A AB3H2.2.以寄存器以寄存器RnRn为目的操作数的指令为目的操作数的指令基本格式:基本格式:MOV Rn,MOV Rn,源操作数源操作数这组指令的功能是把源操作数指定的内容送到所选定的工作寄存器这组指令的功能是把源操作数指定的内容送到所选定的工作寄存器RnRn中。中。有直接、立即数和寄存器寻址方式:有直接、立即数和寄存器寻址方式:MOV Rn,d

30、irect ;MOV Rn,direct ;直接寻址单元中的内容送到寄存器直接寻址单元中的内容送到寄存器RnRn中中MOV Rn,#data ;MOV Rn,#data ;立即数直接送到寄存器立即数直接送到寄存器RnRn中中MOV Rn,A ;MOV Rn,A ;累加器累加器A A中的内容送到寄存器中的内容送到寄存器RnRn中中6DHB3H指令:指令:MOVMOVRnRn,direct direct ;Rn(directRn(direct)功能:该指令是将数据存储器地址为功能:该指令是将数据存储器地址为directdirect单元中的内容送单元中的内容送到到RnRn中,该单元中的内容保持不变。

31、中,该单元中的内容保持不变。【例】如果当前【例】如果当前(41H)=73H,R1=6DH,(41H)=73H,R1=6DH,则执行指令:则执行指令:MOVMOVR1,41HR1,41H结果:结果:R1R1737314H6DH78HR2R2R1R1R0R042H42H73H41H41HA3H40H40H73H6DHB3H指令:指令:MOVMOVRnRn,datadata ;RndataRndata功能:该指令是将立即数功能:该指令是将立即数datadata送到寄存器送到寄存器RnRn中。中。【例】如果当前(【例】如果当前(41H)=73H,R1=6DH41H)=73H,R1=6DH,则执行指令:

32、,则执行指令:MOVMOVR1,#40HR1,#40H结果:结果:R1R1404014H6DH78HR2R2R1R1R0R042H42H40H41H41HA3H40H40H73H立即数立即数A3H93H指令:指令:MOVMOVRnRn,A A;RnARnA ,n=0n=07 7功能:该指令是将累加器中的内容送到寄存器功能:该指令是将累加器中的内容送到寄存器RnRn中,中中,中的内容保持不变。的内容保持不变。【例】如果当前【例】如果当前R1R1A3H,A=93H,A3H,A=93H,则执行指令:则执行指令:MOVMOVR1,AR1,A结果:结果:R1R1939314H6BH56HR3R3R2R2

33、R1R1R0R0A A93H3.3.以直接地址为目的操作数的指令以直接地址为目的操作数的指令基本格式:基本格式:MOV direct,MOV direct,源操作数源操作数 这组指令的功能是把源操作数指定的内容送到由直接地址这组指令的功能是把源操作数指定的内容送到由直接地址directdirect所选定的所选定的片内片内RAMRAM中,是最为丰富的一组指令,支持任意两个单元之间的数据传送,不管中,是最为丰富的一组指令,支持任意两个单元之间的数据传送,不管该单元的地址是直接给定的还是由地址寄存器间接指出来的。有直接、立即数、该单元的地址是直接给定的还是由地址寄存器间接指出来的。有直接、立即数、寄

34、存器和寄存器间接寄存器和寄存器间接4 4种寻址方式:种寻址方式:MOV direct1,direct2 ;MOV direct1,direct2 ;直接地址单元中的内容送到直接地址单元直接地址单元中的内容送到直接地址单元MOV direct,#data ;MOV direct,#data ;立即数送到直接地址单元立即数送到直接地址单元MOV direct,A ;MOV direct,A ;累加器累加器A A中的内容送到直接地址单元中的内容送到直接地址单元MOV direct,Rn ;MOV direct,Rn ;寄存器寄存器RnRn中的内容送到直接地址单元中的内容送到直接地址单元MOV dir

35、ect,Ri ;MOV direct,Ri ;寄存器寄存器RiRi中的内容指定的地址单元中的数据送到直接地址中的内容指定的地址单元中的数据送到直接地址单元单元73HB3H指令:指令:MOVMOVdirectdirect,data data ;(;(directdirect)datadata功能:该指令是将立即数功能:该指令是将立即数datadata送到地址为送到地址为directdirect的内存单元的内存单元中。中。【例】如果当前【例】如果当前(41H)=73H,(41H)=73H,则执行指令:则执行指令:MOVMOV41H,#40H41H,#40H结果:(结果:(41H41H)404042

36、H42H40H41H41HA3H40H40H立即数立即数指令:指令:MOV direct1,direct2MOV direct1,direct2;(;(direct1direct1)(direct2)(direct2)功能:该指令是将内存单元地址为功能:该指令是将内存单元地址为direct2direct2的单元中的数据送的单元中的数据送到地址为到地址为direct1direct1的内存单元中。的内存单元中。【例】如果当前内存情况如图所示,执行指令:【例】如果当前内存情况如图所示,执行指令:MOVMOV31H,30H 31H,30H 结果:结果:(31H)=0B3H(31H)=0B3H14HB3

37、H31H31H30H30HR0R030HB3HB3H93H指令:指令:MOVMOVdirectdirect,A A ;(;(directdirect)A A 功能:该指令是将累加器的内容送到地址为功能:该指令是将累加器的内容送到地址为directdirect的数据的数据存储器单元中,累加器中的内容保持不变。存储器单元中,累加器中的内容保持不变。【例】如果当前内存情况如图所示,执行指令:【例】如果当前内存情况如图所示,执行指令:MOVMOV30H,A30H,A 结果:结果:(30H)=93H(30H)=93H14H30H31H31H30H30HR0R0A A93HB3H指令:指令:MOVMOVd

38、irectdirect,RnRn ;(;(directdirect)Rn,nRn,n=0-7=0-7功能:该指令是将寄存器功能:该指令是将寄存器RnRn的内容送到地址为的内容送到地址为directdirect的数据的数据存储器单元中,寄存器存储器单元中,寄存器RnRn中的内容保持不变。中的内容保持不变。【例】如果当前内存情况如图所示,执行指令:【例】如果当前内存情况如图所示,执行指令:MOVMOV30H,R0 30H,R0 结果:结果:(30H)=30H(30H)=30H14H30H31H31H30H30HR0R030H指令:指令:MOVMOVdirectdirect,RiRi ;(;(dir

39、ectdirect)(Ri),i(Ri),i=0,1=0,1功能:该指令是将寄存器功能:该指令是将寄存器RiRi的内容作为地址,该地址所对应的内容作为地址,该地址所对应内存单元中的数据送到地址为内存单元中的数据送到地址为directdirect的内存单元中。的内存单元中。【例】如果当前内存情况如图所示,执行指令:【例】如果当前内存情况如图所示,执行指令:MOVMOV31H,R0 31H,R0 结果:结果:(31H)=0B3H(31H)=0B3H14HB3H31H31H30H30HR0R030HB3H4.4.以间接地址为目的操作数的指令以间接地址为目的操作数的指令基本格式:基本格式:MOV Ri

40、,MOV Ri,源操作数源操作数这组指令的功能是把源操作数指定的内容送到以这组指令的功能是把源操作数指定的内容送到以RiRi中的内容为地址的片内中的内容为地址的片内RAMRAM中。与上组指令不同的是,单元地址不是直接给出的,而是由地址寄中。与上组指令不同的是,单元地址不是直接给出的,而是由地址寄存器存器R0R0或或R1R1的内容间接给出的。有直接、立即数和寄存器的内容间接给出的。有直接、立即数和寄存器3 3种寻址方式:种寻址方式:MOV Ri,direct ;MOV Ri,direct ;直接地址单元中的内容送到以直接地址单元中的内容送到以RiRi中的内容为地址的中的内容为地址的RAMRAM单

41、元单元MOV Ri,#data ;MOV Ri,#data ;立即数送到以立即数送到以RiRi中的内容为地址的中的内容为地址的RAMRAM单元单元MOV Ri,A ;MOV Ri,A ;把累加器把累加器A A中内容送到以中内容送到以RiRi单元中的内容为地址的单元中的内容为地址的RAMRAM单元单元B3H指令:指令:MOVMOVRiRi,directdirect;(;(RiRi)(direct)(direct)功能:该指令是将数据存储器地址为功能:该指令是将数据存储器地址为directdirect单元中的内容送到以寄存器单元中的内容送到以寄存器i i中的数据作为地址对应的数据存储器单元中,原单

42、元中的内容保持不变。中的数据作为地址对应的数据存储器单元中,原单元中的内容保持不变。【例】如果当前【例】如果当前R0=30H,(30H)=0B3H,(31H)=14H,R0=30H,(30H)=0B3H,(31H)=14H,则执行指令:则执行指令:MOVMOVR0R0,31H31H 结果:结果:(R0)=14H(R0)=14H 即即:(30H)=14H:(30H)=14H 而而 R0=30HR0=30H14H30H31H31H30H30HR0R014H73HB3H指令:指令:MOVMOVRiRi,data data ;(;(RiRi)datadata功能:该指令是将立即数功能:该指令是将立即数

43、datadata送到以寄存器送到以寄存器i i中的数据作为中的数据作为地址对应的数据存储器单元中。地址对应的数据存储器单元中。【例】如果当前【例】如果当前R1=41H,(41H)=73H,R1=41H,(41H)=73H,则执行指令:则执行指令:MOVMOVR1,#40HR1,#40H结果:(结果:(R1R1)4040 即:即:(41H)=40H(41H)=40H 而:而:R1R141H41H41H78HR1R1R0R042H42H40H41H41HA3H40H40H立即数立即数B3H93H指令:指令:MOVMOVRiRi,A A ;(;(RiRi)A,iA,i=0=0,功能:该指令是将累加器

44、的内容送到以寄存器功能:该指令是将累加器的内容送到以寄存器i i中的数据中的数据作为地址对应的数据存储器单元中,累加器中的内容保持作为地址对应的数据存储器单元中,累加器中的内容保持不变。不变。【例】如果当前【例】如果当前R0R030H,(30H)=0B3H,A=93H30H,(30H)=0B3H,A=93H,则执行指令:,则执行指令:MOVMOVR0R0,A A 结果:结果:(R0)(R0)93H93H 即即(30H30H)93H93H 而而 R0=30HR0=30H14H30H31H31H30H30HR0R0A A93H5.5.查表指令查表指令 查表指令又称为累加器查表指令又称为累加器A A

45、外部外部ROMROM的数据传送指令。这组指令的功能的数据传送指令。这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式,是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式,指令的一般格式为:指令的一般格式为:MOVC A,A+DPTR ;MOVC A,A+DPTR ;表格地址单元中的内容送到表格地址单元中的内容送到A A中中MOVC A,A+PC ;MOVC A,A+PC ;表格地址单元中的内容送到表格地址单元中的内容送到A A中中 第一条指令采用第一条指令采用DPTRDPTR作为基址寄存器,查表时用来存放表的起始地作为基址寄存器,查表时用来存放表的起始地址

46、。由于用户可以很方便地通过上述址。由于用户可以很方便地通过上述1616位数据传送指令把任意一个位数据传送指令把任意一个1616位位地址送入地址送入DPTRDPTR,所以外部,所以外部ROMROM的的64 KB64 KB范围内的任意一个子域都可以用来范围内的任意一个子域都可以用来存放被查表的表格数据。存放被查表的表格数据。第二条指令以第二条指令以PCPC作为基址寄存器,但指令中作为基址寄存器,但指令中PCPC的地址是可以变化的,的地址是可以变化的,它随着指令在程序中位置的不同而不同,一旦指令在程序中位置确定以它随着指令在程序中位置的不同而不同,一旦指令在程序中位置确定以后,后,PCPC中内容也被

47、给定。中内容也被给定。【例】执行下面程序,则【例】执行下面程序,则A A为多少?为多少?ORG 2000H;ORG 2000H;伪指令,定义下列程伪指令,定义下列程序从序从2000H2000H开始存放开始存放 MOV AMOV A,02H02H MOV DPTRMOV DPTR,DATADATA MOVC AMOVC A,A+DPTRA+DPTR RETRETDATA:DATA:11H,12H,13H11H,12H,13H由于在程序第一条赋给由于在程序第一条赋给A A的值是的值是02H02H,第,第二条指令赋给二条指令赋给DPTRDPTR的值是的值是2007H2007H,所以,所以形成的地址是

48、形成的地址是2009H2009H,因此结果,因此结果A A13H13H。地址地址ROM2000H742001H022002H902003H202004H072005H932006H222007H112008H122009H13【例】执行下面程序,则【例】执行下面程序,则A A为多少?为多少?ORG 2000H;ORG 2000H;伪指令,定义下列程伪指令,定义下列程序从序从2000H2000H开始存放开始存放 MOV AMOV A,02H02H MOVC AMOVC A,A+PCA+PC RETRETDATA:DATA:11H,12H,13H,14H,15H11H,12H,13H,14H,15

49、H由于在程序第一条赋给由于在程序第一条赋给A A的值是的值是02H02H,第,第二条指令二条指令PCPC值为值为2002H2002H,加加1 1后后PCPC为为2003H2003H再加再加A A中的值中的值02H02H,所以形成的地,所以形成的地址是址是2005H2005H,因此结果,因此结果A A12H12H。地址地址ROM2000H742001H022002H832003H222004H112005H122006H132007H142008H152009H6.6.累加器累加器A A与片外部数据存储器与片外部数据存储器RAMRAM传送指令传送指令 这组指令的作用是实现累加器这组指令的作用是实

50、现累加器A A与片外与片外RAMRAM间的数据传送。它们之间的数据间的数据传送。它们之间的数据传送是通过传送是通过P0P0口进行的,只能采用间接寻址方式寻址外部口进行的,只能采用间接寻址方式寻址外部RAMRAM。一般格式如下:。一般格式如下:MOVX DPTR,A ;MOVX DPTR,A ;累加器中的内容送到数据指针指向的片外累加器中的内容送到数据指针指向的片外RAMRAM地址中地址中MOVX A,DPTR ;MOVX A,DPTR ;数据指针指向片外数据指针指向片外RAMRAM地址中的内容送到累加器地址中的内容送到累加器A A中中MOVX A,Ri ;MOVX A,Ri ;寄存器寄存器Ri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机原理与应用第3章课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|