您的位置: 网站首页 > 电子与嵌入式 > 单片机原理与应用 > 第3章 MCS-51单片机指令系统 > 【3.1 概 述】

3.1 概 述

 

在前面章节的学习中,已经对单片机的内部结构和工作原理有了一个基本了解。在此基础上,本章将进一步介绍指令的格式、分类和寻址方式,并用大量实例阐述MCS-51指令系统中每条指令的含义和特点,以便为汇编语言设计打下基础。

单片机的功能是从外部世界接收信息,并在CPU中进行加工、处理,然后再将结果送回外部世界。要完成上述一系列操作,首先要提供一套具有特定功能的操作命令,这种操作命令就称为指令。CPU所能执行的各种指令的集合称为指令系统,不同的机种有不同的指令系统。例如,01001111B4FH)代码,对于Z80CPU是完成将累加器A中的内容传送给寄存器C;对于M6800CPU是完成将累加器清零操作;而对MCS-51单片机却是完成累加器A和工作寄存器R7的“与”运算。

3.1     

指令是CPU执行某种操作的命令,CPU所具有的全部指令的集合称为指令系统。指令系统是制造厂家在设计CPU时所赋予它的。用户必须正确书写和使用指令。学习指令系统,掌握指令的功能和应用是非常重要的,这是用汇编语言进行程序设计的基础。本章将详细介绍MCS-51单片机指令系统的寻址方式和各种指令。

3.1.1  基本概念

以一组二进制码表示的指令称为机器指令。计算机只能识别和执行机器指令。在计算机中,指令依次地存储于程序存储器中。指令的编码规则称为指令格式。一条指令的二进制码位数称为指令的长度。不同类型的计算机,指令的长度和格式是不一样的,所能执行的指令类型和数目也不同,通常把某类计算机所能执行的全部指令的集合称为指令系统。

1.指令格式

指令的具体格式依赖于计算机的结构特征,但指令的组成是一样的,都包含操作码和操作数两个部分。指令的一般格式为:

操作码   操作数

操作码用来表示执行什么性质和类型的操作,如加法、减法等。操作码的位数取决于计算机的指令系统中指令的条数。例如,对于32条指令的指令系统,操作码为5位。若指令系统中有N条指令,操作码的位数为n,则有关系式:

N2n

操作数用以指出参加操作的数据或数据的存储地址。

不同类型的指令,操作数的个数是不一样的。在具有多个操作数的指令中,各操作数分别称为第一操作数、第二操作数等。例如:加法指令,两个数ab相加,ab就是参加操作的两个操作数。对于加法等操作,有些计算机指令还指出存放操作结果的地址,另外一些计算机把运算结果总是存放在某一个寄存器中(称为累加器)。

若指令的操作数字段的内容就是一个参加操作的数据,则这种操作数称为立即数。对于大多数的指令,操作数存放于寄存器或存储器中(这部分存储器常称为数据存储器),此时指令的操作数字段仅指出操作数所在的寄存器或存储器地址。

存储器由若干单元组成,每个单元都有一个相应的地址(这类似于一幢大楼,有若干房间,每个房间都有房间号),计算机是根据地址对存储器存取数据的。存储器的地址也是由一组二进制码表示的,地址的位数依赖于存储器空间的大小。若存储器共有M个单元,地址有m位,则有:

2mM

产生操作数地址的方式称为寻址方式,常用的一般有立即寻址、直接寻址、间接寻址、寄存器寻址、相对寻址和变址寻址等。

2.指令类型

一台计算机的功能在很大程度上依赖于它的指令系统。指令系统中指令越丰富,指令的功能越强,则程序设计越方便,速度越快,效率也越高。按照指令的功能,指令可以分成数据传送、算术运算、逻辑运算、位操作指令和程序控制等几种类型。

3.字和字长

如前所述,计算机中的数据和指令都是一组二进制编码,它们是作为一个整体来进行处理和运算的,统称为机器字,简称字。一个机器字所包含的二进制码位数称为字长,更确切地说,字长是指CPU一次可处理(如数据传送、数据运算等)的二进制数的位数。计算机的字长应和存储器单元、运算器中各部件的位数相一致。

机器字的位数越多,它所表示的数据有效位数越多,精度就越高,运算的误差也越小,在运算速度一定的情况下,“字长”长的计算机,处理数据的速度高。

字长是衡量计算机性能的一个重要指标,为了便于处理,计算机的字长为字节的整数倍。一个字节为8位二进制码,根据字长分类,计算机常可以分为8位机、16位机、32位机和64位机等。

3.1.2  MCS-51系列单片机的指令系统

MCS-51单片机的指令系统专用于MCS-51系列单片机,它有42个操作码,代表33种操作功能,其中有的功能可以有几种操作码(如数据传送的操作码助记符有MOVMOVCMOVX等),指令的操作码与操作数各种可能的寻址方式相结合共有111条指令。其指令系统有如下特点。

1)指令执行时间快。64条指令执行时间为1个机器周期,45条为两个机器周期,两条为4个机器周期(乘、除运算)。以12MHz晶振为例,1个机器周期时间为1ms,则64条指令的执行时间为1ms45条指令的执行时间为2ms2条指令的执行时间为4ms

2)指令短。其中单字节指令有49条,双字节指令有46条,最长的是三字节指令,只有16条。

3)用一条指令即可实现两个一字节的相乘或相除。

4)具有丰富的位操作指令。可对内部数据RAM和特殊功能寄存器中的直接位地址作多种位操作。

5)可直接用传送指令实现端口的输入输出操作。

此外,MCS-51单片机的硬件结构中有一个位处理机,指令系统中相应地设计了一个处理位变量的指令子集。这个子集在设计需大量处理位变量的程序时十分有效和方便,是MCS-51指令系统的一大特色。

3.1.3  MCS-51系列单片机的指令类型

MCS-51指令系统可从不同角度进行分类。按指令的长度可分为单字节、双字节和多字节指令;按指令执行时间可分为单机器周期、双机器周期和4机器周期指令。注意,指令执行时间和指令的长度是两个完全不同的概念,前者表示执行一条指令所用的时间,后者表示一条指令在ROM中所占的存储空间,两者不能混淆。若按指令功能进行分类,MCS-51指令系统可分为数据传递与交换、算术运算、逻辑运算、程序转移、位操作、CPU控制6类。其中:

1)数据传送类指令29条,分为片内RAM、片外RAMROM的传送指令,堆栈操作及数据交换指令。

2)算术运算类指令24条,分为加、减、乘、除、加1、减1及十进制调整指令。

3)逻辑运算类指令24条,分为逻辑“与”、“或”、“异或”、“非”及移位指令。

4)位操作类指令12条,分为位传送、置位、清零及位逻辑运算指令。

5)控制转移类指令22条,分为无条件转移、条件转移、比较转移、循环转移及子程序调用和返回指令。

3.1.4 指令中的常用符号

在描述MCS-51指令系统时,经常使用各种缩写符号,其含义如表3-1所示

3-1  指令中常用符号及含义

   

   

A

累加器ACC

B

寄存器B

续上表

   

   

C

位标志位,在位操作指令中作为位累加器使用

direct

直接地址

bit

位地址,内部RAM中的可寻址位和SFR中的可寻址位

#data

8位常数8位立即数

#data 16

16位常数16位立即数

@

间接寻址

rel

8位带符号偏移量,其值为-128+127。在实际指令中通常使用标号,偏移量的计算由汇编

程序自动计算得出,不需要人工计算

Rn

当前工作区03区)的8个工作寄存器R0R7

Ri

可作为地址寄存器的工作寄存器R0R1i=01

X

X寄存器内容

((X))

X寄存器寻址的存储单元的内容

表示数据的传送方向

/

表示位操作数取反

表示逻辑与操作

表示逻辑或操作

"

表示逻辑相异或操作