完全手册 51单片机C语言开发详解之第3章 AT89S51单片机的指令系统

上传人:飞*** 文档编号:5920184 上传时间:2017-08-07 格式:PPT 页数:58 大小:305KB
返回 下载 相关 举报
完全手册 51单片机C语言开发详解之第3章  AT89S51单片机的指令系统_第1页
第1页 / 共58页
完全手册 51单片机C语言开发详解之第3章  AT89S51单片机的指令系统_第2页
第2页 / 共58页
完全手册 51单片机C语言开发详解之第3章  AT89S51单片机的指令系统_第3页
第3页 / 共58页
完全手册 51单片机C语言开发详解之第3章  AT89S51单片机的指令系统_第4页
第4页 / 共58页
完全手册 51单片机C语言开发详解之第3章  AT89S51单片机的指令系统_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《完全手册 51单片机C语言开发详解之第3章 AT89S51单片机的指令系统》由会员分享,可在线阅读,更多相关《完全手册 51单片机C语言开发详解之第3章 AT89S51单片机的指令系统(58页珍藏版)》请在金锄头文库上搜索。

1、第3章 AT89S51单片机的指令系统,在前面章节中介绍了单片机的基础知识和AT89S51单片机的主要结构,本章主要介绍AT89S51单片机的指令系统。,3.1 指令系统概述,单片机的指令系统是一套控制单片机执行操作的编码,通常称为机器语言,机器语言指令是单片机唯一能够识别和执行的指令。为了容易理解和编程,通常使用汇编语言指令(符号指令)和高级语言(用自然语言描述)来描述计算机的指令系统。汇编指令需通过汇编程序或人工方法汇编成机器能够识别和执行的机器语言指令,高级语言需要经过编译或解释成机器能识别和执行的机器语言指令。本章采用Intel公司的标准格式汇编指令来分析AT89S51指令系统的功能和

2、使用方法。,3.1.1 指令格式,汇编语言指令是能汇编成机器语言代码的指令。AT89S51的汇编指令格式兼容MCS-51,其汇编语言指令的格式如下。标号:操作码【操作数1】,【操作数2】,【操作数3】;注释整个语句必须在一行内写完,分为四个部分。(1)第1部分标号,可以省略,它是用户定义的符号,标号实际上是符号地址,标号值代表这条指令在程序存储器中的存放地址。标号可以从字母开始,后跟18个英文字母或数字,并以冒号“:”结尾。,3.1.1 指令格式,(2)第2部分第二部分为指令操作,由25个英文字符组成,根据不用的指令而不同,它反映了指令的功能,不同功能的指令,可以查阅AT89S51的汇编手册。

3、(3)第3部分第三部分为操作数,根据不同的指令,可以有1个、2个、3个操作数,或根本没有操作数。它与操作助记符之间至少有一个空格,可以由多个空格,操作数之间用逗号“,”分开。它反映的是指令的对象。(4)第4部分第四部分为注释,注释也可以省略,它以分号“;”开始,是用户对该条指令或程序的说明,注释必须在一行之内写完,换行时需另外以分号“;”开始,注释内容可以为任何字符。,3.1.2 AT89S51的伪汇编指令,汇编语言除了定义了汇编指令外,还定义了一些汇编伪指令,以支持汇编的运行。伪指令是汇编时不产生机器语言代码的指令,是CPU不能执行的指令,仅提供汇编用的某些控制信息。AT89S51汇编语言常

4、用的伪指令有如下几条。(1)ORG定位伪指令格式:ORG mm一般是16位二进制数,m指出在该指令后的(伪)指令的汇编地址,即生成的机器指令的起始存储器地址。它必须放在每段源程序或数据段的开始行,在一个汇编语言的源程序中允许存在多条定位伪指令,但其中每一个m值都应和前面生成的机器指令存放地址不重叠。,3.2 AT89S51单片机的寻址方式,所谓寻址方式就是如何寻找存放操作数的空间地址,并把操作数提取出来的方法,它是单片机的重要性能指标之一,也是汇编语言程序设计的最基本的内容之一。在汇编程序设计中,数据的存放、传送、运算都要通过指令来完成,编程必须自始至终都十分清楚操作数的位置,以便将它们传送到

5、适当的空间去操作,这些都要针对系统的硬件环境编程。因此,如何寻找存放操作数的空间位置和提取操作数就十分重要。MCS-51单片机有8中寻址方式:寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、基寄存器加变址寄存器间接寻址、相对寻址、位寻址和页面寻址,下面作详细讲解。,3.2.1 立即寻址,立即寻址方式中操作数包含在指令字节中,操作码后面紧跟的是1B或2B操作数(称为立即数),即操作数以指令字节的形式存放于程序存储器中,在编写成程序时用“#”号表示,以区别于直接地址。例如下面的代码。MOVA, #5AH;5AH AMOVDPTR, #2000H;2000H DPTR,3.2.2 直接寻址,直接寻址

6、方式在指令中直接给出操作数所在存储单元的地址,该地址指出了参与运算或传送的数据所在的字节单元或位的地址。直接寻址方式访问以下3种存储空间:(1)特殊功能寄存器(特殊功能寄存器只能用直接寻址方式访问,即可以用它们的地址,也可以用它们的名字);(2)内部数据存储器的低128B(对于8032系列芯片,其内部数据存储器高128B(80H0FFH)不能用直接寻址方式访问);,3.2.2 直接寻址,(3)位地址空间。例如下面的代码。MOVA, 5AH;(5AH) A是把片内RAM中的5AH这个地址单元的内容送入累加器A。MOVA, P1 ;(P1) A是把SFR中P1口的内容送入累加器A,它也可以写成:M

7、OVA, 90H其中90H就是P1口的地址。直接寻址的地址需占1个字节,所以一条直接寻址方式的指令至少需要占内存两个单元。,3.2.3 寄存器寻址,寄存器寻址就是由指令指出某一个寄存器的内容为操作数,对所选的工作寄存器组R0R7进行操作,累加器ACC、B寄存器、数据指针DPTR和进位C(布尔处理机的累加器C)也可用寄存器寻址的方式进行访问,只是它们的寻址具体寄存器名会隐含在操作码中。例如下面的代码。MOVA, R0;(R0)AMOVP1, A;(A) P1口,3.2.4 寄存器间接寻址,操作数的地址事先存放在某个工作寄存器中,寄存器间接寻址方式是把指定寄存器的内容作为地址,由该地址所指定的单元

8、内容作为操作数。AT89S51单片机规定R0和R1为间接寻址寄存器即地址指针(对堆栈操作指令用堆栈指针SP),它可寻址内部RAM低128B地址单元的内容。寄存器间接寻址方式也可适用于访问外部扩展的数据存储器,用R0、R1或DPTR作为数据指针,当用R0、R1作为数据指针访问片外RAM时又称为页面寻址。寄存器间接寻址用符号表示。例如下面的代码。MOVA, R0;(R0) A指令中所规定的工作寄存器R0的内容为地址指针,将该地址指针单元的内容送给累加器A。,3.2.5 相对寻址,相对寻址方式是以当前的PC值为基准,加上指令中给定的偏移量rel,所得的结果作为转移地址。一般将相对转移指令操作码所在的

9、地址称为源地址,转移后的地址称为目的地址,则有:目的地址=源地址+相对转移指令字节数+relAT89S51单片机指令中相对转移指令字节数既有2个字节的,也有3个字节的,偏移量为有符号数,其取值范围为-128B+127B,在程序中一般以补码表示。,3.2.6 基址加变址寻址,基址寄存器加变址寄存器间接寻址的寻址方式是以16位的PC或DPTR作为寄存器,以8位的累加器A作为变址寄存器,基寄存器和变址寄存器的内容相加形成新的16位的地址,该地址为操作数的地址。在MCS-51单片机中,用变址寻址方式只能访问程序存储器。访问时只能从ROM中读取数据而不能写入数据。故这种寻址方式多用于查表操作。例如下面的

10、代码。MOVCA, A+DPTR表示基寄存器DPTR的内容与变址寄存器累加器A的内容相加形成新的16位地址,该地址单元的内容送累加器A。,3.2.7 位寻址,在计算机中,操作数不仅可以按字节为单位进行存取和操作,而且也可以按8位二进制数种的某一位为单位进行存取和操作。位寻址方式是其操作数是8位二进制中的某一位。在指令中给出的是位地址,即给出片内RAM某一单元中的一位。位地址在指令中用bit表示。AT89S51单片机片内RAM有两个区域可以位寻址,其一是20H2FH的16个单元的128位;其二是字节地址为8的倍数的特殊功能寄存器。,3.2.7 位寻址,AT89S51单片机中位寻址常用以下两种方式

11、表示。(1)直接使用位地址。对于20H2FH的16个单元共128位的位地址一般采用直接使用位地址的方式,如位地址08H表示21H单元的0位。(2)对于特殊功能寄存器,还可以直接用寄存器名字加位数表示,如PSW.3(或位地址0D3H)。例如下面的代码。MOVC, 01H;01H为位地址,3.2.8 页面寻址,用寄存器间接寻址方式访问外部扩展的数据存储器,当用R0、R1作为地址指针访问片外RAM时的寻址方式称为页面寻址。页面地址由P2口的内容决定,页面内的地址由R0或R1的内容决定。例如下面的代码。MOVP2, #0A0HMOVR0, #01HMOVA, #10HMOVRO, A表示将累加器A中的

12、数据10H传送到页面为A0H,页内地址为01H的外部数据存储器地址单元,即实际为传送到0A001H地址单元。,3.2.9 寻址方式与存储器的对应,虽然AT89S51单片机的寻址方式有很多种,但指令对哪一个存储器空间进行操作是由指令的操作码和寻址方式确定的。一般来说,有以下几点。程序存储器:只能采用立即寻址和基寄存器加变址寄存器间接寻址的寻址方式;特殊功能寄存器空间:只能采用直接寻址方式,不能采用寄存器间接寻址方式;内部数据存储器高128B:只能采用寄存器间接寻址方式,不能采用直接寻址方式;内部数据存储器低128B:既能采用寄存器间接寻址方式,又能采用直接寻址方式;外部扩展的数据存储器:只能采用

13、MOVX指令访问。,3.3 AT89S51单片机的数据传送指令,AT89S51单片机指令系统共有42种操作助记符来描述33种操作功能,由111条指令组成。其中单字节指令49条,双字节指令45条,三字节指令17条,下面分别介绍。CPU在进行算术和逻辑操作时,绝大多数指令都有操作数,所以数的传送是一种最基本、最主要的操作。在通常的应用程序中,传送指令在程序中占着极大的比例,数据传送是否灵活、迅速,对整个程序的编写和执行都起着很大的作用。,3.3.1 以累加器A为目的操作数的指令, MOVA, Rn; 寄存器寻址,(Rn) A, n=07 MOVA, direct; 直接寻址,(direct) A

14、MOVA,Ri; 间接寻址,(Ri) A,i=0或1 MOVA,#data; 立即寻址,data A这组指令的功能是把源操作数的内容送到累加器A,源操作数的内容不发生改变。,3.3.2 以Rn为目的操作数的指令, MOVRn, A; 寄存器寻址,(A)Rn MOVRn, direct; 直接寻址,(direct) Rn MOVRn,#data; 立即寻址,data Rn这组指令的功能是把源操作数的内容送到当前工作寄存器组R0R1中的某一个,源操作数的内容不发生改变。,3.3.3 以直接地址为目的操作数的指令, MOVdirect, A; 寄存器寻址,(A) (direct) MOVdirect

15、, Rn; 直接寻址,(Rn) (direct) MOVdirect1,direct2; 直接寻址,(direct2) (direct1) MOVdirect,Ri; 寄存器间接寻址,(Ri) (direct) , i = 0 1 MOVdirect,#data; 立即寻址,data (direct)这组指令的功能是把源操作数的内容送到直接地址指出的存储单元。,3.3.4 以间接地址为目的操作数的指令, MOVRi, A; 寄存器寻址,(A)(Ri), i = 0 1 MOVRi, direct; 直接寻址,(direct)(Ri) , i = 0 1 MOVRi,#data; 立即寻址,da

16、ta (Ri) , i = 0 1这组指令的功能是把源操作数的内容送到以R0或R1内容为地址的内部RAM存储单元。,3.3.5 16位数据传送的指令,MOVDPTR,#data16; 立即寻址,data16DPTR或dataHDPH,dataLDPL这条指令的功能是把16位立即数传送到数据指针DPTR,16位数据的高8位送入DPH,低8位送入DPL。,3.3.6 查表指令, MOVC A, A+PC; 基寄存器加变址寄存器间接寻址,(A)+(PC)A MOVC A, A+DPTR; 基寄存器加变址寄存器间接寻址,(A)+(DPTR)A这组指令的功能是以基寄存器(PC或DPTR)的内容与变址寄存器A的内容作为无符号数相加,组成新的16位地址,该地址单元的内容送累加器A。这两条指令专门用于当数据放在程序存储器中时来查数据表。这里应特别注意PC总是指向下一条指令的地址。,

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

当前位置:首页 > 中学教育 > 其它中学文档

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