第3章
STC15单片机的指令系统
【学习目标】
掌握STC51系列单片机的寻址方式;
掌握数据传送指令的格式、功能和使用方法;
掌握算术运算类指令的格式、功能和使用方法;
掌握逻辑运算与移位类指令的格式、功能和使用方法;
掌握控制转移类指令的格式、功能和使用方法;
掌握位操作指令的格式、功能和使用方法。
【学习指导】
学习每一条指令时,应注意每条指令的格式、功能、操作数的寻址方式,以及对状态标志位的影响; 可多看实例,并自己应用相关指令编写源程序有助于掌握指令的使用。
3.1指令系统概述
指令是控制微控制器执行各类操作的控制命令。指令系统是特定处理器所能执行的全部指令的集合。不同的处理器有不同的指令系统,这是由该处理器厂商设计芯片时定义的。STC15单片机的指令系统,与经典51单片机的指令系统是全兼容的,包含111条指令。学习指令系统是掌握单片机的基础,是应用单片机的基本工具,是必须掌握的重要知识。
3.1.1STC15单片机指令格式
微处理器的指令分为两种形式,一种是二进制代码形式的指令,例如二进制代码11101000,是将单片机片内R0寄存器的内容送往A累加器。这种二进制代码形式的指令,是CPU唯一能识别和处理的指令,称为机器指令。对于人来说,这种指令难以记忆和理解,因此将这些二进制代码用类似于英文的字符表示,这就是助记符的指令形式,又称为汇编指令。例如,上述机器指令的助记符形式是: MOV A,R0,汇编指令和机器指令是简单的一一对应关系,这大大改善了指令的可读性和可理解性。但若要机器执行,必须先翻译成二进制代码表示的机器指令才行,这种翻译过程称为汇编,可以由计算机软件来自动完成。
STC15单片机指令由操作码和操作数两部分组成。操作码表明该指令执行什么操作,它反映了指令的功能,对于汇编指令,操作码表现为指令功能的英文缩写。例如上面列举的例子中的MOV,为数据传送指令的操作码。
操作数则表明在什么数据上执行该操作,也就是操作的对象。操作数可能是一个具体的常数,也可能是保存数据的存储器单元地址或寄存器。不同功能的指令,操作对象形式不同。绝大部分指令都有操作数,有的指令有一个操作数,有的指令有两个操作数。对于指令中的两个操作数,往往称一个操作数为源操作数,另一个为目的操作数。例如,上述MOV A,R0,是传送类指令,将R0的内容传送至A累加器,R0是源操作数,A是目的操作数。一般在书写格式上是目的操作数在前,源地址写在后。
在STC15指令系统中,按指令包含的二进制代码的字节数,有1B、2B和3B等不同长度的指令,这表示了该指令在内存中所占的单元数; 按指令执行所需要的系统时钟个数,有单周期指令、双周期指令、4周期指令等,这表示了指令执行所需的时间。在学习指令时,应该注意指令的这两个属性。
汇编语言的一条语句的格式如下。
[标号:]操作码助记符[目的操作数][,源操作数][;注释]
其中,方括号[]中的内容不是每一条语句必需的。
标号,表示本语句(指令)所在的地址,它可以作为转移指令的目标或子程序的入口(子程序名)。标号是由一串以字母开头的字母数字串。注释,是编程者对语句的说明,它是可选的。语句中的其他成分,本章和第4章中将会详细讲解。
3.1.2指令的分类
STC51单片机共有111条指令,其中,单字节指令49条,双字节指令45条,三字节指令17条。在111条指令中,有64条是单机器周期指令,45条是双机器周期指令,只有乘法和除法指令需4个机器周期。STC51单片机的指令系统按功能可划分为以下5类。
(1) 数据传送类指令28条;
(2) 算术运算类指令24条;
(3) 逻辑操作类指令25条;
(4) 位操作类指令17条;
(5) 控制转移类指令17条。
3.1.3常用符号说明
以下符号是在介绍指令时所用到的。
Rn: 当前寄存器组的8个通用寄存器R0~R7(其中,n=0~7)。
Ri: 可用作间接寻址的寄存器,只能是R0、R1两个寄存器(其中,i=0,1)。
Direct: 内部RAM的8位地址。既可以是内部RAM的低128个单元地址,也可以是专用寄存器的单元地址或符号。因此在指令中direct表示直接寻址方式。
#data: 8位立即数。
#data16: 16位立即数。
addr16: 16位目的地址,只限于在LCALL和LJMP指令中使用。
addr11: 11位目的地址,只限于在ACALL和AJMP指令中使用。
rel: 相对转移指令中的偏移量,为8位带符号补码数。
DPTR: 数据指针。
bit: 内部RAM(包括专用寄存器)中的直接寻址位。
A: 累加器。
B: B寄存器。
C: 进位标志位,它是布尔处理机的累加器,也称为累加位。
@: 间址寄存器的前缀标志。
3.2寻址方式
寻址方式就是指令中表示操作数或操作数地址的方式。一般来说,寻址方式越多,指令就越灵活,指令系统功能就越强。
STC15系列单片机中,存放数据的存储空间有多类: 内部基本的数据RAM(包括一般的数据RAM和特殊功能寄存器SFR),STC15扩展的片内数据RAM,外部扩展的数据RAM和程序存储器空间。对于不同存储器中的数据操作,采用不同的寻址方式。STC15共有7种寻址方式,下面分别介绍这几种寻址方式。