第3章 单片机汇编程序设计

上传人:今*** 文档编号:107171280 上传时间:2019-10-18 格式:PPT 页数:74 大小:207KB
返回 下载 相关 举报
第3章 单片机汇编程序设计_第1页
第1页 / 共74页
第3章 单片机汇编程序设计_第2页
第2页 / 共74页
第3章 单片机汇编程序设计_第3页
第3页 / 共74页
第3章 单片机汇编程序设计_第4页
第4页 / 共74页
第3章 单片机汇编程序设计_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《第3章 单片机汇编程序设计》由会员分享,可在线阅读,更多相关《第3章 单片机汇编程序设计(74页珍藏版)》请在金锄头文库上搜索。

1、3.1 MCS-51系列单片机汇编指令格式及标识,MCS-51系列单片机指令系统功能强、指令短、执行快。从功能上可分成五大类:数据传送指令、算术运算指令、逻辑操作指令、控制转移指令和位操作指令。,3.1.1 指令格式,标号: 操作码助记符 目的操作数,源操作数 ;注释,(1)操作码助记符表明指令的功能,不同的指令有不同的指令助记符,它一般用说明其功能的英文单词的缩写形式表示。,(2)操作数用于给指令的操作提供数据、数据的地址或指令的地址,操作数往往用相应的寻址方式指明。,(3)标号是该指令的符号地址,后面须带冒号。,(4)注释是对该指令的解释,前面须带分号。,3.1.2 指令中用到的标识符,为

2、便于后面的学习,在这里先对指令中用到的一些符号的约定意义作以说明: (1)Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1,表示R0或R1。n取07,表示R0R7。 (2)#data:表示包含在指令中的8位立即数。 (3)#data16:表示包含在指令中的16位立即数。,(4)rel:以补码形式表示的8位相对偏移量,范围为-128127,主要用在相对寻址的指令中。 (5)addr16和addr11:分别表示16位直接地址和11位直接地址。 (6)direct:表示直接寻址的地址。 (7)bit:表示可位寻址的直接位地址。,(8)(X):表示X单元中的内容。 (9)(X):表示以X单元

3、的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用(X)表示。 (10)/ 和符号:“/”表示对该位操作数取反,但不影响该位的原值。“”表示操作流程,将箭尾一方的内容送入箭头所指一方的单元中去。,3.2 MCS-51系列单片机寻址方式,MCS-51单片机的寻址方式按操作数的类型,可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址,,3.2.1 常数寻址(立即寻址),操作数是常数,常数又称为立即数,使用时直接出现在指令中,紧跟在操作码的后面,作

4、为指令的一部分。在汇编指令中,立即数前面以“#”符号作前缀。在程序中通常用于给寄存器或存储器单元赋初值,例如: MOV A,#20H 其功能是把立即数20H送给累加器A,其中源操作数20H就是立即数。指令执行后累加器A中的内容为20H。,3.2.2 寄存器数寻址(寄存器寻址),操作数在寄存器中,使用时在指令中直接提供寄存器的名称,这种寻址方式称为寄存器寻址。在MCS-51系统中,这种寻址方式针对的寄存器只能是R0R7 8个通用寄存器和部分特殊功能寄存器(如累加器A、寄存器B、数据指针DPTR等)中的数据,对于其它的特殊功能寄存器中的内容的寻址方式不属于它。在汇编指令中,寄存器寻址在指令中直接提

5、供寄存器的名称,如R0、R1、A、DPTR等。例如: MOV A,R0 其功能是把R0寄存器中的数送给累加器A,在指令中,源操作数R0为寄存器寻址,传送的对象为R0中的数据。如指令执行前R0中的内容为20H,则指令执行后累加器A中的内容为20H。,3.2.3 存储器数寻址,存储器数寻址针对的数据是存放在存储器单元中,对于存储器单元的内容通过提供存储器单元地址使用。根据存储器单元地址的提供方式,存储器数的寻址方式有:直接寻址、寄存器间接寻址、变址寻址。,一直接寻址,直接寻址是指数据在存储器单元中,在指令中直接提供存储器单元的地址。在MCS-51系统中,这种寻址方式针对的是片内数据存储器和特殊功能

6、寄存器。在汇编指令中,指令中直接以地址数的形式提供存储器单元的地址。例如: MOV A,20H 其功能是把片内数据存储器20H单元的内容送给累加器A。如指令执行前片内数据存储器20H单元的内容为30H,则指令执行后累加器A的内容为30H。指令中20H是地址数,它是片内数据存储单元的地址。在MCS-51中,数据前面不加“#”是存储单元地址而不是常数,常数前面要加符号“#”。,对于特殊功能寄存器,在指令中使用时往往通过特殊功能寄存器的名称使用,而特殊功能寄存器名称实际上是特殊功能寄存器单元的符号地址,因此它们是直接寻址。例如: MOV A,P0 其功能是把P0口的内容送给累加器A。P0是特殊功能寄

7、存器P0口的符号地址,该指令在翻译成机器码时,P0就转换成直接地址80H。,二寄存器间接寻址,寄存器间接寻址是指数据存放在存储单元中,而存储单元地址存放在寄存器中,在指令中通过提供存放存储单元地址的寄存器来使用对应的存储单元。形式为:寄存器名。 例如:MOV A,R1 该指令的功能是将以工作寄存器R1中的内容为地址的片内RAM单元的数据传送到累加器A中去。指令的源操作数是寄存器间接寻址。若R1中的内容为80H,片内RAM地址为80H的单元中的内容为20H,则执行该指令后,累加器A的内容为20H。寄存器间接寻址示意图如图所示。,在MCS-51单片机中,寄存器间接寻址用到的寄存器只能是通用寄存器R

8、0、R1和数据指针寄存器DPTR,它能访问的数据是片内数据存储器和片外数据存储器。其中,片内数据存储器只能用R0和R1作指针间接访问;片外数据存储器,低端的256字节单元,既可以用两位十六进制地址以R0或R1作指针间接访问,也可用四位十六进制地址以DPTR作指针间接访问,而高端的字节单元则只能以DPTR作指针间接访问。对于片内RAM和片外RAM的低端256字节都可以用R0和R1作指针访问,它们之间用指令来区别。片内RAM访问用MOV指令,片外RAM访问用MOVX指令。,三变址寻址,变址寻址是指操作数的地址由基址寄存器的地址加上变址寄存器的地址得到。在MCS-51系统中,它是以数据指针寄存器DP

9、TR或程序计数器PC为基址,累加器A为变址,两者相加得存储单元的地址,所访问的存储器为程序存储器。,例如:MOVC A,A+DPTR,其功能是将数据指针寄存器DPTR的内容和累加器A中的内容相加作为程序存储器的地址,从对应的单元中取出内容送累加器A中。指令中,源操作数的寻址方式为变址寻址,设指令执行前数据指针寄存器DPTR的值为2000H,累加器A的值为05H,程序存储器2005H单元的内容为30H,则指令执行后,累加器A中的内容为30H。示意图如图所示。,3.2.4 位寻址,位寻址是指操作数是二进制位的寻址方式。在MCS-51单片机中有一个独立的位处理器,有多条位处理指令,能够进行各种位运算

10、。在MCS-51系统中,位处理的操作对象是各种可位寻址位。对于它们的访问是通过提供相应的位地址来处理。 在MCS-51系统中,位地址的表示可以用以下几种方式: 1直接位地址(00H0FFH)。例如:20H 2字节地址带位号。例如:20H.3表示20H单元的3位。 3特殊功能寄存器名带位号。例如:P0.1表示P0口的1位。 4位符号地址。例如:TR0是定时/计数器T0的启动位。,3.2.5 指令寻址,一绝对寻址,绝对寻址是在指令的操作数中直接提供目的位置的地址或地址的一部份。在MCS-51系统中,长转移和长调用提供目的位置的16位地址,绝对转移和绝对调用提供目的位置的16位地址的低11位,它们都

11、为绝对寻址。,二相对寻址,相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel得到目的位置的地址。在MCS-51系统中,相对转移指令的操作数属于相对寻址。 在使用相对寻址时要注意以下两点: (1)当前PC值是指转移指令执行时的PC值,它等于转移指令的地址加上转移指令的字节数。实际上是转移指令的下一条指令的地址。例如:若转移指令的地址为2010H,转移指令的长度为2字节,则转移指令执行时的PC值为2012H。 (2)偏移量rel是8位有符号数,以补码表示,它的取值范围为-128+127。当为负值时,向前转移,当为正数时向后转移。 相对寻址的目的地址为: 目的地址=当前PC+rel=转移指

12、令的地址+转移指令的字节数+rel,3.3 MCS-51系列单片机指令系统,3.3.1 数据传送指令,数据传送指令有29条,是指令系统中数量最多、使用也最频繁的一类指令。这类指令可分为三组:普通传送指令、数据交换指令、堆栈操作指令。,一普通传送指令 普通传送指令以助记符MOV为基础。分成片内数据存储器传送指令、片外数据存储器传送指令和程序存储器传送指令。 1片内数据存储器传送指令MOV 指令格式:MOV 目的操作数,源操作数 其中:源操作数可以为A、Rn、Ri、direct、#data,目的操作数可以为A、Rn、Ri、direct,组合起来总共16条,按目的操作数的寻址方式划分为五组:,(1)

13、以A为目的操作数 MOV A,Rn ;A Rn MOV A,direct ;A(direct) MOV A,Ri ;A(Ri) MOV A,#data ;A #data (2)以Rn为目的操作数 MOV Rn,A ;Rn A MOV Rn,direct ;Rn (direct) MOV Rn,#data ;Rn #data (3)以直接地址direct为目的操作数 MOV direct,A ;(direct) A MOV direct,Rn ;(direct) Rn MOV direct,direct ;(direct) (direct) MOV direct,Ri ;(direct) (Ri

14、) MOV direct,#data ;(direct) #data (4)以间接地址Ri为目的操作数 MOV Ri,A ;(Ri) A MOV Ri,direct ;(Ri) (direct) MOV Ri,#data ;(Ri) #data (5)以DPTR为目的操作数 MOV DPTR,#data16 ;DPTR #data16,注意,源操作数和目的操作数中的Rn和Ri不能相互配对。如不允许有“MOV Rn,Rn”,“MOV Ri,Rn”这样的指令,在MOV指令中,不允许在一条指令中同时出现工作寄存器,无论它是寄存器寻址还是寄存器间接寻址。,2片外数据存储器传送指令MOVX 在MCS-5

15、1系统中只能通过累加器A与片外数据存储器进行数据传送,访问时,只能通过Ri和DPTR以间接寻址方式进行。MOVX指令共有四条: MOVX A,DPTR ;A (DPTR) MOVX DPTR,A ;(DPTR) A MOVX A,Ri ;A (Ri) MOVX Ri,A ;(Ri) A 其中前两条指令通过DPTR间接寻址,可以对整个64K片外数据存储器访问。后两条指令通过Ri间接寻址,只能对片外数据存储器的低端的256字节访问,访问时将低8位地址放于Ri中。,3程序存储器传送指令MOVC 程序存储器传送指令只有两条,一条用DPTR基址变址寻址。一条用PC基址变址寻址。 MOVC A,A+DPT

16、R ;A (A+DPTR) MOVC A,A+PC ;A (A+PC) 这两条指令通常用于访问表格数据,因此以称为查表指令。,例如:查表指令MOVC A,A+PC所在的地址为2000H,表格的起始单元地址为2035H,表格的第4个元素(位移量为03H)的内容为45H,则查表指令的处理过程如下: MOV A,#03H ;表格元素相对于表首的位移量送累加器A ADD A,#34H ;当前程序计数器PC相对于表首的差值加到累加器A中 MOVC A,A+PC ;查表,查得第4个元素内容45H送累加器A 注意:查表指令的长度为1个字节,当前程序计数器PC的值应为查表指令的地址加1。,【例3-1】写出完成下列功能的程序段。 (1)将R0的内容送R6中 程序为:MOV A,R0 MOV R6,A (2)将片内RAM 30H单元的内容送片外60H单元中 程序为:MOV A,30H MOV R0,#60H MOVX

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号