购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 伪指令

伪指令,顾名思义,并不是真正的单片机指令,因为伪指令不能命令CPU执行某种操作,也没有对应的机器代码,而单片机指令能使单片机的CPU执行某种操作,并可以生成对应的机器代码。伪指令仅为单片机汇编程序提供某种标记信息,但却是程序中不可缺少的部分。单片机汇编语言中常用的伪指令有如下几类。

3.2.1 起始伪指令ORG

起始伪指令ORG用于标记一个汇编语言程序的开始,其使用格式如下:

这里,16位地址便是汇编程序块或数据块存放的起始地址。如果省略ORG伪指令,则单片机程序代码将默认从0000H单元开始存放。

3.2.2 结束伪指令END

结束伪指令END用于标记一个汇编语言程序的结束,其使用格式如下:

这里标号和表达式都可以省略。在汇编语言程序执行时,END之后所写的任何指令都不予以处理。

注意: 一个程序只能有一个END伪指令。

3.2.3 等值伪指令EQU

等值伪指令EQU相当于重命名的概念,它采用一个规定的字符串名称来代替一个数或特定的汇编符号。等值伪指令EQU的使用格式如下:

这里,EQU指令定义的字符串名称可以用做数据地址、代码地址、位地址或当做一个立即数来使用。有时EQU也可以使用=来代替,此时等值伪指令的使用格式如下:

使用伪指令EQU时必须先赋值,后使用,而不能先使用后赋值。另外,给字符串名称所赋的值可以是8位数,也可以是16位数。用EQU定义的字符串名称不能和汇编语言的关键字同名。最后需要注意的是,这里使用的“字符串名称”不是标号,不能用“:”来做分隔符。

3.2.4 地址赋值伪指令DATA

地址赋值伪指令DATA用指定的字符串名称来代替数据地址或代码地址,其使用格式如下:

DATA伪指令在程序中常用来定义数据地址。就功能来说,DATA伪指令与EQU有些类似。所不同的是,EQU伪指令必须先定义后使用,而DATA伪指令则无此限制;EQU伪指令可以把一个汇编符号赋给一个字符串名称,而DATA伪指令则不能;DATA伪指令可将一个表达式的值赋给一个字符变量,所定义的字符变量也可以出现在表达式中,而EQU定义的字符则不能这样使用。

3.2.5 字节保存伪指令DB

字节保存伪指令DB用于在单片机内存中保存数据表,只能对程序存储器进行操作,其使用格式如下:

其中,8位字节数据表可以是一个或多个字节数据、字符串或表达式。在数据表中,各项数据用“,”分隔,一个数据项占一个存储单元。所有的数据项从标号指定的地址单元开始,将数据表中的字节数据按顺序依次保存。数据项可以采用十进制、二进制或者十六进制数表示。字节保存伪指令DB的使用示例代码如下:

在这个例子中,字节数据从1100H地址开始保存字节数据。各个内存单元中的数据如表3-1所示。

表3-1 内存单元中的数据

3.2.6 字保存伪指令DW

字保存伪指令DW用于在单片机内存中保存双字节数据表,只能对程序存储器进行操作,其使用格式如下:

其中,16位字数据表可以是一个或多个字节数据、字符串或表达式。在数据表中,各项数据用“,”分隔,一个数据项占一个存储单元。所有的数据项从标号指定的地址单元开始,将数据表中的字节数据按顺序依次保存。这里需要注意的是,16位数据要占用两个单元的存储器,高8位数据存入低地址字节,低8位数据存入高地址字节。字保存伪指令DW的使用示例代码如下:

在这个例子中,字节数据从1000H地址开始保存字数据。各个内存单元中的数据如表3-2所示。

表3-2 内存单元中的数据

3.2.7 空间预留伪指令DS

空间预留伪指令DS用于在单片机内存中划分出一定的存储空间用做备用区域,只能对程序存储器进行操作,其使用格式如下:

这里,表达式表示了从标号指定的地址单元开始,保留存储单元的个数。空间预留伪指令DS的使用示例代码如下:

在这个例子中,从地址1100H开始划分出8个内存单元,从1008H之后的单元才可以进行其他操作。

3.2.8 位变量伪指令BIT

位变量伪指令BIT用于给位地址定义一个字符串名称,其使用格式如下:

其中,位地址需要参考单片机中的定义,字符串名称就是位变量。位变量伪指令BIT的使用示例代码如下:

在这个例子中,位地址P2.4和P2.6赋给P1和P2,此后遇到P1和P2的地方,就相当于使用P2.4和P2.6。 yfrImxbdpLMmHOMN0XlqVkC8XW0vQx8Y4fHv+hUL7yADMnNJtmMyu+JA6C9yeykc

点击中间区域
呼出菜单
上一章
目录
下一章
×