一文详解80C51单片机的指令系统

控制/MCU

1814人已加入

描述

指令是指示计算机执行某种操作的命令,计算机能识别执行的只能是二进制代码,以二进制代码来描述指令功能的语言,称为机器语言。

由于机器语言不便于人们识别,记忆,理解和使用,因此便对每条机器语言指令用助记符号来形象表示,这就便形成了汇编语言。

一条指令是机器语言的一个语句,包括操作码字段和操作数字段。一台计算机所具有的全部指令的集合,称为这台计算机的指令系统。

不同的微处理器,其指令系统一般是不同的。

80C51单片机指令系统共有111条指令,具体特点如下:

1)执行时间短,单机器周期指令(64条),双机器周期指令(45条),而四机器周期指令只有2条;

2)指令编码字节少,单字节指令(49条),双字节指令(45条)和最长的三字节指令(17条);

3)位操作指令丰富(17条)。

为便于阅读指令,对MCS-51指令助记符的一些符号约定意义做以说明:

80C51

指令的基本格式及常用符号

指令的汇编语言形式是用助记符来表示一条指令,其基本形式为操作码+操作数。

操作码表示该指令将要做什么样的操作,操作数是该指令操作的对象,一般是操作所需要的数或所需要的数的存放地址。

指令的字节数

80C51单片机指令有单字节指令,双字节指令和三字节3种。

1)单字节指令单字节指令有49条,8位二进制代码中既包含操作码的信息,也包含操作数的信息;或8位二进制代码中只包含操作码的信息,而操作数的信息被隐含了。

例如:

80C51

机器码为1110 1xxx,其中1110 1为操作码,xxx为操作数n,若Rn为R3,那么xxx=011,则该机器码为EBH。

例如:

80C51

机器码为04H,被隐含的操作数为累加器A。

2)双字节指令有45条,机器码的第一个字节表示操作码,第二个字节表示操作数。

例如:

80C51

3)三字节指令有17条,第一字节表示操作码,另两个字节是操作数。

例如:

80C51

指令的执行时间

MCS-51系列单片机指令执行时间有单周期指令,双周期指令和四周期指令。

汇编语言的语句结构

一般来讲,汇编语言的语句结构由5部分组成,即标号,操作助记符,目的操作数,源操作数和注释.

如下:

80C51

[]表示可选项;标号是用户设定的地址符号,它代表该指令机器码存放在存储器中第一个字节的地址。

标号必须以字母开头,气候跟1-8个字母或数字,并以“:”结尾。

80C51的寻址方式

寻址方式就是寻找操作数的方式,由于80C51有片内RAM,片内ROM,片外RAM,片外ROM 4个不同的存储区域,数据存储的方式十分灵活。

在用汇编语言编程时,数据的存放传送,运算都要通过指令来完成。

所以编程者必须自始至终都要十分清楚操作数的位置,以及如何将它们传送到适当的寄存器去参与运算,才能有效地完成汇编程序的编写。

80C51单片机有7种寻址方式,即寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址,相对寻址,位寻址。

源操作数和目的操作数都有各自的寻址方式,下面以源操作数为例来讲述寻址方式。

1.立即寻址

操作数就在指令代码中,在操作码之后,是一个8位的二进制数或者16位的二进制数,称为立即数,这种寻址方式称为立即寻址。

例如:

80C51

在80C51系统中,采用#作为立即数的前缀。

例如:

80C51

2.直接寻址

直接寻址是指令中直接给出操作数所在单元的地址。

采用直接寻址的存储空间有:1)内部RAM的低128字节(00H~7FH)2)位地址空间3)特殊功能寄存器,特殊功能寄存器只能用直接寻址方式操作

例如刚才说的例子就是直接寻址的方式。

80C51

在程序的转移,调用指令中,由于指令直接给出了目的地址,执行这些指令后,程序指针PC的内容将直接由指令给出的地址来更新,所以这些指令的寻址方式也可以归属为直接寻址。

3.寄存器寻址

由指令指出某一寄存器的内容为操作数,这种寻址方式称为寄存器寻址。

可以采用的寄存器有R0~R7,累加器A,寄存器B,数据指针DPTR和布尔处理器的位累加器C。

例如:

80C51

指令中源操作数R0是寄存器寻址。该指令的功能是将工作寄存器R0中的内容传送到A中,如R0中的内容为44H,则执行该指令后,A的内容也为44H。

在MCS-51中寄存器寻址Rn按所选定的工作寄存器R0~R7进行操作,指令机器码的低3位的8种组合000,001,....,110,111分别对应R0~R7。

例如:

80C51

这8条指令对应的机器码分别为E8H~EFH。

4.寄存器间接寻址

指令中给出寄存器的名称,以寄存器的内容为地址再取一次数,该数才是真正的操作数,这种寻址方式称为寄存器间接寻址。

在80C51系统中,可以用作间接寻址的寄存器有R0,R1,以及数据指针寄存器DPTR。

寄存器间接寻址对应的空间为:片内RAM:采用@R0,@R1,或SP片外RAM:采用@R0,@R1,或DPTR

5.变址寻址

以DPTR或PC为基址寄存器,累加器A为变址寄存器。把二者内容相加,结果作为操作数的地址,这种寻址方式称为变址寻址。

这类指令只限于访问ROM,常用语查表操作和指令跳转。

例如:

80C51

6.相对寻址

相对寻址方式是以PC的内容为基地址,加上指令中给定的偏移量,所得结果作为转移地址送PC寄存器。

偏移量是8位带符号数的补码,真值在-128~+127之间。以下一条指令的PC值为起点,转移访问范围在-128~+127。

它用于访问程序存储器,常出现在相对转移指令中。

例如:

80C51

是一条累加器A为0就转移的双字节指令,则执行该指令时的当前PC为2052H,即当前PC值是相对转移指令取指结束时的值。

偏移量rel是有符号的单字节数。以补码表示,其值范围在-128~+127。

负数表示从当前地址向前转移,正数表示从当前地址向后转移。所以,相对转移指令满足条件后,转移的地址为:

80C51

7.位寻址

从本质上来说,位寻址也是直接寻址的一种形式。它的寻址对象是可寻址位空间中的一个位,而不是一个字节。

由于在使用上存在一些特殊性,故单独列出。位寻址方式的寻址范围是可寻址位,包含内部RAM20H~2FH单元中的位和部分SFR位。

位操作指令中的位地址有4种表示方法:

1)直接地址,如00H

2)点操作符,如20H.0,PSW.5

3)位名称,如F0

4)经伪指令定义过的字符名称,如USER BIT PSW.5

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分