《单片机原理与应用系统设计》-李云钢-电子教案 第03章

上传人:E**** 文档编号:89436907 上传时间:2019-05-25 格式:PPT 页数:148 大小:1.16MB
返回 下载 相关 举报
《单片机原理与应用系统设计》-李云钢-电子教案 第03章_第1页
第1页 / 共148页
《单片机原理与应用系统设计》-李云钢-电子教案 第03章_第2页
第2页 / 共148页
《单片机原理与应用系统设计》-李云钢-电子教案 第03章_第3页
第3页 / 共148页
《单片机原理与应用系统设计》-李云钢-电子教案 第03章_第4页
第4页 / 共148页
《单片机原理与应用系统设计》-李云钢-电子教案 第03章_第5页
第5页 / 共148页
点击查看更多>>
资源描述

《《单片机原理与应用系统设计》-李云钢-电子教案 第03章》由会员分享,可在线阅读,更多相关《《单片机原理与应用系统设计》-李云钢-电子教案 第03章(148页珍藏版)》请在金锄头文库上搜索。

1、第3章 MCS-51单片机指令系统及编程技术,3.1 MCS-51汇编指令概述 3.2 数据传送指令 3.3 算术运算指令 3.4 逻辑运算指令 3.5 位操作指令 3.6 控制转移指令 3.7 汇编程序设计举例 3.8 单片机C语言程序开发及设计举例,3.1 MCS-51汇编指令概述,计算机的指令系统是一套控制计算机操作的编码,称为机器语言,计算机内部结构的功能大部分是通过指令系统来体现的,计算机本身只能识别和执行机器语言,为了便于程序员的理解和记忆,常用符号来代替机器语言,称为汇编语言,利用汇编程序可以将汇编语言翻译成机器语言。MCS-51的指令系统由111条汇编指令组成,指令丰富,编程灵

2、活。当前,51型单片机的硬件在功能、处理速度和可靠性等方面都有了很大的发展,但其软件仍然兼容这套指令系统,下面详细介绍这套指令系统。,3.1 MCS-51汇编指令概述,3.1.1 汇编指令格式及常用符号说明 3.1.2 寻址方式 3.1.3 指令类型,3.1.1 汇编指令格式及常用符号说明:汇编指令格式,MCS-51共有111条汇编指令,每天指令都由操作码和操作数所组成,格式如下: 操作码 操作数1,操作数2,操作数3 其中,操作码即指令助记符,由25个英文字母组成,例如:JB、MOV、DJNZ、LCALL。指令后可能有03个操作数,但就具体的某条指令来说,其操作数的个数是确定的。,3.1.1

3、 汇编指令格式及常用符号说明:伪指令,伪指令也称为汇编命令,最常用的有以下几条 : 定位伪指令:ORG m;m指出该伪指令后的指令的汇编地址。 字节定义伪指令:DB X1,Xi,Xn;Xi(i1,2,.,n)为单字 节数据。该伪指令在程序存储器中定义一个常数表。 字定义伪指令:DW Y1,Yi,.,Yn;Yi(i1,2,.,n)为双字 节数据。该伪指令也是在程序存储器中定义一个常数表。 汇编结束伪指令:END;该伪指令指出结束汇编,即使后面还有指 令,汇编程序也不作处理。,3.1.1 汇编指令格式及常用符号说明:伪指令, 标号和注释:标号加在指令之前,以字母开始,后跟07个字母或 数字,并以冒

4、号“:”结尾。汇编后,标号的值是它后面的指令的存储地址。注释以分号“;”开始,如果一行写不下,可以另起一行,但每行都必须以分号开始。 BIT伪指令:将内部RAM中位寻址区某一位的位地址赋值给字符串。 EQU伪指令:将一个字节的数值赋给字符串。 DATA伪指令:给一个内部的数据存储单元命名。 XDATA伪指令:给一个外部的数据存储单元命名。,3.1.1 汇编指令格式及常用符号说明:常用缩写符号,指令及指令说明中常用的缩写符号说明,3.1.1 汇编指令格式及常用符号说明:常用缩写符号,指令及指令说明中常用的缩写符号说明(续),3.1.1 汇编指令格式及常用符号说明:常用缩写符号,指令及指令说明中常

5、用的缩写符号说明(续),3.1.2 寻址方式,指令获取操作数的方式称为寻址方式。MCS-51共有七种寻址方式,分别是寄存器寻址、直接寻址、寄存器间址、立即寻址、变址寻址、相对寻址和位寻址。,3.1.2 寻址方式,(1)寄存器寻址 由指令指出的寄存器的内容作为操作数。可使用的寄存器有:R0 R7、A、B、DPTR等。 例:INC R0 ;寄存器R0的值加1,3.1.2 寻址方式,(2)直接寻址 在指令中包含操作数的直接地址。可直接寻址的存储空间有三种,分别是特殊功能寄存器(只能用直接寻址方式访问)、片内RAM的低128字节和位地址空间。 例:MOV SP,#5FH ;将立即数5FH送入寄存器SP

6、 ANL 70H,#48 ;第1操作数是:内部RAM的70H单元的内容 MOV C,00H ;将00H号位单元的内容送入位操作累加器C,3.1.2 寻址方式,(3)寄存器间址 寄存器的内容作为操作数的地址,可用的寄存器是:R0,R1,DPTR。 例:ANL A,R0 ;第2操作数是,R0的内容作为地址所指向 ; RAM单元的内容 MOVX A,DPTR ;第2操作数是,DPTR的内容作为地址,所指 ;向的外部RAM单元的内容,3.1.2 寻址方式,(4)立即寻址 操作数包含在指令中。 例:MOV A,#70H ;立即数以“#”为前导符,立即数就是常数 (5)变址寻址 以PC或DPTR作为基址寄

7、存器,以A作为变址寄存器,相加形成16位 地址,该地址即为操作数地址。 例:MOVC A,A+PC MOVC A,A+DPTR,3.1.2 寻址方式,(6)相对寻址 以程序计数器PC作为基址寄存器,指令中给出偏移量rel(有符号 数),PC的当前内容与rel之和给出操作数的实际地址。相对寻址 主要用于跳转指令。 例:JC #09H SJMP #1AH (7)位寻址 对于可位寻址的单元,采用直接寻址方式寻址。 例:CPL 00H ;这里的00H是位地址,MCS-51有111条指令,可分成如下5种指令类型: (1)数据传送指令(28条); (2)算术运算指令(24条); (3)逻辑运算指令(25条

8、); (4)位操作指令(12条); (5)控制转移指令(22条)。,3.1.3 指令类型,3.2 数据传送指令,数据传送操作是单片机最基本最重要的操作之一,数据传送是否快速对程序的编写和执行速度有很大影响。MCS-51有28条数据传送指令,介绍如下。,3.2 数据传送指令,3.2.1 内部数据传送指令 3.2.2 外部数据传送指令 3.2.3 查表指令,3.2.1 内部数据传送指令,(1)以累加器A为目的操作数的指令 MOV A,Rn ;(Rn) (A) MOV A,direct ;(direct) (A) MOV A,Ri ;(Ri) (A) MOV A,#data ;data (A) 这组

9、指令的功能是把源操作数的内容送入累加器,例如: MOV A,R6 ;(R6) (A) MOV A,30H ;(30H) (A) MOV A,R0 ;(R0) (A) MOV A,#55H ;55H (A),3.2.1 内部数据传送指令,(2)以Rn为目的操作数的指令 MOV Rn,A ;(A) (Rn) MOV Rn,direct ;(direct) (Rn) MOV Rn,#data ;data (Rn) 这组指令的功能是把源操作数的内容送入当前工作寄存器,例如: MOV R2,A ;(A) (R2) MOV R0,30H ;(30H) (R0) MOV R7,#0AAH ;0AAH (R7

10、),3.2.1 内部数据传送指令,(3)以直接寻址的单元为目的操作数的指令 MOV direct,A ;(A) (direct) MOV direct,Rn ;(Rn) (direct) MOV direct1,direct2 ;(direct2) (direct1) MOV direct,Ri ;(Ri) (direct) MOV direct,#data ;data (direct) 这组指令的功能是把源操作数的内容送入由直接地址指出的内部RAM 存储单元。举例如下。,3.2.1 内部数据传送指令,(3)以直接寻址的单元为目的操作数的指令(续) 例如: MOV P1,A ;(A) (P1)

11、 MOV 40H,R2 ;(R2) (40H) MOV 0E0H,78H ;(78H) (A) ;(注:0E0H是A的SFR地址) MOV 50H,R1 ;(R1) (50H) MOV 20H,#55H ;55H (20H),3.2.1 内部数据传送指令,(4)以寄存器间接寻址的单元为目的操作数的指令 MOV Ri,A ;(A) (Ri) MOV Ri,direct ;(direct) (Ri) MOV Ri,#data ;data (Ri) 这组指令的功能是把源操作数的内容送入R0或R1指出的内部RAM存储 单元中,例如: MOV R0,A ;(A) (R0) MOV R1,7FH ;(7F

12、H) (R1) MOV R0,#80H ;80H (R0),3.2.1 内部数据传送指令,(4)以寄存器间接寻址的单元为目的操作数的指令(续) 又如,设(70H)=60H,(60H)=20H,P1口为输入口,当前P1口的 输入状态为0B7H,执行下面的程序: MOV R0,#70H ;70H (R0) MOV A,R0 ;60H (A)(70H单元的内容为60H) MOV R1,A ;60H (R1) MOV B,R1 ;20H (B) (60H单元的内容为20H) MOV R0,P1 ;0B7H (70H)(P1口内容送到R0所指单元) 结果为:(70H)=B7H,(B)=20H,(R1)=

13、60H,(R0)=70H,3.2.1 内部数据传送指令,(5)16位数据传送指令 MOV DPTR,#data16 ;data16 (DPTR) 这条指令的功能是将16位常数送入DPTR。 (6)栈操作指令 PUSH direct ;(SP)+1 (SP) ;(direct) (SP) POP direct ;(SP) (direct) ;(SP)-1 (SP) 进栈指令PUSH首先将SP加1,然后把直接地址指出的内容送到SP寻址的单元中;出栈指令POP首先将SP寻址的单元中的内容送到直接地址中,然后把SP减1。,3.2.1 内部数据传送指令,(6)栈操作指令(续) 例如,设(SP)=60H,

14、(A)=30H,(B)=70H。执行下述指令: PUSH A ;(SP)+1 (SP),(A) (SP) PUSH B ;(SP)+1 (SP), (B) (SP) 结果为:(61H)=30H,(62H)=70H,(SP)=62H。 又如,设(SP)=62H,(62H)=70H,(61H)=30H, 执行下述指令: POP DPH;(SP) (DPH), (SP)-1 (SP) POP DPL;(SP) (DPL), (SP)-1 (SP) 结果为:(DPTR)=7030H,(SP)=60H。,3.2.1 内部数据传送指令,(7)字节交换指令 XCH A,Rn XCH A,direct XCH

15、 A,Ri 这组指令的功能是将累加器A的内容和另外一个源操作数的内容相互 交换,例如:设(A)=55H,(R7)=0AAH。执行指令: XCH A, R7 结果为:(A)=0AAH,(R7)=55H。,3.2.1 内部数据传送指令,(8)半字节交换指令 XCHD A,Ri 这条指令的功能是将A的低4位和Ri指出的RAM单元低4位交换,各自 的高4位不变,例如:设(A)=15H,(R0)=30H,(30H)=34H。执 行指令: XCHD A,R0 结果为:(A)=14H,(30H)=35H。,3.2.2 外部数据传送指令,MOVX A,DPTR ;(DPTR) (A) MOVX A,Ri ;(Ri) (A) MOVX DPTR,A ;(A) (DPTR) MOVX Ri,A ;(A) (Ri) 上述指令的实现在累加器A和外部扩展的RAM/IO口之间的数据传送。执行前2条指令时,#RD引脚上有信号输出,执行后2条指令时,#WR引脚上有信号输出。执行第2条指令时,P0口是地址数据复用口,Ri输出的8位地址将出现在P0口上。这可以用于只需要8位地址总线的系统。如果需要更多的地址总线,可以在执行MOVX指令之前,安排其它口线事先输出高位地址。,3.2.3 查表指令

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

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

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