单片机汇编程序的设计ppt课件_第1页
单片机汇编程序的设计ppt课件_第2页
单片机汇编程序的设计ppt课件_第3页
单片机汇编程序的设计ppt课件_第4页
单片机汇编程序的设计ppt课件_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.1 MCS-51系列单片机汇编指令格式及标识系列单片机汇编指令格式及标识 指令是使计算机完成根本操作的命令。一种计算机指令是使计算机完成根本操作的命令。一种计算机可以执行的全部指令的集合,称为这种计算机的指令系可以执行的全部指令的集合,称为这种计算机的指令系统。单片机的指令系统与微型计算机的指令系统不同,统。单片机的指令系统与微型计算机的指令系统不同,MCS-51系列单片机指令系统共有:系列单片机指令系统共有: 111条指令;条指令;42种指令助记符。种指令助记符。49条条1字节指令;字节指令;45条条2字节指令;字节指令;17条条3字节

2、指令。字节指令。64条为条为1机器周期指令;机器周期指令;45条为条为2机器周期指令;机器周期指令;2条为条为4机器周期指令机器周期指令(乘、除法乘、除法)。这些指令在存储空间和运算速度上,效率都比较高。这些指令在存储空间和运算速度上,效率都比较高。 第第3 3章章 单片机汇编程序设计单片机汇编程序设计 MCS-51系列单片机指令系统功能强、系列单片机指令系统功能强、指令短、执行快。指令短、执行快。 从功能上可分成五大类:从功能上可分成五大类:u 1、数据传送指令;、数据传送指令;u 2、算术运算指令;、算术运算指令;u 3、逻辑操作指令;、逻辑操作指令;u 4、控制转移指令;、控制转移指令;

3、u 5、位操作指令。、位操作指令。第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.1.1 指令格式指令格式标号标号: 操作码助记符操作码助记符 目的操作数目的操作数,源操作数源操作数 ;注释注释1操作码助记符阐明指令的功能,不同的指令有不同的指操作码助记符阐明指令的功能,不同的指令有不同的指令助记符,它普通用阐明其功能的英文单词的缩写方式表示。令助记符,它普通用阐明其功能的英文单词的缩写方式表示。 2操作数用于给指令的操作提供数据、数据的地址或指令的操作数用于给指令的操作提供数据、数据的地址或指令的地址,操作数往往用相应的寻址方式指明。地址,操作数往往用相应的寻址方式指明。MCS-51

4、单片机指单片机指令系统的指令按操作数的多少可分为无操作数、单操作数、双令系统的指令按操作数的多少可分为无操作数、单操作数、双操作数和三操作数四种情况。操作数和三操作数四种情况。 3标号是该指令的符号地址,后面须带冒号。它主要为转标号是该指令的符号地址,后面须带冒号。它主要为转移指令提供转移的目的地址。移指令提供转移的目的地址。4注释是对该指令的解释,前面须带分号。它们是编程注释是对该指令的解释,前面须带分号。它们是编程者根据需求加上去的,用于对指令进展阐明,对于指令本身者根据需求加上去的,用于对指令进展阐明,对于指令本身功能而言是可以不要的。功能而言是可以不要的。第第3 3章章 单片机汇编程序

5、设计单片机汇编程序设计1Ri和和Rn:表示当前任务存放器区中的任务存放器。:表示当前任务存放器区中的任务存放器。 i取取0或或1,表示,表示R0或或R1。n取取07,表示,表示R0R7。2#data:表示包含在指令中的:表示包含在指令中的8位立刻数。位立刻数。3#data16:表示包含在指令中的:表示包含在指令中的16位立刻数。位立刻数。 4rel:以补码方式表示的:以补码方式表示的8位相对偏移量,范围为位相对偏移量,范围为-128+127,主要用在相对寻址的指令中。主要用在相对寻址的指令中。5addr16和和addr11:分别表示:分别表示16位直接地址和位直接地址和11位直接地址。位直接地

6、址。6direct:表示直接寻址的地址。:表示直接寻址的地址。7bit:表示可位寻址的直接位地址。:表示可位寻址的直接位地址。8(X):表示:表示X单元中的内容。单元中的内容。9(X):表示以:表示以X单元的内容为地址的存储器单元内容,即单元的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用作地址,该地址单元的内容用(X)表示。表示。10/ 和和符号:符号:“/表示对该位操作数取反,但不影响该位的表示对该位操作数取反,但不影响该位的原值。原值。“表示操作流程,将箭尾一方的内容送入箭头所指一方的表示操作流程,将箭尾一方的内容送入箭头所指一方的单元中去。单元中去。 3.1.2 指令中

7、用到的标识符指令中用到的标识符 为便于后面的学习,在这里先对指令中用到的一些符号的商为便于后面的学习,在这里先对指令中用到的一些符号的商定意义作以下阐明:定意义作以下阐明:第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.2 MCS-51系列单片机寻址方式系列单片机寻址方式MCS-51单片机的寻址方式按操作数的类型,可分为:单片机的寻址方式按操作数的类型,可分为: 数的寻址;数的寻址; 指令寻址。指令寻址。数的寻址有:数的寻址有:常数寻址立刻寻址;常数寻址立刻寻址;存放器数寻址存放器寻址;存放器数寻址存放器寻址;存储器数寻址:存储器数寻址:直接寻址方式;直接寻址方式;存放器间接寻址方式;

8、存放器间接寻址方式;变址寻址方式。变址寻址方式。位寻址。位寻址。指令的寻址有:指令的寻址有:绝对寻址;绝对寻址;相对寻址。相对寻址。第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.2.1 常数寻址立刻寻址常数寻址立刻寻址 操作数是常数,运用时直接出如今指令中,紧跟在操作数是常数,运用时直接出如今指令中,紧跟在操作码的后面,作为指令的一部分。与操作码一同存放操作码的后面,作为指令的一部分。与操作码一同存放在程序存储器中,可以立刻得到并执行,不需求经过别在程序存储器中,可以立刻得到并执行,不需求经过别的途径去寻觅。常数又称为立刻数,故又称为立刻寻址。的途径去寻觅。常数又称为立刻数,故又称为

9、立刻寻址。在汇编指令中,立刻数前面以在汇编指令中,立刻数前面以“#符号作前缀。在程序符号作前缀。在程序中通常用于给存放器或存储器单元赋初值,例如:中通常用于给存放器或存储器单元赋初值,例如:MOV A,#20H 其功能是把立刻数其功能是把立刻数20H送给累加器送给累加器A,其中源操作数,其中源操作数20H就是立刻数。指令执行后累加器就是立刻数。指令执行后累加器A中的内容为中的内容为20H。 第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.2.2 存放器数寻址存放器寻址存放器数寻址存放器寻址 操作数在存放器中,运用时在指令中直接提供存放器的操作数在存放器中,运用时在指令中直接提供存放器的

10、称号,这种寻址方式称为存放器寻址。在称号,这种寻址方式称为存放器寻址。在MCS-51系统中,这系统中,这种寻址方式针对的存放器只能是种寻址方式针对的存放器只能是R0R7 8个通用存放器和部个通用存放器和部分特殊功能存放器如累加器分特殊功能存放器如累加器A、存放器、存放器B、数据指针、数据指针DPTR等中的数据,对于其它的特殊功能存放器中的内容的寻址等中的数据,对于其它的特殊功能存放器中的内容的寻址方式不属于它。在汇编指令中,存放器寻址在指令中直接提方式不属于它。在汇编指令中,存放器寻址在指令中直接提供存放器的称号,如供存放器的称号,如R0、R1、A、DPTR等。例如:等。例如:MOV A,R0

11、 其功能是把其功能是把R0存放器中的数送给累加器存放器中的数送给累加器A,在指令中,在指令中,源操作数源操作数R0为存放器寻址,传送的对象为为存放器寻址,传送的对象为R0中的数据。如指中的数据。如指令执行前令执行前R0中的内容为中的内容为20H,那么指令执行后累加器,那么指令执行后累加器A中的中的内容为内容为20H。 第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.2.3 存储器数寻址存储器数寻址 存储器数寻址针对的数据是存放在存储器存储器数寻址针对的数据是存放在存储器单元中,对于存储器单元的内容经过提供存储单元中,对于存储器单元的内容经过提供存储器单元地址运用。器单元地址运用。 根据

12、存储器单元地址的提供方式,存储器根据存储器单元地址的提供方式,存储器数的寻址方式有:数的寻址方式有: 1 1、直接寻址;、直接寻址; 2 2、存放器间接寻址;、存放器间接寻址; 3 3、变址寻址。、变址寻址。第第3 3章章 单片机汇编程序设计单片机汇编程序设计1直接寻址直接寻址 直接寻址是指数据在存储器单元中,在指令中直接提供存储器单元直接寻址是指数据在存储器单元中,在指令中直接提供存储器单元的地址。在的地址。在MCS-51系统中,这种寻址方式针对的是片内数据存储器和系统中,这种寻址方式针对的是片内数据存储器和特殊功能存放器。在汇编指令中,指令中直接以地址数的方式提供存储特殊功能存放器。在汇编

13、指令中,指令中直接以地址数的方式提供存储器单元的地址。例如:器单元的地址。例如:MOV A,20H 其功能是把片内数据存储器其功能是把片内数据存储器20H单元的内容送给累加器单元的内容送给累加器A。如指令。如指令执行前片内数据存储器执行前片内数据存储器20H单元的内容为单元的内容为30H,那么指令执行后累加器,那么指令执行后累加器A的内容为的内容为30H。指令中。指令中20H是地址数,它是片内数据存储单元的地址。是地址数,它是片内数据存储单元的地址。在在MCS-51中,数据前面不加中,数据前面不加“#是存储单元地址而不是常数,常数前是存储单元地址而不是常数,常数前面要加符号面要加符号“#。 对

14、于特殊功能存放器,在指令中运用时往往经过特殊功能存放器对于特殊功能存放器,在指令中运用时往往经过特殊功能存放器的称号运用,而特殊功能存放器称号实践上是特殊功能存放器单元的的称号运用,而特殊功能存放器称号实践上是特殊功能存放器单元的符号地址,因此它们是直接寻址。例如:符号地址,因此它们是直接寻址。例如:MOV A,P0 其功能是把其功能是把P0口的内容送给累加器口的内容送给累加器A。P0是特殊功能存放器是特殊功能存放器P0口口的符号地址,该指令在翻译成机器码时,的符号地址,该指令在翻译成机器码时,P0就转换成直接地址就转换成直接地址80H。第第3 3章章 单片机汇编程序设计单片机汇编程序设计2存

15、放器间接寻址存放器间接寻址 存放器间接寻址是指数据存放在存储单元中,而存储单元地址存存放器间接寻址是指数据存放在存储单元中,而存储单元地址存放在存放器中,在指令中经过提供存放存储单元地址的存放器来运用放在存放器中,在指令中经过提供存放存储单元地址的存放器来运用对应的存储单元。方式为:存放器名。对应的存储单元。方式为:存放器名。 例如:例如:MOV A,R1 该指令的功能是将以任务存放器该指令的功能是将以任务存放器R1中的内容为地址的片内中的内容为地址的片内RAM单单元的数据传送到累加器元的数据传送到累加器A中去。指令的源操作数是存放器间接寻址。中去。指令的源操作数是存放器间接寻址。80H20H

16、20HA80HR1 在在MCS-51单片机中,存放器间接寻址用到的单片机中,存放器间接寻址用到的存放器只能是通用存放器存放器只能是通用存放器R0、R1和数据指针存放和数据指针存放器器DPTR,它能访问的数据是片内数据存储器和片,它能访问的数据是片内数据存储器和片外数据存储器。其中,片内数据存储器只能用外数据存储器。其中,片内数据存储器只能用R0和和R1作指针间接访问;片外数据存储器,低端的作指针间接访问;片外数据存储器,低端的256字节单元,既可以用两位十六进制地址以字节单元,既可以用两位十六进制地址以R0或或R1作指针间接访问,也可用四位十六进制地址以作指针间接访问,也可用四位十六进制地址以

17、DPTR作指针间接访问,而高端的字节单元那么只作指针间接访问,而高端的字节单元那么只能以能以DPTR作指针间接访问。对于片内作指针间接访问。对于片内RAM和片外和片外RAM的低端的低端256字节都可以用字节都可以用R0和和R1作指针访问,作指针访问,它们之间用指令来区别。片内它们之间用指令来区别。片内RAM访问用访问用MOV指指令,片外令,片外RAM访问用访问用MOVX指令。指令。 假设假设R1中的内容为中的内容为80H,片内,片内RAM地址为地址为80H的单元中的内容为的单元中的内容为20H,那么执行该指令后,那么执行该指令后,累加器累加器A的内容为的内容为20H。第第3 3章章 单片机汇编

18、程序设计单片机汇编程序设计例如:例如:MOVC A,A+DPTR 其功能是将数据指针其功能是将数据指针存放器存放器DPTR的内容和累加的内容和累加器器A中的内容相加作为程序中的内容相加作为程序存储器的地址,从对应的存储器的地址,从对应的单元中取出内容送累加器单元中取出内容送累加器A中。指令中,源操作数的中。指令中,源操作数的寻址方式为变址寻址,设寻址方式为变址寻址,设指令执行前数据指针存放指令执行前数据指针存放器器DPTR的值为的值为2000H,累,累加器加器A的值为的值为05H,程序存,程序存储器储器2019H单元的内容为单元的内容为30H,那么指令执行后,累,那么指令执行后,累加器加器A中

19、的内容为中的内容为30H。表。表示图如左图所示。示图如左图所示。2000H30H30HDPTRA2019H05HA+3变址寻址变址寻址 变址寻址是指操作数的地址由基址存放器的地址加上变址存放器变址寻址是指操作数的地址由基址存放器的地址加上变址存放器的地址得到。在的地址得到。在MCS-51系统中,它是以数据指针存放器系统中,它是以数据指针存放器DPTR或程序或程序计数器计数器PC为基址,累加器为基址,累加器A为变址,两者相加得存储单元的地址,所为变址,两者相加得存储单元的地址,所访问的存储器为程序存储器。访问的存储器为程序存储器。 第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.2.4

20、位寻址位寻址 位寻址是指操作数是二进制位的寻址方式。在位寻址是指操作数是二进制位的寻址方式。在MCS-51单片机中有一个独立的位处置器,有多条位处置指令,可以单片机中有一个独立的位处置器,有多条位处置指令,可以进展各种位运算。在进展各种位运算。在MCS-51系统中,位处置的操作对象是系统中,位处置的操作对象是各种可位寻址位。对于它们的访问是经过提供相应的位地址各种可位寻址位。对于它们的访问是经过提供相应的位地址来处置。来处置。 指令给出位地址。一位数据在存储器位寻址区。指令给出位地址。一位数据在存储器位寻址区。 1内部内部RAM低低128单元中的位寻址区:单元中的位寻址区: 位地址为位地址为0

21、0H07FH共共128位位(字节地址为字节地址为20H2FH); 2内部内部RAM高高128单元中的公用存放器的可寻址位:单元中的公用存放器的可寻址位: SFR中中11个有位地址存放器中的个有位地址存放器中的83位。位。第第3 3章章 单片机汇编程序设计单片机汇编程序设计 在在MCS-51系统中,位地址的表示可以用以下几系统中,位地址的表示可以用以下几种方式:种方式:1直接运用位地址直接运用位地址00H07FH+83位。位。例如:例如:PSW的位的位6可表示为可表示为0D6H位地址。位地址。2字节地址带位号。字节地址带位号。例如:例如:PSW的位的位6可表示为可表示为0D0H.6; 20H.3

22、表示表示20H单元的单元的3位。位。3特殊功能存放器名带位号。特殊功能存放器名带位号。例如:例如: PSW的位的位6可表示为可表示为PSW.6 ; P0.1表示表示P0口的口的1位。位。4位符号地址。位符号地址。例如:例如: PSW的位的位6可表示为可表示为AC; TR0是定时是定时/计数器计数器T0的启动位。的启动位。第第3 3章章 单片机汇编程序设计单片机汇编程序设计例:例: MOV C MOV C,40H40H;CY(CY(位地址位地址40H)40H) 设指令执行前设指令执行前 CY=1 CY=1,位地址,位地址40H40H存储器单元存储器单元 如图,执行指令后,如图,执行指令后,CY=

23、 CY= ?29H 0110001028H 11010110位寻址区位寻址区 0第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.2.5 指令寻址指令寻址一、绝对寻址一、绝对寻址 绝对寻址是在指令的操作数中直接提供目的位置的绝对寻址是在指令的操作数中直接提供目的位置的地址或地址的一部分。地址或地址的一部分。 在在MCS-51系统中:系统中:长转移和长调用提供目的位置的长转移和长调用提供目的位置的16位地址;位地址;绝对转移和绝对调用提供目的位置的绝对转移和绝对调用提供目的位置的16位地址的低位地址的低11位。位。 它们都为绝对寻址。它们都为绝对寻址。第第3 3章章 单片机汇编程序设计单片

24、机汇编程序设计二、相对寻址二、相对寻址 相对寻址是以当前程序计数器相对寻址是以当前程序计数器PC值加上指令中给出的偏移量值加上指令中给出的偏移量rel得到目的位置的地址。在得到目的位置的地址。在MCS-51系统中,相对转移指令的操作系统中,相对转移指令的操作数属于相对寻址。数属于相对寻址。 在运用相对寻址时要留意以下两点:在运用相对寻址时要留意以下两点:1当前当前PC值是指转移指令执行时的值是指转移指令执行时的PC值,它等于转移指令值,它等于转移指令的地址加上转移指令的字节数。实践上是转移指令的下一条指令的的地址加上转移指令的字节数。实践上是转移指令的下一条指令的地址。例如:假设转移指令的地址

25、为地址。例如:假设转移指令的地址为2019H,转移指令的长度为,转移指令的长度为2字节,那么转移指令执行时的字节,那么转移指令执行时的PC值为值为2019H。2偏移量偏移量rel是是8位有符号数,以补码表示,它的取值范围为位有符号数,以补码表示,它的取值范围为-128+127。当为负值时,向前转移,当为正数时向后转移。当为负值时,向前转移,当为正数时向后转移。 相对寻址的目的地址为:相对寻址的目的地址为:目的地址目的地址=转移指令的地址转移指令的地址+转移指令的字节数转移指令的字节数+rel =当前当前PC+relPC- -前前+后后第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.3

26、MCS-51系列单片机指令系统系列单片机指令系统3.3.1 数据传送指令数据传送指令 数据传送指令有数据传送指令有29条,是指令系统中条,是指令系统中数量最多、运用也最频繁的一类指令。数量最多、运用也最频繁的一类指令。 这类指令可分为三组:这类指令可分为三组:l 普通传送指令;普通传送指令;l 数据交换指令;数据交换指令;l 堆栈操作指令。堆栈操作指令。第第3 3章章 单片机汇编程序设计单片机汇编程序设计一、普通传送指令一、普通传送指令 普通传送指令以助记符普通传送指令以助记符MOV为根底。分成片内为根底。分成片内数据存储器传送指令、片外数据存储器传送指令和数据存储器传送指令、片外数据存储器传

27、送指令和程序存储器传送指令。程序存储器传送指令。1片内数据存储器传送指令片内数据存储器传送指令MOV指令格式:指令格式:MOV 目的操作数,源操作数目的操作数,源操作数 其中:源操作数可以为其中:源操作数可以为A、Rn、Ri、direct、#data,目的操作数可以为,目的操作数可以为A、Rn、Ri、direct,组,组合起来总共合起来总共16条。条。第第3 3章章 单片机汇编程序设计单片机汇编程序设计1以以A为目的操作数为目的操作数MOV A,Rn;ARnMOV A,direct;AdirectMOV A,Ri;ARiMOV A,#data;A #data2以以Rn为目的操作数为目的操作数M

28、OV Rn,A;RnAMOV Rn,direct;RndirectMOV Rn,#data;Rn#data3以直接地址以直接地址direct为目的操作数为目的操作数MOV direct,A;directAMOV direct,Rn;directRnMOV direct,direct;directdirectMOV direct,Ri;directRiMOV direct,#data;direct #data按目的操作数的寻址方式划分为五组:按目的操作数的寻址方式划分为五组:第第3 3章章 单片机汇编程序设计单片机汇编程序设计4以间接地址以间接地址Ri为目的操作数为目的操作数MOV Ri,A;R

29、iAMOV Ri,direct;RidirectMOV Ri,#data;Ri #data5以以DPTR为目的操作数为目的操作数MOV DPTR,#data16 ;DPTR #data16留意:留意: 源操作数和目的操作数中的源操作数和目的操作数中的Rn和和Ri不能相互不能相互配对。如不允许有配对。如不允许有“MOV Rn,Rn,“MOV Ri,Rn这样的指令,在这样的指令,在MOV指令中,不允许在一指令中,不允许在一条指令中同时出现任务存放器,无论它是存放器条指令中同时出现任务存放器,无论它是存放器寻址还是存放器间接寻址。寻址还是存放器间接寻址。 例:例:MOV A,#30HMOV 4FH,

30、AMOV R0,#20HMOV R0,4FHMOV 21H,20H练习题:用两种寻址方式实现,将片内练习题:用两种寻址方式实现,将片内RAMRAM 60H 60H单元的数据传送给累加器单元的数据传送给累加器A A。解:解: MOV A,#60HMOV R0,#60H MOV A,R0;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30HMOV R0,60H MOV A,R0 解:解: MOV A,60H 结果结果A=32H顺序执行以下指令序列,求每一步执行结果。顺序执行以下指令序列,求每一步执行结果。地址地址内容内容32H58H60H32H第第3 3章章 单片机

31、汇编程序设计单片机汇编程序设计 说说 明:明: 只需指令表中的指令才有对应指令代码,计算机只需指令表中的指令才有对应指令代码,计算机才干执行。编程时,不能随意发明发明指令。才干执行。编程时,不能随意发明发明指令。1、一条指令中不能同时出现两个任务存放器。、一条指令中不能同时出现两个任务存放器。非法指令:非法指令:MOV R1,R2MOV R2,R02、间址存放器只能运用、间址存放器只能运用 R0、R1。 非法指令:非法指令: MOV A,R23、 SFR区只能直接寻址,不能用存放器间接寻址。区只能直接寻址,不能用存放器间接寻址。非法指令:非法指令: MOV R0,#80H MOV A,R04、

32、指令表、指令表P287:关注表中指令字节数和机器周期数:关注表中指令字节数和机器周期数第第3 3章章 单片机汇编程序设计单片机汇编程序设计2片外数据存储器传送指令片外数据存储器传送指令MOVX 在在MCS-51系统中只能经过累加器系统中只能经过累加器A与片外数据存储器进展数据与片外数据存储器进展数据传送,访问时,只能经过传送,访问时,只能经过Ri和和DPTR以间接寻址方式进展。以间接寻址方式进展。MOVX指指令共有四条:令共有四条:DPTR作作16位数据指针,寻址位数据指针,寻址64KB片外片外RAM空间:空间: MOVX A,DPTR;ADPTR 读读MOVX DPTR,A;DPTRA 写写

33、 Ri作作8位数据指针,寻址位数据指针,寻址256B片外片外RAM空间页内寻址:空间页内寻址: MOVXA,Ri;A(P2Ri) 读读MOVXRi,A ;(P2Ri)A 写写 其中前两条指令经过其中前两条指令经过DPTR间接寻址,可以对整个间接寻址,可以对整个64KB片外数片外数据存储器访问。后两条指令经过据存储器访问。后两条指令经过Ri间接寻址,只能对片外数据存储器间接寻址,只能对片外数据存储器的低端的的低端的256字节访问,访问时将低字节访问,访问时将低8位地址放于位地址放于Ri中。中。第第3 3章章 单片机汇编程序设计单片机汇编程序设计例:实现片外数据存储器数据传送例:实现片外数据存储器

34、数据传送2000H) (2100H)。MOV DPTRMOV DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX DPTR,A A;DPTR=2000HDPTR=2000H;A=XA=X;DPTR=2100HDPTR=2100H;(2100H)=X(2100H)=X习题:将片外习题:将片外RAM 0000HRAM 0000H单元的数据传送到片内单元的数据传送到片内RAMRAM的的60H60H单元。单元。片外数据存储器不能直接寻址。片外数据存储器不能直接寻址。以下为非法指令:以下为非法指

35、令: MOVX A MOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000H思索题:为什么对思索题:为什么对DPTRDPTR的数据传送运用内部传送指令?的数据传送运用内部传送指令?第第3 3章章 单片机汇编程序设计单片机汇编程序设计3程序存储器传送指令程序存储器传送指令MOVC 程序存储器传送指令只需两条,一条用程序存储器传送指令只需两条,一条用DPTR基址变址寻址。基址变址寻址。一条用一条用PC基址变址寻址。这两条指令通常用于访问表格数据,因基址变址寻址。这两条指令通常用于访问表格数据,因此以称为查表指令。此以称为查表指令。 DPTR为基址存放器

36、为基址存放器:MOVC A,A+DPTR ;AA+DPTR 读读 查表范围为查表范围为 64KB 程序存储器恣意空间,程序存储器恣意空间, 称为远程查表指令。称为远程查表指令。 PC为基址存放器为基址存放器:MOVC A,A+PC;AA+PC 读读 常数表只能在查表指令后常数表只能在查表指令后256B范围内,范围内, 称为近程查表指令。称为近程查表指令。特点:特点: MOVC A,A+DPTR指令可访问整个指令可访问整个ROM的的64KB空间,表格可放在空间,表格可放在ROM 的任何位置,与的任何位置,与MOVC指令无必然的关系。指令无必然的关系。 MOVC A,A+PC指令优点:不改动指令优

37、点:不改动PC的形状,根据的形状,根据A的内容取表格常数。的内容取表格常数。缺陷:缺陷:1表格只能存放在查表指令以下的表格只能存放在查表指令以下的256个单元内。个单元内。 2当表格首地址与本指令间有其它指令时,须用调整偏移量,调整量为下当表格首地址与本指令间有其它指令时,须用调整偏移量,调整量为下 一条指令的起始地址到表格首址之间的字节数。一条指令的起始地址到表格首址之间的字节数。第第3 3章章 单片机汇编程序设计单片机汇编程序设计例如:查表指令例如:查表指令MOVC A,A+PC所在的地址为所在的地址为2000H,表格的起始单,表格的起始单元地址为元地址为2035H,表格的第,表格的第4个

38、元素位移量为个元素位移量为03H的内容为的内容为45H,那么,那么查表指令的处置过程如下:查表指令的处置过程如下:MOV A,#03H;表格元素相对于表首的位移量送累加器;表格元素相对于表首的位移量送累加器AADD A,#34H;当前程序计数器;当前程序计数器PC相对于表首的差值加到累加器相对于表首的差值加到累加器A中中MOVC A,A+PC;查表,查得第;查表,查得第4个元素内容个元素内容45H送累加器送累加器A 留意:查表指令的长度为留意:查表指令的长度为1个字节,当前程序计数器个字节,当前程序计数器PC的值应为的值应为查表指令的地址加查表指令的地址加1。地地 址址内内 容容2000HMO

39、VC2019H2035H表格表格2036H2037H45HPCPC第第3 3章章 单片机汇编程序设计单片机汇编程序设计【例【例3-1】写出完成以下功能的程序段。】写出完成以下功能的程序段。1将将R0的内容送的内容送R6中程序为:中程序为:MOV A,R0MOV R6,A2将片内将片内RAM 30H单元的内容送片外单元的内容送片外60H单元中程序为:单元中程序为:MOV A,30HMOV R0,#60HMOVX R0,A3将片处将片处RAM 1000H单元的内容送片内单元的内容送片内20H单元中程序为:单元中程序为:MOV DPTR,#1000HMOV A,DPTRMOV 20H,A4将将ROM

40、 2000H单元的内容送片内单元的内容送片内RAM的的30H单元中程序为:单元中程序为:MOV A,#0MOV DPTR,#2000HMOVC A,A+DPTRMOV 30H,A第第3 3章章 单片机汇编程序设计单片机汇编程序设计二、数据交换指令二、数据交换指令 普通传送指令实现将源操作数的数据传普通传送指令实现将源操作数的数据传送到目的操作数,指令执行后源操作数不变,送到目的操作数,指令执行后源操作数不变,数据传送是单向的。数据交换指令数据作双数据传送是单向的。数据交换指令数据作双向传送,传送后,前一个操作数原来的内容向传送,传送后,前一个操作数原来的内容传送到后一个操作数中,后一个操作数原

41、来传送到后一个操作数中,后一个操作数原来的内容传送到前一个操作数中。的内容传送到前一个操作数中。 数据交换指令要求第一个操作数须为累数据交换指令要求第一个操作数须为累加器加器A,共有,共有5条。条。XCH A,Rn;ARnXCH A ,direct;A(direct)XCH A,Ri;A(Ri)XCHD A,Ri;A03(Ri)03SWAP A;A03A47【例【例3-2】假设】假设R0的内容为的内容为30H,片内,片内RAM 30H单元单元的内容为的内容为23H,累加器,累加器A的内容为的内容为45H,那么执行,那么执行XCH A,R0 指令后片内指令后片内RAM 30H单元的内容为单元的内

42、容为45H,累加器,累加器A中的内容为中的内容为23H。 假设执行假设执行SWAP A指令,那么累加器指令,那么累加器A的内容为的内容为54H。习题:将片内习题:将片内RAM60H单元与单元与61H单元的数据交换。单元的数据交换。例:设例:设A=29H,执行指令,执行指令 XCH A,2AH后,后, A= ? ,(2AH)= ?38H29HXCH 60H,61H; 对吗?对吗?不对!不对!29H例:将片内例:将片内RAM 2AHRAM 2AH和和2BH2BH单元中的单元中的ASCIIASCII码转换成紧缩式码转换成紧缩式BCDBCD码存入码存入20H20H单元。单元。58H习题:交换片内习题:

43、交换片内RAM 40HRAM 40H单元和单元和 41H41H单元的低半字节。单元的低半字节。A30H010100000101100050H58HMOV A,#0MOV R0,#2AHMOV R1,#2BHXCHD A,R0SWAP AXCHD A,R1XCH A,20H0011000005H0000000000H0000010120HR1A0101100058H30H00110000R0AA35H00110101R138H00111000R0第第3 3章章 单片机汇编程序设计单片机汇编程序设计三、堆栈操作指令三、堆栈操作指令 堆栈是在片内堆栈是在片内RAM中按中按“先进后出,后进先出原先进后

44、出,后进先出原那么设置的公用存储区。数据的进栈和出栈由指针那么设置的公用存储区。数据的进栈和出栈由指针SP一致管理。在一致管理。在MCS-51系统中,堆栈操作指令有两条:系统中,堆栈操作指令有两条:PUSH direct;SP(SP+1),(SP)(direct)POP direct;(direct)(SP),(SP)(SP-1) 其中其中PUSH指令入栈,指令入栈,POP指令出栈。操作时以字指令出栈。操作时以字节为单位。入栈时节为单位。入栈时SP指针先加指针先加1,再入栈。出栈时内容,再入栈。出栈时内容先出栈,先出栈,SP指针再减指针再减1。用堆栈保管数据时,先入栈的。用堆栈保管数据时,先入

45、栈的内容后出栈;后入栈的内容先出栈。内容后出栈;后入栈的内容先出栈。 【例【例3-3】假设入栈保管时入栈的顺序为:】假设入栈保管时入栈的顺序为:PUSH APUSH B那么出栈的顺序为:那么出栈的顺序为:POP BPOP A第第3 3章章 单片机汇编程序设计单片机汇编程序设计例:设例:设 A=02H,B=56H,执行以下指令后,执行以下指令后, SP= ? ,A= ? ,B= ? 。SBR:MOV SP,#30H ;设栈底;设栈底 PUSH APUSH BMOV A,#00HMOV B,#01H POPBPOP ASP SPB02H 02H 56HASPB02H 56H02H 56HASPB0

46、0H 56H02H 01HASPB00H 56H02H 56HASPB02H 56H02H 56HA02H56H30HB02H56HA入栈指令:入栈指令:PUSH direct ;SPSP+1,(SP)(direct)出栈指令:出栈指令:POP direct ;(direct)(SP),SPSP-1 “先加后压先加后压 “先弹后减先弹后减第第3 3章章 单片机汇编程序设计单片机汇编程序设计练习:练习: 阐明程序执行过程中,阐明程序执行过程中,SP的内容及堆栈中内的内容及堆栈中内容的改动过程。容的改动过程。 程序如下:程序如下: MOV SP,#30H MOV A,#20H MOV B,#30H

47、 PUSH A PUSH B POP A POP B第第3 3章章 单片机汇编程序设计单片机汇编程序设计习题:找出指令错误并矫正:习题:找出指令错误并矫正:1MOV A,#1000H ;A1000HA装装1个字节数个字节数2MOVX A,1000H ;A(1000H)片外片外RAM(DPTR、Ri)3MOVC A,1000H ;A(1000H)片外片外ROM(DPTR、PC)4MOVX 60H,A ;片外;片外RAM(60H)A应为应为MOV5MOV R0,60H ;片内;片内RAM:(61H)(60H) MOV 61H,R0 (片内片内RAM可直接寻址可直接寻址) 6. XCH R1,R2

48、;R1 R2(必需有必需有A参与参与)7. MOVX DPTR,#2000H ;DPTR2000H(应为应为MOV)8. MOVX 60H,DPTR ;片内;片内RAM片外片外RAM (必需有必需有A参与参与)第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.3.2 算术运算指令算术运算指令一加法指令一加法指令1普通的加法指令普通的加法指令ADDADD A,Rn;AA + RnADD A,direct;AA +directADD A,Ri ;AA +RiADD A,#data;AA + #data2带进位加指令带进位加指令ADDCADDC A,Rn;AA+Rn+CADDC A,direc

49、t;AA +direct+ CADDC A,Ri;AA +Ri+ CADDC A,#data;AA + #data + C3加加1指令指令INC A;AA+1INC Rn;RnRn+1INC direct;directdirect+ 1INC Ri;RiRi+ 1INC DPTR;DPTRDPTR+1 其中,其中,ADD和和ADDC指令在指令在执行时要影响执行时要影响CY、AC、OV和和P标标志位。而志位。而INC指指令除了令除了INC A要要影响影响P标志位外,标志位外,对其它标志位都对其它标志位都没有影响。没有影响。在在MCS-51单片单片机中,常用机中,常用ADD和和ADDC配合运配合运

50、用实现多字节加用实现多字节加法运算。法运算。第第3 3章章 单片机汇编程序设计单片机汇编程序设计【例【例3-4】试把存放在】试把存放在R1R2和和R3R4中的两个中的两个16位数相加,结果存于位数相加,结果存于R5R6中。中。 处置时,处置时,R2和和R4用普通的加法指令用普通的加法指令ADD,结,结果放于果放于R6中,中,R1和和R3用带进位的加法指令用带进位的加法指令ADDC,结果放于结果放于R5中,程序如下:中,程序如下:MOV A,R2ADD A,R4MOV R6,AMOV A,R1ADDC A,R3MOV R5,AR1 R2R3 R4R5 R6C+ADDADDCC第第3 3章章 单片

51、机汇编程序设计单片机汇编程序设计二减法指令二减法指令1带借位减法指令带借位减法指令SUBBSUBB A,Rn;AA - Rn - CSUBB A,direct ;AA -direct- CSUBB A,Ri;AA -Ri- CSUBB A,#data ;AA - #data - C2减减1指令指令DECDEC A;AA - 1DEC Rn;RnRn - 1DEC direct;directdirect- 1DEC Ri;RiRi- 1第第3 3章章 单片机汇编程序设计单片机汇编程序设计 在在MCS-51单片机中,只提供了一种带借位的单片机中,只提供了一种带借位的减法指令,没有提供普通的减法指令

52、,普通的减法减法指令,没有提供普通的减法指令,普通的减法操作可以经过先对操作可以经过先对CY标志清零,然后再执行带借标志清零,然后再执行带借位的减法来实现。其中,位的减法来实现。其中,SUBB指令在执行时要影指令在执行时要影响响CY、AC、OV和和P标志位。而标志位。而DEC指令除了指令除了DEC A要影响要影响P标志位外,对其它标志位都没有影响。标志位外,对其它标志位都没有影响。 【例【例3-5】求】求R3R2 - R1。程序为:程序为:MOV A,R2CLR CSUBB A,R1MOV R3,A第第3 3章章 单片机汇编程序设计单片机汇编程序设计3乘法指令乘法指令MUL 在在MCS-51单

53、片机中,乘法指令只需一条:单片机中,乘法指令只需一条:MUL AB 该指令执行时将对存放于累加器该指令执行时将对存放于累加器A中的无符号被中的无符号被乘数和放于乘数和放于B存放器中的无符号乘数相乘,积的高字存放器中的无符号乘数相乘,积的高字节存于节存于B存放器中,低字节存于累加器存放器中,低字节存于累加器A中。中。 指令执行后将影响指令执行后将影响CY和和OV标志,标志,CY复位,对复位,对于于OV:当积大于:当积大于255时即时即B中不为中不为0,OV为为1;否那么,否那么,OV为为0。第第3 3章章 单片机汇编程序设计单片机汇编程序设计4除法指令除法指令DIV 在在MCS-51单片机中,除

54、法指令也只需一条:单片机中,除法指令也只需一条:DIV AB 该指令执行时将用存放在累加器该指令执行时将用存放在累加器A中的无符号被中的无符号被除数与存放在除数与存放在B存放器中的无符号除数相除,除得的存放器中的无符号除数相除,除得的结果,商的存于累加器结果,商的存于累加器A中,余数存于中,余数存于B存放器中。存放器中。 指令执行后将影响指令执行后将影响CY和和OV标志,普通情况标志,普通情况CY和和OV都清都清0,只需当,只需当B存放器中的除数为存放器中的除数为0时,时,CY和和OV才被置才被置1。第第3 3章章 单片机汇编程序设计单片机汇编程序设计5十进制调整指令十进制调整指令 在在MCS

55、-51单片机中,十进制调整指令只需一条:单片机中,十进制调整指令只需一条:DA A 它只能用在它只能用在ADD或或ADDC指令后面,用来对两个二位指令后面,用来对两个二位的紧缩的的紧缩的BCD码数经过用码数经过用ADD或或ADDC指令相加后存于累指令相加后存于累加器加器A中的结果进展调整,使得它得到正确的十进制结果。中的结果进展调整,使得它得到正确的十进制结果。经过该指令可实现两位十进制经过该指令可实现两位十进制BCD码数的加法运算。码数的加法运算。它的调整过程为:它的调整过程为:1假设累加器假设累加器A的低四位为十六进制的的低四位为十六进制的AF或辅助或辅助进位标志进位标志AC为为1,那么累

56、加器,那么累加器A中的内容作加中的内容作加06H调整。调整。2假设累加器假设累加器A的高四位为十六进制的的高四位为十六进制的AF或进位或进位标志标志CY为为1,那么累加器,那么累加器A中的内容作加中的内容作加60H调整。调整。第第3 3章章 单片机汇编程序设计单片机汇编程序设计例如:求例如:求BCD码码48+69=?117 0100 1000 B + 0110 1001 B 1011 0001 B +0110 0110 B 加加6修正修正 1 0001 0111 B低低4位向高位向高4位进位,阐明低位和大于位进位,阐明低位和大于9,需加,需加6修正;修正;高位由于获得进位而出现非法码,因此也需

57、求加高位由于获得进位而出现非法码,因此也需求加6修正。修正。 修正后,结果为修正后,结果为117,正确。,正确。 思索:思索:BCD码减法,如何修正?求减数对码减法,如何修正?求减数对9A的补码的补码 9A的原码为的原码为1 110 0110 B=66H。第第3 3章章 单片机汇编程序设计单片机汇编程序设计【例【例3-6】在】在R3中有十进制数中有十进制数67,在,在R2中有中有十进制数十进制数85,用十进制运算,运算的结果放于,用十进制运算,运算的结果放于R5中。中。程序为:程序为:MOV A,R3 ;R3=67ADD A,R2 ;R2=85,A=0ECHDA A;A =52HMOV R5,

58、A ;R5=52H 程序中程序中DA指令对指令对ADD指令运算出来的放于指令运算出来的放于累加器累加器A中的结果进展调整,调整后,累加器中的结果进展调整,调整后,累加器A中的内容为中的内容为52H,CY为为1,那么结果为,那么结果为152,最,最后放于后放于R5中的内容为中的内容为52H十进制数十进制数52。跳过或进入跳过或进入6个无效编码区,结果就会出错。个无效编码区,结果就会出错。(R3)=67=0110 0111 B(R2)=85=1000 0101 B + (A)=1110 1100 B=ECH 52H=(A)1=(C)ECH=1110 1100B 0110 0110B + 1 010

59、1 0010B第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.3.3 逻辑操作指令逻辑操作指令一逻辑与指令一逻辑与指令ANLANL A,Rn ;AA RnANL A,direct ;AA directANL A,Ri ;AA (Ri)ANL A,#data ; AA dataANL direct,A ;directdirect AANL direct,#data ;directdirect data二逻辑或指令二逻辑或指令ORLORL A,Rn ;AA RnORL A,direct ;AA directORL A,Ri ;AA (Ri)ORL A,#data ;AA dataORL d

60、irect,A ;directdirect AORL direct,#data ;directdirect data第第3 3章章 单片机汇编程序设计单片机汇编程序设计三逻辑异或指令三逻辑异或指令XRLXRL A,Rn ;A A RnXRL A,direct ;A A directXRL A,Ri ; A A (Ri)XRL A,#data ;A A dataXRL direct,A ;direct direct AXRL direct,#data ;direct direct data 在运用中,逻辑与用于实现对指定位清在运用中,逻辑与用于实现对指定位清0,其他位不变;,其他位不变;逻辑或用

温馨提示

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

评论

0/150

提交评论