- 单片机原理与应用:基于AT89S51+Proteus仿真
- 胡凤忠等主编
- 1294字
- 2025-02-19 23:06:59
3.1 指令系统概述
指令(Instruction)是规定计算机进行某种操作的命令,而指令系统(Instruction Set)则是指一台计算机全部指令的集合。程序(Program)是指令的有序集合,是一组为完成某种任务而编制的指令序列。
计算机只能直接识别二进制数0和1表示的机器码指令。所谓机器语言就是指令的二进制编码表示。但直接以二进制编码书写指令很不方便,因此常用十六进制形式。由于机器语言具有程序长、不易书写、难于阅读和调试等缺点,采用符号指令代替机器语言,通常把表示指令的符号称为助记符。以助记符表示的指令就是计算机的汇编语言指令,使用汇编语言指令编写的程序称为汇编语言程序。为起到助记作用,指令常以其英文名称或缩写的形式来作为助记符。汇编语言不能被计算机硬件直接识别和执行,必须通过汇编程序把它变成机器码指令才能被机器执行。但汇编语言与机器语言指令是一一对应的,汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此能编写出最优化的程序。
指令是规定单片机进行某种操作的命令。一条指令只能完成有限的功能,为使单片机完成一定的或复杂的功能就需要一系列指令。单片机能够执行的各种指令的集合称为指令系统。单片机的功能也是由指令系统体现的,一般来说,若单片机的指令越丰富,寻址方式越多,且每条指令的执行速度越快,则它的总体功能越强。AT89S51单片机具有丰富的指令和多种寻址方式。
AT89S51/52汇编语言的语句格式表示如下:
[标号]:操作码[操作数];[注释]
其中,标号是该语句的符号地址,标号由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其他特定字符,不能使用本汇编语言已经定义的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。同一标号在一个程序中只能定义一次,不能重复定义。标号的有无取决于本程序中的其他语句是否需要访问这条语句。标号之后用冒号(:)与操作码分开。
操作码是以指令助记符表示的字符串,用于规定语句执行的操作内容,操作码是汇编指令的核心,不能空缺。
操作数表示指令操作的对象,用于给指令的操作码提供数据或地址。操作数可能是一个具体的数据,也可能是指出取得数据的地址或符号。操作数可以有1~3个,也可以没有。例如,传送类指令大多为两个操作数,在右侧的为源操作数,指示操作数的来源;在左侧的为目的操作数,表示操作结果存储地址。
操作码和操作数之间用空格分开,操作数与操作数之间用逗号(,)分开。
注释不属于语句的功能部分,它只是对语句的解释说明。注释部分用分号(;)隔开。
AT89S51/52单片机指令系统共有111条指令,其中单字节指令49条,双字节指令45条,三字节指令17条。指令按功能分为5大类:
1)数据传送类指令29条,分为片内RAM、片外RAM、程序存储器传送指令,交换及堆栈操作指令。
2)算术运算类指令24条,分为加、带进位加、带借位减、乘、除、加1、减1指令。
3)逻辑运算及移位类指令24条,分为逻辑与、逻辑或、逻辑异或、循环移位、取反、清0指令。
4)控制转移类指令17条,分为无条件转移、条件转移、子程序及返回、空操作指令。
5)位操作类指令17条,分为位数据传送、位逻辑运算、位转移、位修正指令。
这5类指令在本章中分类介绍,并在书后以附录形式逐条列出。