单片机原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第一节 指令系统概述

一、指令类型

MCS-51汇编语言有42种操作码助记符用来描述33种操作功能。一种操作可以使用一种以上数据类型,又由于助记符也定义所访问的存储器空间,所以一种功能可能有几个

助记符(如MOV、MOVX、MOVC)。功能助记符与寻址方式组合,得到111种指令。

如果按字节数分类,则有49条单字节指令、45条双字节指令和17条3字节指令。若按指令执行时间分类,就有64条单周期指令、45条双周期指令、两条(乘、除)4周期指令。可见MCS-51指令系统具有存储效率高、执行速度快的特点。

按功能分类,MCS-51指令系统可分为数据传送指令、算术运算指令、逻辑运算指令、位操作指令、控制转移指令。

二、指令格式

MCS51汇编指令由操作码助记符字段和操作数字段所组成。指令格式如下:操作码[操作数1],[操作数2],[操作数3]

第一部分为指令操作码助记符,表示指令进行何种操作。它由2~5个英文字母所组

成,如JB、MOV、CJNE、LCALL等。

第二部分为操作数,指出了参加操作的数据或数据存放的地址。它以一个或几个空格和操作码隔开,根据指令功能的不同,数可以有1、2、3个或者没有(如空操作指令)。操作数之间以逗号“,”分开。

三、伪指令

标准的MCS-51汇编程序(如Intel公司的ASM51)还定义许多伪指令供用户使用,伪指令也称为汇编命令,大多数伪指令汇编时不产生机器语言指令,仅提供汇编控制信息。以下介绍几条最常用的伪指令。

1.定位伪指令

ORG m 40

m为十进制或十六进制数。m指出在该伪指令后的指令的汇编地址,即生成的机器指令起始存储器地址。在一个汇编语言源程序中允许使用多条定位伪指令,但其值应和前面生成的机器指令存放地址不重叠。

2.定义字节伪指令

DB X1,X2,…,Xn

Xi为单字节数据,它为十进制或十六进制数,也可以为一个表达式。Xi也可以为由两个单引号“ˊ”所括起来的一个字符串,这时Xi定义的字节长度等于字符串的长度,每一个字符为一个ASCII码。

该伪指令把X1,X2,…,Xn送目标程序存储器,通常用于定义一个常数表。3.字定义伪指令

DW Y1,Y2,…,Yn

Yi为双字节数据,它可以为十进制或十六进制的数,也可以为一个表达式。该伪指令把Y1,Y2,…,Yn送目标程序存储器,经常用于定义一个地址表。

4.汇编结束伪指令

END

该伪指令指出结束汇编,即使后面还有指令,汇编程序也不作处理。5.标号和注释

汇编程序允许用户在源程序中使用标号和注释。

标号加在指令之前,标号必须以字母开始,后跟1~8个字母或数字,并以冒号“:”结尾,用户定义的标号不能和汇编保留符号(包括指令操作码助记符以及寄存器名等)重复。标号的值是它后面的指令存储地址。

注释是用户对某一条指令或某一段程序的功能说明,它必须以分号“;”开始,如果一行写不下,可以另起一行,但都必须以分号“;”开始。下面为含有标号和注释的程序行:

标号:操作码[操作数1],[操作数2],[操作数3];注释四、常用的缩写符号

在描述MCS-51指令系统的功能时,经常使用下面的缩写符号,其意义如下:

A

累加器ACC

AB

累加器ACC和寄存器B组成的寄存器对

C

进位标志位CY,也是位操作指令中的位累加器

Rn

表示当前选中的通用寄存器R0~R7(n=0~7)

Ri

表示通用寄存器中可用作8位地址指针的R0和R1(i=0,1)

direct

直接地址,取值为00~0FFH

#data 立即数,表示一个常数

间接寻址

addr

表示外部数据存储器的地址

bit

表示内部RAM或特殊功能寄存器中的直接位地址

×

寄存器

(×)

寄存器内容

((×))由X寄存器寻址的存储器单元内容

(×)

寄存器的内容取反

rrr

指令编码中rrr三位值由工作寄存器Rn确定,R0~R7对应rrr为000~111

$

指本条指令起始地址

rel

相对偏移量,其值为-128~+127