[信息与通信]80c51单片机指令系统
第3章 89C51单片机的指令系统
3.1 指令概述
3.1.1 汇编语言
3.1.2 指令格式
3.1.3 指令分类
3.2 寻址方式
3.3 89C51单片机的指令系统
3.3.1 数据传送指令
3.3.2 算术运算指令
3.3.3 逻辑运算及移位指令
3.3.4 控制转移指令
3.3.5 布尔变量操作指令
3.4 综合应用举例
第3章 89C51的指令系统
学习指导:
学习和应用单片机一个很重要的环节就是理解并熟练掌握它的指令系统。通过本章的学习应达到以下的学习目标:
1.了解机器语言、汇编语言和高级语言的特点。
2.掌握汇编语言指令的基本格式,熟悉机器语言指令的格式。
3.理解89C51的7种寻址方式及相应的寻址空间,并能实际应用。
4.熟记89C51的111条汇编语言指令的形式。
5.熟悉每条指令的功能、操作的对象和结果;并会根据不同的实践需要选择合适的指令。
3.1 指令概述
指令是CPU用来执行某种操作的命令。一条指令只能完成有限的功能,为了使计算机能够完成一定复杂的功能就需要一系列的指令,计算机能够执行的各种指令的集合称为它的指令系统。计算机的总体功能是由指令系统来体现的,一般来说,若一台计算机的指令越丰富、寻址方式越多、且每条指令执行速度都较快,那么它的总体功能就越强。不同型号的计算机其指令系统也不相同。
3.1.1 汇编语言
在计算机中,所有的指令、数据都是用二进制代码来表示的。这种用二进制代码表示的指令系统称为机器语言(Machine Language),用机器语言编写的程序称为机器语言程序或“目标程序”(Object Program)。为了书写方便,二进制代码常用十六进制代码表示。对于计算机,机器语言能被直接识别并快速执行。但对于使用者,这种用机器语言编写的程序很难识别和记忆,容易出错。为了克服这些缺点,出现了汇编语言和高级语言。
用英文字符来代替机器语言,这些英文字符被称为助记符。用助记符表示指令系统的语言称为汇编语言(Assembly Language)。它由字母、数字和符号组成,又称“符号语言”。由于助记符一般都是操作功能的英文缩写,这样使程序易写、易读和易改。可见汇编语言仍是一种面向机器的语言,和CPU类别密切相关,不同CPU的机器有不同的汇编语言。本章介绍的89C51系列单片机程序都是汇编语言形式。
但是计算机不能直接识别在汇编语言中出现的各种字符,需要将其转换成机器语言,通常把这一转换(翻译)工作称为汇编。汇编可以由查表的形式手工完成,也可由专门的程序来进行,这种程序称为汇编程序。汇编后得到的机器语言程序称为目的程序或目标程序,原来的汇编语言程序称为源程序。
由于汇编语言是一种面向机器的语言,因此受到机器种类的限制,不能在不同类型的计算机上通用,这样就出现了高级语言,例如BASIC、PASCAL、C语言等。高级语言是一种面向过程的语言,这种语言更接近英语和数字表达式,易被一般用户掌握。高级语言是独立于机器的,在编程时,用户不需要对机器的硬件结构和指令系统有深入的了解。高级语言直观、易学,通用性强,易于移植到不同类型的机器上去。
计算机对高级语言不能直接识别和执行,需要转换为机器语言,因此它的执行速度比机器语言和汇编语言慢,且占用内存空间大。
因汇编语言运行速度快,占用内存空间小,且易读易记,所以在工业控制中广泛采用的是汇编语言。本章就用89C51单片机的汇编语言来描述其指令功能。
3.1.2 指令格式
1.汇编语言指令的格式
汇编语言指令的一般格式如下:
[标号:] 操作码助记符 [操作数] [;注释]
其中每条指令必须有操作码助记符,带[ ]的为可选项,可有可无。
标号是表示该指令位置的符号地址,代表该指令第一个字节所存放的存储器单元的地址。它是以英文字母开始的由1~8个字母或者数字组成的字符串,并以“:”结尾。通常在子程序入口或者转移指令的目标地址才赋标号。
操作码助记符是表示指令功能的英文缩写。它是指令的核心部分,不能缺省。例如:ADD是加法的助记符,MOV是传送的助记符。
操作数是表示指令操作所需要的操作数或者操作数的地址。指令的操作数可以是1个、2个或者3个,也可以没有。例如:NOP指令就没有操作数。操作数之间以“,”分隔,操作码与操作数之间以空格“?”分隔。
注释字段是用户给该条指令或该程序的功能说明,是为了方便阅读程序的一种标注。注释以“;”为开始。注释不影响该指令的执行。
2.机器语言指令的格式
机器语言指令是一种二进制代码,它包括两个基本部分:操作码和操作数。操作码规定了指令操作的性质,操作数则表示指令操作的对象。在89C51的指令系统中,有单字节、双字节和三字节供3种指令,它们分别占有1~3个程序存储器的单元。机器语言指令格式如图3-