- 单片机原理
- 张志霞 张楠楠 王永刚 杨萍主编
- 1424字
- 2024-11-28 18:10:15
第一节 指令系统概述
一、指令类型
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