单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统

上传人:E**** 文档编号:89108469 上传时间:2019-05-18 格式:PPTX 页数:131 大小:1.38MB
返回 下载 相关 举报
单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统_第1页
第1页 / 共131页
单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统_第2页
第2页 / 共131页
单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统_第3页
第3页 / 共131页
单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统_第4页
第4页 / 共131页
单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统_第5页
第5页 / 共131页
点击查看更多>>
资源描述

《单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统》由会员分享,可在线阅读,更多相关《单片机原理 高职 计算机1第3章 MCS.51系列单片机的指令系统(131页珍藏版)》请在金锄头文库上搜索。

1、3.1 指令格式及分类,一、指令格式 80C51系列单片机指令有两种标识方式:机器语言方式和汇编语言方式。机器语言方式由二进制代码组成(通常用十六进制表示),被称为机器指令。 1汇编语言指令格式 汇编语言指令的一般格式如下: 标号: 操作码 第一操作数,第二操作数,第三操作数 ;注释,第3章 CS-51系列单片机的指令系统,说明: (1)带方括号的部分为可选项 (2)标号是用符号表示的一个地址常量。它表示该指令在程序存储器中的起始地址。标号的命名规则是:必须以字母开头,长度不超过6个字符,并以“:”结束。 (3)操作码表示指令的操作功能。每条指令都有操作码。 (4)操作数表示的是参与操作的数据

2、来源和操作之后结果数据的存放位置,可以是常数、地址或寄存器符号。指令的操作数可能有1个、2个或3个,有些指令可能没有操作数。,操作数与操作数之间用“,”分隔,操作码与操 作数之间用空格分隔。具有保存操作结果的操作数称为目的操作数,只提供数据的称为源操作数。 (5)注释字段是编程人员对该指令或该段程序的功能说明,是为了方便阅读程序的一种标注。注释以“;”开始,当汇编语言源程序被汇编成机器语言程序时,该项被舍弃。 2机器语言指令格式 机器语言指令是一种二进制代码,它包括两个部分:操作码和操作数。,80C51指令系统中有单字节、双字节和三字节共3种指令。机器指令格式如下: (1)单字节指令 在单字节

3、指令中,操作码和操作数共占一个字节,其中操作数通常为以隐含形式指定的常用寄存器。其指令格式如下: 其中,方框前面的nn表示数据所在的地址,后边的方框中是指令的内容,下同。,例如INC DPTR指令,其功能为DPTR(DPTR)+1。指令机器码为: 80C51系列单片机中,单字节的机器指令共有49条。 (2) 双字节指令 双字节指令的第一个字节为操作码,第二个字节为操作数或操作数的地址。这类指令的指令格式为:,例如MOV A,#00H指令,其功能为A00H。指令机器码为: 80C51系列单片机中,双字节的机器指令共有46条。,(3)三字节指令 三字节指令的第一个字节为操作码,第二个字节和第三个字

4、节都是操作数或操作数的地址。这类指令的指令格式为: 例如MOV 2FH,#00H指令,其功能为2FH00H。指令机器码为:,二、指令分类 80C51系列单片机指令系统共有111条不同的指令。这些指令按每条指令的执行时间分类,有64条单周期指令,45条双周期指令和2条4周期指令;如果按字节数分类则有单字节的指令49条,双字节的指令46条,三字节的指令16条。,这些指令按指令操作功能划分,有以下5类: 数据传送指令(28条) 算术运算指令(24条) 逻辑运算及移位指令(25条) 控制转移指令(22条) 位操作指令(12条),三、指令系统符号约定 1Rn:n=07,表示当前工作寄存器区的8个工作寄存

5、器R0R7。 2Ri:i=0,1。表示当前工作寄存器区的 2个工作寄存器R0,R1。 3direct:表示8位内部数据存储单元的地址。当取的值在00H7FH范围时,表示内部数据RAM;当取的值在80H0FFH范围时,表示特殊功能寄存器。表示特殊功能寄存器时也可以使用寄存器名称符号来代替其直接地址。,4#data:表示8位立即数。“#”表示后面的data为立即数。 5#data16:表示16位立即数。“#”意义同上。 6addr11:表示11位目的地址。用于ACALL和AJMP指令中,它可以是下一条指令地址第一个字节所指出的同一个2K程序存储空间中的任何值。 7addr16:表示16位目的地址。

6、用于LCALL和LJMP指令中,它可以是64K程序存储空间中的任何值。,8rel:表示带符号的8位偏移量,被用在SJMP和所有条件转移指令中。它可以是下一条指令地址-128+127范围内的任何值。 9bit:表示8位内部数据存储空间中或特殊功能寄存器区中可按位寻址区的8位位地址。当位地址取值为00H7FH时,表示内部数据RAM20H2FH单元中每一位的位地址,当位地址取值为80H0FFH时,表示特殊功能寄存器的位地址。,10/bit:表示在位操作指令中,对该位(bit)先取反,再参与运算,但不改变位(bit)的原值。 11( ):表示某一寄存器、存储单元或表达式的内容。 12( ):表示某一寄

7、存器、存储单元或表达式的内容的内容。 13 :表示其后的寄存器或表达式的值为操作数的地址。 (1)Ri:表示寄存器Ri(i=0或1)中存放的是操作数的地址。如果该地址是内部数据存储区中的地址,其取值范围为00H7FH(8052和8032为00H0FFH);如果该地址是外部数据存储区中的地址,其取值范围为00HFFH。,(2)DPTR:表示DPTR中存放的是操作数的地址,该地址位于外部数据存储空间,其取值范围为0000H0FFFFH。 14 :表示将箭头右边的值赋给箭头左边的寄存器或存储单元。 15 : 表示箭头两端的数据进行交换。 16(S):表示源操作数。 17(D):表示目的操作数。 18

8、rrr:在指令编码中,rrr三位值由工作寄存器Rn确定,R0R7对应的rrr值分别为000111。 19. $:汇编语言中表示本指令的起始地址。,3.2 寻址方式,80C51指令系统有6种寻址方式:寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、变址寻址和相对寻址。 一、寄存器寻址方式 寄存器寻址是指,在指令中直接以寄存器的名字表示操作数的地址。即寄存器的内容作为操作数。可以采用寄存器寻址的寄存器有R0R7、累加器A、DPTR以及位累加器Cy。,如果程序状态寄存器PSW的RS1RS0=10(选中第三组工作寄存器,对应地址为10H17H),设累加器A的内容为50H,则执行MOV R0,A指令后,

9、内部RAM 10H单元的值就变为50H,如图3-1所示。,二、直接寻址方式 直接寻址方式是指,在指令中以地址或符号形式直接给出操作数地址,例如:指令MOV A,30H执行的操作是将内部RAM 中地址为30H的单元内容传送到累加器A中,其源操作数30H就是存放数据的单元地址,因此该指令的源操作数是直接寻址。 设内部RAM 30H单元的内容是48H,那么指令MOV A,30H的执行过程如图3-2所示。,用这种寻址方式可以访问内部数据存储器三种地址空间: 1内部数据存储器的128个字节单元。 例如指令: MOV A,50H ;指令中源操作数的寻址 ;方式为直接寻址 2位地址空间。例如指令: MOV

10、C,00H ;指令中源操作数的寻址方式 ;为直接寻址 3特殊功能寄存器地址空间。例如指令: MOV ACC,P1 ;源操作数和目的操作数采用的 ;都是直接寻址,三、立即寻址方式 立即寻址方式是指,指令操作数部分给出的就是参与运算的操作数本身,它可以是8位二进制数或16位二进制数。即操作数是以指令字节的形式存放于程序存储器中的。在MCS-51指令系统中是用在数值前加“#”的形式来表示,如果立即数的最高位为AF英文字符时,该字符前要加“0”,以使之区别于字符串。指令MOV A,#0F3H的执行过程如图3-3所示。,四、寄存器间接寻址方式 寄存器间接寻址是指,指令操作数部分所指定的寄存器中存放的是操

11、作数的地址。可以作为寄存器间接寻址的寄存器有工作寄存器R0、R1、堆栈指针SP以及地址指针DPTR。在指令中用在寄存器前加“”形式表示。 例如:指令MOV A,R1执行的操作是将R1的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中。 设R1=50H,内部RAM 50H中的值是8AH,则指令MOV A,R1的执行结果是累加器A的值为8AH,该指令的执行过程如图3-4所示。,在下面几种情况下,可以使用寄存器间接寻址方式: (1)访问内部数据存储区的00H7FH单元 使用当前工作寄存器区的R0、R1作地址指针来间接寻址。 (2)堆栈操作指令PUSH和POP 使用堆栈指针SP进行

12、间接寻址。,(3)访问外部数据存储区的00H0FFH单元 使用当前工作寄存器区的R0、R1作地址指针来间 接寻址。 (4)访问整个外部数据存储区的0000H0FFFFH单元使用地址指针DPTR进行间接寻址。 例如指令: MOV R1,#30H ;源操作数为间接寻址,访问内部 MOV A,R1 ;RAM30H单元 又例如指令: MOV R1,#30H ;源操作数为间接寻址,访问外部 MOVX A,R1 ;RAM30H单元,五、变址寻址方式 变址寻址是指以程序计数器PC或数据指针DPTR作为基地址寄存器,以累加器A作为变址寄存器,把两者的内容相加形成16位的操作数的地址。这种寻址方式专用于访问程序

13、存储器中的常数表,不能访问数据存储器。 例如:指令MOVC A,A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加,相加结果作为操作数存放的地址,再将此地址中的操作数取出来送到累加器A中。,设累加器A=18H,DPTR=0600H,外部ROM (0618H)=8CH,则指令MOVC A,A+DPTR的执行结果是累加器A的内容为8CH。该指令的执行过程如图3-5所示。,六、相对寻址方式 相对寻址以程序计数器PC的当前值作为基地址,与指令中给定的相对偏移量rel进行相加,把得到的和作为程序的转移地址。这种寻址方式用于相对转移指令中。 所谓相对转移,是指程序转移目标地址由相对于该指令当

14、前地址的偏移量来决定。一般将相对转移指令所在的地址称为源地址,转移后的地址称为目标地址,则有: 目标地址=源地址+转移指令字节数+偏移量 在汇编语言的相对转移指令中,偏移量通常以目标地址的标号形式出现。,例如指令: JZ LOOP ;操作数为相对寻址 此时,计算偏移量的公式为: 偏移量=目标地址-(源地址+2) 如果偏移量为负数,那么这条指令执行后程序将转到该指令的前面(低地址方向);如果偏移量为正数,那么将转到该指令的后面(高地址方向)。在MCS-51指令系统中,偏移量的取值范围是+127-128。 假定有如下程序:,ORG 2000H 2000H 8030H SJMP START ;转入S

15、TART开始的程序段 2032H 0F8H START: MOV R0,A END 程序执行到SJMP指令时,转入标号为START的指令处继续执行。,指令:SJMP START 的机器码是 8030(16进制),所在地址是2000H,本指令占用2个字节,第一个字节80H是操作码,第二个字节30H是操作数,也就是偏移量。详细指令执行情况如下: 地址偏移量rel=目标地址-源地址-2 =2032H-2000H-2=30H,指令SJMP START的机器码80H30H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数30H相加

16、,形成目标地址2032H,再送回PC,使得程序跳转到2032H单元继续执行。该指令的执行过程如图3-6所示。,七、寻址方式小结,3.3 数据传送指令,单片机系统是由许多部件构成的,单片机的主要工作就是完成这些部件之间的信息交换,所以数据传送指令是CPU最基本最重要的操作之一。数据传送是否灵活、迅速,对程序的编写和执行速度影响极大。80C51系列单片机的数据传送操作可以在累加器A、工作寄存器Rn、内部数据存储器、外部数据存储器间进行。另外,我们将80C51的字节交换、半字节交换以及堆栈操作也归于数据传送类指令。,一、内部RAM和SFR间的一般传送指令 80C51系列单片机内部RAM和特殊功能寄存器SFR各存储单元之间的数据传送是通过MOV指令来实现的。MOV指令在内部RAM和特殊功能寄存器SFR之间(包含立即数)的数据传送路径如图3-7所示。其中,#

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

当前位置:首页 > 高等教育 > 其它相关文档

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