收藏 分享(赏)

单片机第三章1,2(1).ppt

上传人:dwy79026 文档编号:8054735 上传时间:2019-06-06 格式:PPT 页数:42 大小:371.50KB
下载 相关 举报
单片机第三章1,2(1).ppt_第1页
第1页 / 共42页
单片机第三章1,2(1).ppt_第2页
第2页 / 共42页
单片机第三章1,2(1).ppt_第3页
第3页 / 共42页
单片机第三章1,2(1).ppt_第4页
第4页 / 共42页
单片机第三章1,2(1).ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、第3章 MCS-51指令系统与程序设计,本章共4小节。 主要内容:1 MCS-51寻址方式 2 MCS-51的指令系统3 汇编语言程序设计重点内容:1 MCS-51的指令系统2 汇编语言程序设计,3.1 概述,一、基本概念 指令-计算机按人的要求执行某种操作的命令。 指令系统-一台计算机所能执行的指令集合。 程序-指令的有序集合。 二、汇编的方法 1.手工汇编 (一般不采用) 2.机器汇编,3.2 MCS-51指令格式与寻址方式,一、指令格式指令的表示方法称之为指令格式。在MCS-51指令中,一般指令主要由操作码、操作数组成。 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例

2、如,数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地址。 (3)指定操作结果存放的地址。,指令的一般格式,操作数可以有一个,二个或三个操作数,也可以无操作数。所以指令的一般格式如下所示:,例如: MOV A,#00H INC ANOP,MCS-51指令系统中,有一字节,二字节,三字节等不同长度的指令。,2. 二字节指令(双字节指令),例如:指令MOV A,#data 指令码格式为:,3. 三字节指令,例如指令 ANL direct,#data,二、寻址方式,1、指令描述符号介绍,Rn当前选中的寄存器区中的8个工作寄存器R0R7(n=07)。 Ri当前选中的寄存器区中的

3、2个工作寄存器R0、R1(i=0,1)。 direct8位的内部数据存储器单元中的地址。 #data包含在指令中的8位常数。 #data16包含在指令中的16位常数。 addr1616位目的地址。 addr1111位目的地址。,rel8位带符号的偏移字节,简称偏移量。 DPTR数据指针,可用作16位地址寄存器。 bit内部RAM或专用寄存器中的直接寻址位。 A累加器。 B专用寄存器,用于乘法和除法指令中。 C进位标志或进位位,或布尔处理机中的累加器。 间址寄存器或基址寄存器的前缀,如Ri,DPTR。,/ 位操作数的前缀,表示对该位操作数取反,如/bit。 片内RAM的直接地址或寄存器。 ()由

4、寻址的单元中的内容。 (x) 由x间接寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所代替。,2、寻址方式,MCS-51单片机的指令集与8051完全兼容,其寻址方式也与8051完全兼容,共有七种寻址方式。,立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址,(1)立即数寻址 操作数在指令中直接给出寻址方式。立即操作数用前面加有#号的8位或16位数来表示。,例如:,MOV A,#60H,;A#60H,MOV DPTR,#3400H,;DPTR#3400H,MOV 30H,#40H,;30H单元#40H,指令中直接给出操作数地址的寻址方式,能进行直 接寻址的存储空间

5、有:特殊功能寄存器和内部数据存储 器低128B。直接寻址方式是访问特殊功能寄存器的唯一方法(SFR即可用寄存器名称也可用其地址表示)。,(2) 直接寻址,例如:,MOV A,30H,;A内部RAM单元30H中的内容,;30H为直接给出的内部RAM的地址,MOV PSW,#20H,;PSW#20H,;PSW为直接寻址寄存器的符号地址。,MOV 90H, 20H,; 90H20H,;90H为特殊功能寄存器P1口的字节地址,(3) 寄存器寻址,操作数在寄存器中的寻址方式。该寻址方式中以寄存器名来表示寄存器。A、B 、DPTR以及R0R7 。,例如:,CLR A,;A0,INC DPTR,;DPTRD

6、PTR+1,ADD A,R5,;AA+(R5),寻址范围:通用寄存器组和部分专用寄存器,(4) 寄存器间接寻址,以寄存器中内容为地址,以该地址中内容为操作 数的寻址方式。存放操作数地址的寄存器则称为间址 寄存器(R0、R1),访问范围是:1、内部RAM低128B (表示为R0);2、外部RAM64KB (表示为DPTR),例如:MOV R0,A ;内部RAM(R0)A,图3-1 MOV R0,A间接寻址示意图,MOVX A,R1 ;A外部RAM(R1),图3-2 MOVX A,R1间接寻址示意图,例如:,MOVX DPTR,A ;外部RAM(DPTR)A,例如:,图3-3 MOVX DPTR,

7、A间接寻址示意图,运行后,MOVX DPTR,A ;外部RAM(DPTR)A,例如:,图3-3 MOVX DPTR,A间接寻址示意图,运行前,2AH,45H,运行后,寻址范围: 寄存器间接寻址方式可访问片内RAM低128单元(00H7FH);当片内RAM高128单元(80H0FFH)作为用户RAM区使用时,必须寄存器间接寻址方式来访问。此时R0和R1为间址寄存器 。 寄存器间接寻址也可用于访问片外64KB的数据存储器。但是要使用MOVX指令。此时,间址寄存器可以是R0和R1,也可以是DPTR0和DPTR1。使用R0和R1作为间址寄存器,可访问片外数据存储器低256字节的区域。使用DPTR0和D

8、PTR1作为间址寄存器,可访问整个64KB的数据存储器.,寄存器间接寻址方式也可用于堆栈操作。这是因为整个堆栈操作过程中,栈顶单元的地址是由堆栈指示器SP的值决定的,所以可将SP看作是间址寄存器。,变址寻址只能对程序存储器中数据进行操作。由于 程序存储器是只读的,因此变址寻址只有读操作而无 写操作,在指令符号上采用MOVC的形式。例如:MOVC A, A+DPTR ;A(A+DPTR)MOVC A, A+PC ;A(A+PC),(5) 变址寻址,程序存储器,图3-4 MOVC A,A+DPTR 变址寻址示意图,(6) 相对寻址,以当前程序计数器PC的 内容为基础,加上指令给出的偏移量(一字节的

9、补码)形成新的PC值的寻址方式. 相对寻址用于修改PC值,主要用于实现程序的分支转移,当前PC值=转移指令的PC值(源地址)+转移指令的字节数,转移目的地址=当前PC值+偏移量rel,注意:偏移量rel是一个8位二进制补码数。所能表示的数据范围是128 +127,所以程序转移可正向转移也可反向转移。只是反向转移时,转移目的地址小于源地址,rel应该用负数的补码表示。,例如: SJMP 08H ;PC PC+02H+08H,图3-5 相对寻址示意图,(7)位寻址指令中的操作数以位地址的形式给出。该方式可访问片内RAM的位寻址区(20H2FH)以及可位寻址的特殊功能寄存器.例如: SETB 10H

10、 ;将10H位置1,若22H单元的内容为40H,执行该指令后,22H单元的内容为41H。MOV 32H,C ;32H (CY)指令中位地址常用的表示方法有三种:,1 位地址法: SETB D5H 2 字节地址加位序的方法:SETB D0H.5 3 寄存器名加位序的方法:SETB PSW.5,3.3 MCS-51的指令系统,一 数据传送类指令所谓传送,就是把源地址单元的内容传送到目的地址单元中去,而源地址单元的内容不变;或者是源地址单元与目的地址单元内容互换.助记符为”MOV” 指令的通用格式为:,MOV ,,图3-6 MCS-51单片机片内数据传送图,1. 立即数传送指令组,(一)、片内RAM

11、数据传送指令,(1). 8位立即数传送指令(共有4条):MOV A,#data ;AdataMOV direct,#data ;directdataMOV Rn ,#data ;RndataMOV Ri ,#data ;(Ri)data,(2). 16位立即数传送指令(1条):MOV DPTR,#data16 ;DPTRdata16,例如: 执行 MOV DPTR,#2000H 后,(DPTR)=,2000H,2. 片内RAM单元之间的数据传送指令组,(1).以累加器A为目的操作数的指令(共有3条):MOV A, direct ;A(direct)MOV A, Rn ;A(Rn)MOV A,

12、Ri ;A(Ri),(2). 以Rn为目的操作数的指令(共有2条):MOV Rn, A ;Rn(A)MOV Rn, direct ;Rn(direct),(3). 以直接地址为目的操作数的指令(共有4条):MOV direct2, direct1;direct2(direct1)MOV direct, Rn ;direct(Rn)MOV direct, Ri ;direct(Ri)MOV direct, A ;direct(A),(4). 以间接地址为目的操作数的指令(共有2条):MOV Ri, A ;(Ri)(A)MOV Ri, direct ;(Ri)(direct),(二)、片外RAM数

13、据传送指令,1.使用DPTR作间址寄存器的指令(2条,范围64KB):MOVX A, DPTR ;A (DPTR)MOVX DPTR, A ;(DPTR) (A),2.使用Ri作间址寄存器的指令(2条,范围:外部RAM低128B): MOVX A, Ri ;A (Ri) MOVX Ri, A ;(Ri) (A),指令中i=(0,1)。由于R0和R1是8位地址指针,因此指令寻址范围只限于外部RAM的256个单元。,片外RAM数据传送指令与片内RAM数据传送指令相比,在指令助记符中增加了“X”。其次,片外RAM的数据传送,只能通过累加器A进行。,注意:,(三)、程序存储器数据传送指令(指外部程序存

14、储器),MOVC A ,A+DPTR ;A(A)+(DPTR) MOVC A, A+PC ;A(A)+(PC),例如:以查表方法把累加器中的十六进制数转换 为ASCII码,并送回累加器中,其查表程序如下:,1FFFH MOV A,#02H (查2的ASCII码) 2000H INC A 2001H MOVC A, A+PC 2002H RET ;数据表格为(以下是十六进制数表) 2003 DB 30H ;(0) 2004 DB 31H ;(1) 2005 DB 32H ;(2) 200C DB 39H ;(9) 200D DB 41H ;(A) 200E DB 42H ;(B) 200F DB

15、 43H ;(C) 2010 DB 44H ;(D) 2011 DB 45H ;(E) 2012 DB 46H ;(F),也可使用下面的查表程序完成: 1FFFH MOV A,#02H 2000H MOV DPTR,#2003H 2001H MOVC A, A+DPTR 2002H RET,;数据表格为(以下是十六进制数ASCII码表) 2003 DB 30H ;(0) 2004 DB 31H ;(1) 2005 DB 32H ;(2) 2010 DB 44H ;(D) 2011 DB 45H ;(E) 2012 DB 46H ;(F),(四)、数据交换指令,1. 整字节交换指令(3条): X

16、CH A, Rn ;(A) (Rn) XCH A, direct ;(A) (direct) XCH A, Ri ;(A) (Ri),2. 半字节交换指令(1条): XCHD A, Ri ;(A)30 (Ri)30,(五)、堆栈操作指令(进栈和出栈),1. 进栈指令: PUSH direct ;SP(SP)+1,(SP)(direct),2. 出栈指令: POP direct ;direct(SP), SP(SP)-1,例题:已知 (SP)=60H, (A)=05H,执行指令PUSH ACCPOP 30H 后 (30H)=,05H,05H,例题:内部RAM中,(70H)=60H,(60H)=2

17、0H,P1口为输入口,且输入数据为B7H,执行下列程序段后,各单元内容有何变化?,MOV R0,#70H MOV A,R0 MOV R1,0E0H MOV B,R1 MOV R0,P1 MOV P2,70H,;(R0)=70H,;(A)=60H,;(R1)=60H,;(B)=20H,;(70H)=0B7H,;(P2)=0B7H,结果:(P2)=0B7H,(70H)=0B7H,(60H)=20H,(B)=20H (R1)=60H,(R0)=70H,(A)=60H,例题:(2097H)=80H,则执行下列指令后A中的内容是什么?,MOV DPTR,#2097H MOVX A,DPTR,;(DPTR

18、)=2097H,运行结果: (A)=80H,例题:进入中断程序前,(PC)=101FH;(SP)=60H; (DPTR)=0123H,进入中断后执行,PUSH DPL PUSH DPH,后内部RAM的内容: (61H)= ;(62H)= ; (63H)= ;(64H)= ; (SP)=,1FH,10H,23H,01H,64H,1FH,10H,23H,01H,例题:,原(DPTR)=507BH;(SP)=62H;(30H)=40H; (31H)=50H;(32H)=80H,则执行,PUSH DPH PUSH DPL PUSH 30H PUSH 31H PUSH 32H POP DPH POP D

19、PL POP 32H POP 31H POP 30H,50H,80H,50H,40H,7BH,;(DPH)=80H,;(DPL)=50H,;(32H)=40H,;(31H)=7BH,;(30H)=50H,结果:(SP)=62H;(DPTR)=8050H;(30H)=50H;(31H)=7BH(32H)=40H,例题:设(50H)=7FH,(60H)=01H,P1口为输出口,分析执行下列指令序列后,A,50H,60H,2000H单元以及P1口的内容.,MOV A,50H MOV R0,#40H M0V R0,A XCH A,60H MOV P1,60H MOV DPTR,#2000H MOVX DPTR,A,;(A)=7FH,;(R0)=40H,;(40H)=7FH,;(A)=01H,(60H)=7FH,;(P1)=7FH,;(DPTR)=2000H,;(2000H)=01H,结果:(A)=01H,(50H)=7FH,(60H)=7FH,(2000H)=01H(P1)=7FH,练习:设(A)=09H,(DPTR)=1357H,(SP)=20H,外部 ROM (2009H)=51H分析执行下列指令序列后, 它们的内容有何和变化.,PUSH DPL PUSH DPH MOV DPTR,#2000H MOVC A,A+DPTR POP DPH POP DPL,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报