MCS-51指令系统

上传人:飞*** 文档编号:54588543 上传时间:2018-09-15 格式:PPT 页数:169 大小:4.36MB
返回 下载 相关 举报
MCS-51指令系统_第1页
第1页 / 共169页
MCS-51指令系统_第2页
第2页 / 共169页
MCS-51指令系统_第3页
第3页 / 共169页
MCS-51指令系统_第4页
第4页 / 共169页
MCS-51指令系统_第5页
第5页 / 共169页
点击查看更多>>
资源描述

《MCS-51指令系统》由会员分享,可在线阅读,更多相关《MCS-51指令系统(169页珍藏版)》请在金锄头文库上搜索。

1、1,本 章 重 点,寻址方式 数据传送类指令 算术运算类指令 逻辑运算类指令 位操作指令 控制转移类指令课时安排:10个课时,2,第3章 MCS-51指令系统,3.1 指令系统简介,3.2 寻址方式,3.3 数据传送指令,3.4 算术运算指令,3.6 位操作指令,指令的英文全称,3.7 控制转移指令,3.5 逻辑运算指令,思考题,3,教学目的: 学习MCS51单片机的指令系统机汇编语言程序设计方法。 要求: 1熟悉MCS51单片机的种寻址方法。 2熟悉MCS51单片机的指令系统(类指令)。 3掌握汇编语言程序设计方法。 4会用汇编语言编写基本程序段。 重点: 1MCS51单片机的寻址方法。 2

2、MCS51单片机的指令系统。 3基本程序设计方法。 难点: 1. 各种转移类指令的寻址范围计算。 2. 各类指令的应用场合。 3. 注意各类指令对程序状态字的影响。,4,3.1 指令系统简介,一、汇编语言程序设计的意义 什么是程序? 完成某项特定任务的指令的集合。 计算机按程序一条一条地依次执行指令,从而完成指定任务。 要让计算机完成各项任务,就应设计各种程序。,5,6,7,标号: 指令 ;注释,1)标号:是用户设定的一个符号,表示存放指令或数据的存储单元地址。,标号是由字母开始的18个字母或数字串组成。,标号后面必须紧跟冒号“ :”,作为标号的结束。,一个标号只能表示一个地址,不允许多个地址

3、使用同一个标号。,二、汇编语言的格式,8,2)指令:指令分为两类执行指令和伪指令。,执行指令是计算机指令系统给出的各种指令。已在前一章介绍过,即由“操作码”和“操作数”组成。,伪指令是由汇编程序规定,仅在机器汇编时供汇编程序识别和执行,用来对汇编过程进行控制和操作,并不产生供机器直接执行的机器码,也不会直接影响存储器中代码和数据的分布。,9,指令 = 操作码 + 操作数 操作码表示该指令所能执行的操作功能。 操作数表示参加操作的数本身或操作数所在的地址。操作码与操作数之间用空格分开,操作数与操作数之间用逗号分开,带方括号的项可有可无。例如:MOV A, 30H,MCS-51指令格式:,标号:,

4、操作码助记符,第一操作数,,第二操作数,;注释,10,3)注释:只是对程序的说明,注释信息和程序一起存储、打印,但汇编时不被翻译,不会出现在机器代码的目标程序中,也不影响程序的执行。,注释必须以分号“ ;”开始,注释信息占用多行时,每行都必须以“ ;”开始。,11,三、指令中操作数的描述符号,Rn 当前寄存器组的8个通用寄存器R0 R7。Ri 可用作间接寻址的寄存器,只能是R0、R1。Direct 8位直接地址,在指令中表示直接寻址方式,寻址包括片内低128B RAM单元地址、以及高128BRAM区中的26个SFR地址。#data 8位立即数。#data 16 16位立即数。addr 16 1

5、6位目的地址,只限于在LCALL和LJMP指令中使用。addr 11 11位目的地址,只限于在ACALL和AJMP指令中使用。rel 8位带符号补码数,作为转移指令中的偏移量。,12,DPTR 16位外部数据指针寄存器。bit 内部RAM中的可直接寻址位。 A 累加器。ACC 直接寻址方式的累加器。B 寄存器B。C 进、借位标志位,是布尔处理机的累加器,也称之为位累加器。 间接寄存器前缀标志。/ 加在位地址前面,表示对该位状态求反。(x) x中的内容。(x) x中的地址中的内容。 当前指令存放的地址 。,13,四、 指令字节,在二进制的80C51指令中,单字节指令的操作码和操作数加起来只有1B

6、;双字节指令的操作码和操作数各占1B;三字节指令的第1字节为操作码,第2、第3字节为操作数、操作数地址或符号。 1单字节指令(49条)在80C51指令指令系统中,单字节指令可分为两大类:无操作数的单字节指令和含有操作数寄存器编号的单字节指令。1)无操作数单字节指令这类指令只有操作码字段,操作数隐含在操作码中。例如:INC DPTR 指令码为 :,14,2)含有操作数寄存器号的单字节指令单字节的指令码由操作码字段和指示操作数所 在寄存器号的字段组成。例如;MOV A,Rn指令码为:其中,rrr为寄存器Rn的编号,15,2双字节指令(45条)双字节指令的操作码字节在前;在后面的操作数字节可以是立即

7、数,也可以是操作数所在的片内RAM地址。例如:MOV A,#23H指令码为:这条8位数传送指令的含义是把指令码第2字节立即数23H取出来存放到累加器(A)中。该指令的操作码占1B;23H为源操作数,也是1B;累加器(A)是目的操作数寄存器,隐含在操作码字段中。,16,3三字节指令(17条)这条指令的指令码的第1字节为操作码;第2和第3字节为操作数或操作数地址,有如下3类。1)16位数据例如:MOV DPTR,#26ABH指令码为:,操作数DPTR同样隐藏在了操作码中,17,2)8位地址和8位数据例如:MOV 74H,#0FFH指令码为:3)16位地址例如:LCALL 2020H指令码为:在程序

8、设计中,应尽可能选用字节少的指令。这样,指令所占存储单元少,执行速度也快。,18,19,3.2 寻址方式,3.2.4 立即寻址,3.2.2 直接寻址,3.2.1 寄存器寻址,3.2.3 寄存器间接寻址,3.2.5 变址寻址,3.2.7 相对寻址,3.2.6 位寻址,思考题,3.2.8 各种寻址方式小结,20,寄存器寻址方式就是操作数在寄存器中,因此指定了寄存器就能得到操作数。寄存器寻址方式的指令中以符号名称来表示寄存器。例如:MOV A, R2 ;其功能是把寄存器R2中的内容传送到;累加器A中。由于操作数在R2中,因; 此指令中指定了R2,3.2.1 寄存器寻址,图3-1 寄存器寻址示意图,2

9、1,说明:(1)寄存器寻址方式可以用在目的操作数中,也可以用在源操作数中。(2)寄存器寻址的主要对象是通用寄存器,共有4组通用寄存器,但寄存器寻址只能使用当前寄存器组。因此指令中的寄存器名称只能是R0R7。(3)寄存器寻址还包括部分专用寄存器SFR,如累加器A、寄存器B(但仅限于乘法指令)、地址寄存器DPTR。,22,指令中操作数直接以单元地址的形式给出,就称之为直接寻址。例如:MOV A, 23H,图3-2 直接寻址示意图,3.2.2 直接寻址,23,说明:直接寻址方式只能使用8位二进制数表示的地址,因此这种寻址方式的寻址范围只限于内部RAM区。即:(1)低128字节。在指令中直接以单元地址

10、的形式给出。(2)专用寄存器区。可以以单元地址的形式给出,也可以以寄存器符号形式给出(对SFR来说,地址一定、符号一定,寄存器符号等同于寄存器直接地址,这时程序编译是就确定下来的)。,24,25,26,重要,ACC与A的区别:ACC表示的是累加器的直接地址E0H(直接寻址)A表示的累加器这样一个寄存器的内容(寄存器寻址),27,寄存器间接寻址方式中,寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的。例如:MOV A, R0,3.2.3 寄存器间接寻址,图3-3 寄存器间接寻址示意图,28,寄存器间接寻址方式的寻址范围是:(1)内部RAM的低128字节。此时只能使用R0或R1作间址寄

11、存器,其通用形式为Ri。,(2)外部RAM的64KB范围。此时一般使用DPTR作间址寄存器,其形式为DPTR。 如: MOVX A, DPTR,(3)外部RAM的低256字节。此时使用R0或R1作间址寄存器。 如: MOVX A, R0。(有什么问题?),(4)堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以SP作间址寄存器的间接寻址方式。,29,当指令中的源操作数为8位或16位常数时,就称为立即寻址方式,例如:MOV A, #23H ;其中第二操作数“23H”就是立即数,含义是将立即数23H传送到累加器;A(目的操作数)中MOV DPTR, #2000H ;将立即数2000H传

12、送到数据指针DPTR(16位寄存器)寄存器中,3.2.4 立即寻址,30,图3-4 立即寻址示意图,31,说明:立即数长度必须小于或等于目的操作数的长度。在上例中,如果累加器A字长为8位,则不能将16位二进制数传送到累加器A中,即如下指令在汇编时将出错:MOV A, #1234H ;由于累加器A长度只有8位, 无法装入16位二进制数1234H但立即数长度可以小于目的操作数长度,例如:MOV DPTR, #02HMOV DPTR, #2H,32,变址寻址方式是为了访问ROM中的数据表格。以DPTR或PC作基址寄存器,以累加器A作变址寄存器,然后以两者内容相加形成的16位地址作为操作数地址,达到访

13、问数据表格的目的。例如:MOVC A, A+DPTR,3.2.5 变址寻址,图3-5 变址寻址示意图,33,说明:(1)变址寻址方式只能对ROM进行寻址,或者说它是专门针对ROM的寻址方式,寻址范围可达64KB。,(2)变址寻址指令只有3条:MOVC A, A+DPTR MOVC A, A+PCJMP A+DPTR,34,位寻址方式是单片机系统特有的一种寻址方式。位寻址指令中可以直接使用位地址。例如:MOV C, 23H ; 指令中的“C”是进位标志Cy的简称,23H是位寻址空间内的位地址MOV C, ACC.7 ;SFR中的位既可以使用位地址也可以使 用符号+位序号,3.2.6 位寻址,35

14、,位寻址的寻址范围:(1)内部RAM中的位寻址区(20H2FH)。位寻址区中的位有两种表示方法,一种是位地址;一种是单元地址加位。,(2)专用寄存器SFR的可寻址位。,36,相对寻址的含义是以程序计数器PC的当前值加上指令中给出的相对偏移量rel作为程序计数器PC的值,这一寻址方式用在条件转移指令中。例如:JZ 20H ;当累加器A为零时,PCPC+2+rel。而当A0时,PCPC+2,即没有转移,顺序执行“JZ 20H”指令的下一条指令,3.2.7 相对寻址,转移的目的地址可用如下公式表示: 目的地址 转移指令地址 转移指令字节数 rel,37,图3-6 相对寻址示意图,38,3.2.8 各

15、种寻址方式小结,小结: 1. 对片外ROM只能用变址寻址方式,或者反过来说,变址寻址是一种专门用于程序存储器的寻址方式。 2. 片内RAM由于使用频繁,因此寻址方式多。 3. 对片外RAM,只能使用寄存器间接寻址。 4. 立即寻址方式只涉及8位或16位数据。 5. 相对寻址解决程序转移问题。 6. 本节所讲的各种寻址方式都是针对于源操作数,但实际上目的操作数也有寻址问题。,39,40,3.3 数据传送指令,3.3.1 内部数据传送指令(MOV),3.3.2 外部数据传送指令(MOVX),3.3.4 堆栈存取指令(PUSH, POP),3.3.5 数据交换指令(XCH, XCHD, SWAP),3.3.3 查表指令(MOVC),概 述,41,在MCS-51指令系统中,数据传送指令包括:,概 述,数据传送指令是最常用、最基本的一类指令。这类指令一般是把源操作数传送到目的操作数,指令执行后,源操作数不变,目的操作数修改为源操作数。,42,(3) 将程序存储器ROM中某一单元的信息传送到累加器A中的指令,这类指令使用“MOVC”作为指令操作码的助记符(“C”是代码的意思)。,(4) 堆栈操作指令(PUSH、POP)。,(5) 字节交换指令(XCH、XCHD、SWAP)。,

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

当前位置:首页 > 行业资料 > 其它行业文档

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