单片机技术应用教程 第3章 MCS-51单片机指令系统

上传人:知** 文档编号:252195212 上传时间:2022-02-10 格式:PPTX 页数:95 大小:690.91KB
返回 下载 相关 举报
单片机技术应用教程 第3章 MCS-51单片机指令系统_第1页
第1页 / 共95页
单片机技术应用教程 第3章 MCS-51单片机指令系统_第2页
第2页 / 共95页
单片机技术应用教程 第3章 MCS-51单片机指令系统_第3页
第3页 / 共95页
单片机技术应用教程 第3章 MCS-51单片机指令系统_第4页
第4页 / 共95页
单片机技术应用教程 第3章 MCS-51单片机指令系统_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《单片机技术应用教程 第3章 MCS-51单片机指令系统》由会员分享,可在线阅读,更多相关《单片机技术应用教程 第3章 MCS-51单片机指令系统(95页珍藏版)》请在金锄头文库上搜索。

1、第3章 MCS-51单片机指令系统3.1 指令系统的基本概念 单片机所有指令的集合称为该单片机的指令系统,不同种类的单片机具有不同的指令系统,本书主要介绍目前最流行的MCS-51单片机的指令系统及其应用。第3章 MCS-51单片机指令系统3.1.1 指令的基本格式 MCS-51单片机指令主要由标号、操作码、操作数和注释组成。比如,LOOP:MOV R0, #20H ;将数据20H送到寄存器R0标号操作码 操作数注释下面我们来了解一下各组成部分的功能特点。(1)LOOP(标号):指明该指令在ROM的起始存储地址。 标号可有可无,一般起转移指令的标志作用。 由不超过8位的数字和英文字母组成,第一字

2、符必须为英文字母,同时,不能与指令系统中的规定字符和符号相冲突,如R0、MOV等。 后面必须跟冒号(:)。第3章 MCS-51单片机指令系统(2)MOV(操作码):指明执行什么性质和类型的操作。不同的操作码具有不同的操作功能,比如MOV执行的是数据传送的操作,而ADD执行的是加法的操作。(3)R0, #20H(操作数):指明操作数的本身或者是操作数所在的地址。 操作数分为目的操作数R0和源操作数(#20H)。源操作数存放的是参加操作的原始数据或地址,目的操作数存放的是参加操作的另外一个原始数据或地址,操作结束后,结果存放于目的操作数。 源操作数可以是数据(#20H),也可以是存放数据的地址(2

3、0H)或寄存器(R0)。 目的操作数只能是存放数据的地址或寄存器。 操作数个数可以是0个(如NOP)、1个(如INC A)、2个(如MOV A, #40H)、也可以是3个(如CJNE A, #40H, LOOP),各个操作数之间要用逗号(,)隔开。第3章 MCS-51单片机指令系统(4)注释:指明该指令或程序段的功能。 注释可有可无,但必要的程序注释有助于提高程序的可读性,方便程序的修改。常常会发生这样的事,时间久了,自己写的程序自己也看不懂了,建议养成加注释的习惯。 在注释前面必须加“;”。第3章 MCS-51单片机指令系统3.1.2 MCS-51指令系统中的常用符号说明在介绍指令前,先把指

4、令中使用的一些代表符号作简单说明:Rn当前选中的寄存器区中的8个工作寄存器R0R7(n=07)。Ri当前选中的寄存器区中的2个工作寄存器R0、R1(i=0、1)。direct8位的内部数据存储器单元中的地址。#data包含在指令中的8位常数。#data16包含在指令中的16位常数。addr1616位目的地址。addr1111位目的地址。rel8位带符号的偏移字节,简称偏移量,范围为+127-128。DPTR数据指针,可用作16位地址寄存器。bit内部RAM或专用寄存器中的直接寻址位。第3章 MCS-51单片机指令系统A累加器。B专用寄存器,在执行乘法和除法前用于存放乘数和除数。执行后存放乘法的

5、高8位结果和除法的余数。C进位标志,可以作为进位位或布尔处理机中的位累加器。间址寄存器或基址寄存器的前缀,如Ri、A+DPTR。/ 位操作数的前缀,表示对该位操作数取反,如/bit。()片内RAM的直接地址中的内容。(Rn)由某寄存器间接寻址的单元中的内容。箭头左边的内容被箭头右边的内容所代替。说明:这些符号只是为了起说明指示的作用,在具体写指令的时候,必须用实际含义的内容来替代。如direct,在写指令的时候,可以用20H之类的地址码来代替。第3章 MCS-51单片机指令系统3.1.3 MCS-51指令系统的分类MCS-51指令系统共集成了111条指令,按照不同标准的分类如下。(1)按指令长

6、度来分类,可分为 单字节指令:在ROM中所占有的空间为一个存储单元。 双字节指令:在ROM中所占有的空间为两个存储单元。 三字节指令:在ROM中所占有的空间为三个存储单元。(2)按指令执行所需的时间来分类,可分为 单周期指令:执行该指令需要一个机器周期时间(如fosc = 12 MHz,T机 = 1s)。 双周期指令:执行该指令需要两个机器周期时间。 四周期指令:执行该指令需要四个机器周期时间。第3章 MCS-51单片机指令系统(3)按指令的功能分类,如表3-1所示。 表3-1 指令分类表类 别数 目功 能数据传送类29条执行内外RAM、ROM之间的数据传送算术运算类24条执行数据的加减乘除运

7、算逻辑运算类24条执行与、或、非、异或等逻辑操作位操作类12条执行位的传送和逻辑操作控制转移类22条执行无条件和有条件的转移、调用和返回操作第3章 MCS-51单片机指令系统3.1.4 寻址方式 所谓寻址方式,就是寻找操作数(一般是指源操作数)地址的方式,在用汇编语言编程时,数据的存放、传送、运算都要通过指令来完成。编程者必须自始至终都十分清楚操作数的位置,以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。MCS-51单片机指令系统有7种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址

8、。第3章 MCS-51单片机指令系统(1)立即寻址指将操作数直接写在指令中,例如:MOV A, #12H;将立即数12H送入累加器A中,12HA,如图3-1所示。MOV 30H, #31H;将立即数31H送入内RAM 30H单元中,31H30H。说明: 操作数前有立即数符号“#”,则该操作数为立即寻址。 目的操作数不能采用立即寻址方式。图3-1 立即数寻址示意图 图3-1 立即数寻址示意图 第3章 MCS-51单片机指令系统说明:直接寻址的范围为片内RAM低128 B和特殊功能寄存器。(2)直接寻址将存放操作数的内存单元的地址直接写在指令中,例如:MOV A, 12H ;将内RAM 12H单元

9、内容送累加器A中,(12H)A,如图3-2所示。MOV 30H,P0;将P0口的内容送入内RAM 30H单元中,P030H。 图3-2 直接寻址示意图第3章 MCS-51单片机指令系统(3)寄存器寻址将存放操作数的寄存器直接写在指令中,例如:MOV R0, A;将送累加器A中的内容送入寄存器R0中,AR0,如图3-3所示。说明:规定的寄存器包括8个工作寄存器R0R7、累加器A、数据指针DPTR、堆栈指针SP及其他特殊功能寄存器。 INC A;寄存器寻址方式,INC ACC;直接寻址方式。 INC R0;寄存器寻址方式,INC 00H;直接寻址方式。 图3-3 寄存器寻址示意图 第3章 MCS-

10、51单片机指令系统(4)寄存器间接寻址指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。形象地说,甲要找乙,可不知道乙的地址,但丙知道乙的地址,甲也知道丙的地址,所以甲先找到丙,从丙那里得到乙的地址,最后找到乙。例如:已知R0寄存器的内容是3AH,则指令为MOV A,R0; 将以R0中内容(即3AH)为地址的单元中的数据送到A中,(R0)A,如图3-4所示。图3-4 寄存器间接寻址示意图 第3章 MCS-51单片机指令系统(5)变址寻址将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。例如:

11、如图3-5所示,已知A=02H,DPTR=0300H,则指令MOVC A, A+DPTR的功能将累加器A和基址寄存器DPTR的内容相加(图中),结果作为操作数存放的地址(图中),再将该地址中的内容取出来送到累加器A中(图中),执行后,累加器A为ROM 0302H单元地址中的内容。图3-5 变址寻址示意图第3章 MCS-51单片机指令系统说明: 变址寻址是专门针对程序存储器的寻址方式。 MCS-51指令系统中,只有下面3条指令采用这种寻址方式:MOVC A,A+DPTRMOVC A,A+PCJMP A+DPTR(6)相对寻址程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地

12、址,该类寻址方式主要用于跳转指令。程序转移目标地址=当前PC值+相对偏移量rel+转移指令字节数相对偏移量rel是一个8位有符号数,范围为:-128+127。例如,2000H: SJMP 54H;执行指令后,程序目标地址=2000H+54H+02H=2056H,也就是说,程序跳转到2056H单元去执行了,如图3-6所示。第3章 MCS-51单片机指令系统说明:从上面读者也许发现相对寻址计算太复杂,但在实际应用中,不需要这样来计算,而直接用目标地址的标号来代替偏移量rel就可以了,因为编译软件会自动帮你算出相对偏移量,这样比较方便。如:LOOP: SJMP LOOP;跳转到LOOP处执行,如目标

13、出界,指令改成LJMP图3-6 相对寻址示意图 第3章 MCS-51单片机指令系统(7)位寻址指按位进行的寻址操作。例如:SETB 3DH;将内部RAM位寻址区中的3DH位置1,如图3-7所示。图3-7中的27H代表的是字节地址,3DH是位地址,对于这点大家一定要区分清楚,如:MOV C, 01H;这里的01H代表的是位地址,因为C是位累加器MOV A, 01H;这里的01H代表的是字节地址,因为A是字节累加器说明:对于位地址,有以下几种表示方法; 直接使用位地址的表示方法,如MOV C,05H。 使用位名称的表示方法,如MOV C,RS1。 单元地址加位的表示方法,如 MOV C,PSW.4

14、或MOV C, D0H.4。图3-7 位寻址示意图第3章 MCS-51单片机指令系统3.2.1 数据传送类指令 在MCS-51单片机系在MCS-51指令系统中,数据传送类指令是运用最频繁的一类指令。由于单片机的逻辑空间分为内部RAM、外部RAM和ROM,数据的传送也都是在这3者之间进行,传送路径如图3-8所示。列中,8031、8032内部没有程序存储器,8051/8751/AT89C51内部有4K的程序存储器,8052/8752/AT89C52内部有8K的程序存储器。图3-8 MCS-51单片机片数据传送图第3章 MCS-51单片机指令系统从图3-8中可知:(1)片内RAM的单元数据可以相互传

15、送,用MOV指令。(2)外部RAM只能与累加器A进行数据传送,外部RAM送内RAM或者内RAM送外部RAM必须经过累加器A,用MOVX指令。(3)从ROM只能读取数据,并且只能到A,如果要将ROM数据送内RAM或者外部RAM,也必须经过累加器A。第3章 MCS-51单片机指令系统1内RAM数据传送指令(1)以累加器A为目的字节的传送指令(4条)MOV A,Rn;RnA,n=07,如 MOV A, R2MOV A, Ri;(Ri)A,i=0、1,如 MOV A, R1MOV A, direct;(direct)A,如 MOV A, 30HMOV A, #data;data,如MOV A, #20

16、H 这4条指令不影响其他标志位,只影响P标志位。【例3-1】已知(23H) = 50H,(50H) = 45H,R0 = 23H,指出每条指令执行后相应单元内容的变化。MOV A, 50H;(50)A,A45H。MOV A, R0;(R0)A,A50H。MOV A, R0;R0A, A23H。MOV A, #52H;52HA, A52H。第3章 MCS-51单片机指令系统(2)以工作寄存器Rn为目的字节的传送指令(3条)这3条指令不影响任何标志位。MOV Rn, A;ARn,n=07,如MOV R2, AMOV Rn, direct;(direct)Rn,n=07,如MOV R2, 30HMOV Rn, #data;dataRn,n=07,如MOV R2, #30H【例3-2】将R3中的内容送R2。解:MOV A,R3;R3AMOV R2,A;AR2很多初学者常写出MOV R2,R3的错误指令,所以在这里必须强调,在书写指令时,必须按照规定的指令格式写,不能凭自己的想象编造,否则单片机无法执行。同时,大家可以记住,在同一条指令中,不可能同时出现两个Rn或Ri。第3章 MCS-51单片机

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

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

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