当前位置:文档之家› 51汇编伪指令(定义系统堆栈1).

51汇编伪指令(定义系统堆栈1).

51单片机汇编伪指令命令按字母排序:1、 ALTNAME功能: 这一伪指令用来自定义名字,以替换源程序中原来的保留字,替换的保留字均可等效地用于子程序中。

格式: ALTNAME 保留字自定义名注意: 自定义名与保留字之间首字符必须相同。

1、BIT功能:指令用于将一个位地址赋给指定的符号名。

指令格式:符号名 BIT 位地址经 BIT 指令定义过的位符号名不能更改。

例如:X_ON BIT 60H ;定义一个绝对位地址 X_OFF BIT 24h.2 ;定义一个绝对位地址BIT ---定义位命令格式:字符名称 BIT 位地址其功能用于给字符名称定义位地址。

SPK BIT P3.7 经定义后,允许在指令中用SPK 代替 P3.7。

2、 BSEG功能:绝对选择指令指令 BSEG 选择绝对位寻址数据段指令格式如下:BSEG [AT 绝对地址表达式]3、CODE功能:用于将程序存储器 ROM 地址赋给指定的符号名。

指令格式:符号名CODE 表达式例如:RESET CODE 00H4、CSEG功能:绝对选择指令 CSEG 选择绝对代码段; 指令格式如下:CSEG [AT 绝对地址表达式]5、DATA(BYTE功能:指令用于将一个内部 RAM 的地址赋给指定的符号名指令格式:符号名DATA 表达式数值表达式的值应在 0~255 之间,表达式必须是一个简单再定位表达式。

例如:REGBUF DATA(BYTE 40H PORT0 DATA(BYTE 80HDATA 与 BYTE 的区别:DATA 与 BYTE 是相类似的伪指令。

当程序运行到DATA 伪指令定义的符号名时, 该符号名将被显示;而由 BYTE 定义的符号名不被显示。

6、DB功能:DB伪指令用于定义一个连续的存储区,给该存储区的存储单元赋值。

该伪指令的参数即为存储单元的值, 在表达式中对变元个数没有限制,只要此条伪指令能容纳在源程序的一行内,其格式为: 标号:DB 表达式只要表达式不是字符串,每一表达式值都被赋给一个字节。

计算表达式值时按 16位处理,但其结果只取低 8位, 若多个表达式出现在一个 DB 伪指令中,它们必须以逗号分开。

表达式中有字符串时,以单引号“ ' ”作分隔符, 每个字符占一个字节,字符串不加改变地被存在各字节中,并不将小写字母转换成大写字母。

例如:DB 00H 01H 03H 46HDB 'This is a demo!'7、DBIT功能 :在内部数据区的 BIT 段以位为单位保留存储空间。

指令格式:[标号:] DBIT 数值表达式其操作类似于 DB 。

8、 DS功能 :DS为定义存储内容的伪指令,用它定义一个存储区,并用指定的参数填满该存储区。

DS 伪指令包含两个变元, 第一个变元定义了存储区的长度的字节数,在汇编时,汇编程序将跳过这些单元把其它指令汇编在这些字节之后,因此在使用DS 伪指令时第一个变元不可活力第二个变元表示在这些单元中真入什么值,第二个变元可以活力活力时这些字节将不处理。

下例中 0173处有一条 DS 9,则空出 9个字节,下一第指令被汇编到 017C 处;在 017C 处空出 1BH 个单元,在这些字节中被 27H 所填充。

DS 指令的格式如下:标号:DS 表达式1,表达式2表达式1定义了存储区的长度(以字节为单位。

这个变元不能省略。

表达式2是可选择的,它的值低8位用以填入所定义的存储区。

若省略则这部分存储单元不处理。

例:0000 04 INC A0001 DS 9000A 04 INC A000B DS 1BH,27H0026 04 INC ADS ---预留存储区命令格式:〔标号 :〕 DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。

存储区预留的存储单元数由表达式的值决定。

TMP: DS 1 从标号 TEP 地址处开始保留 1个存储单元(字节。

9、DSEG功能:绝对选择指令 DSEG 内部绝对数据段指令格式如下:DSEG [AT 绝对地址表达式]10、 DW功能:DW 为以字节为单元(十六位二进制来给一个的存储区赋值,其格式为: 标号:DW 表达式例如:0000 3035 D46B DW 12341,54379,10110100101110B11、 END功能:END 语句标志源代码的结束,汇编程序遇到 END 语句即停止运行。

若没有 END 语句,汇编将报错。

END 语句有一个参数,可以是数值 0,也可以是表达式, 其格式是:标号 : END 表达式它的值就是程序的地址并且作为一个特殊的记录写入 HEX 文件。

若这个表达式省略, HEX 文件中其值就是 0。

12、EQU(=存器名赋给一个指定符号名。

指令格式: 符号名 EQU(=表达式符号名 EQU(= 寄存器名经过 EQU 指令赋值的符号可在程序的其它地方使用,以代替其赋值。

例如:MAX EQU 2000则在程序的其它地方出现 MAX,就用 2000 代替。

表达式必须是一个简单再定位表达式。

用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。

13、EXTRNEXTRN 是与 PUBLIC 配套使用的,要调用其它模块的函数,就必须先在模块前声明。

指令格式:EXTRN 段类型(符号,符号······例如:EXTRN CODE (TONGXING,ZHUANHUAN调用外部 TONGXING 和 ZHUANHUAN 程序。

14、IDATAIDATA 指令用于将一个间接寻址的内部 RAM 地址赋给指定的符号名。

指令格式:符号名 IDATA 表达式例如:FULLER IDATA 60H15、IF条件伪操作格式:IF 表达式[ 程序块 1 ][ ELSE ][ 程序块 2 ]ENDIF当 IF 指令中的表达式为真时,被汇编的代码段是程序块 1;当 IF 指令中的表达式为假时,被汇编的代码段是程序块 2。

在一个条件结构中,仅有一个代码段被汇编,其它的则被忽略。

16、INCLUDE功能: 利用此伪指令可将一个源文件插入到当前源文件中一起汇编,最终成为一个完整的源程序。

格式: INCLUDE [ 驱动器名: ] [ 路径名 ] 文件名注意:1、文件名中若没有扩展名,则系统默认是。

ASM(该文件必须是能打开的。

2、被插入的源程序中不能包含 END 伪指令,否则汇编会停止运行。

被链接文件的每一行,在程序清单中以“I“开头。

3、链接伪指令可有8级嵌套, 若要求嵌套的多, 则要修改 DOS 中的 CONFIG。

SYS 文件的 FILES 参数。

17、ISEG功能:绝对选择指令 ISEG 内部间接寻址绝对数据段 idata 指令格式如下:ISEG [AT 绝对地址表达式]18、MACRO宏指令格式[ 宏指令名 ] MACRO [形式参数, 。

]代码段ENDM宏调用格式[ 宏指令名 ] [实在参数,。

]19、LIST它们的格式为:$LIST功能:LIST伪指令使汇编时主生程序清单,但即使不用该指令,汇编也会自动产生清单。

但如果使用了 NOLIST 伪指令后需要继续主生清单则必须使用LIST伪指令。

20、NAME功能:用来给当前模块命名。

指令格式:NAME 模块名例如:NAME TIMER定义一个模块名为 TIMER 的模块。

21、NOCODE其格式为$NOCODENOCODE 伪指令使得在汇编时,条件汇编程序结构中那些真值为假的条件不产生清单。

有关条件汇编结构在下面介绍。

如果没有这条伪指令, 汇编将主生所有条件下的清单, 不论其真值是否为真。

但是假的条件,不产生目标码。

而 NOCODE 伪指令使汇编清单中只列出那些由汇编程序用到的部分, 因此,当使用 NOCODE 伪指令时,程序清单与源程序并非逐行对应。

22、NOLIST它们的格式为:$NOLIST功能:NOLIST伪指令使汇编时不产生清单,所有包含此伪指令及在这条伪指令之后的语句都不进入列表文件。

当不需要任何列表文件,并且不需要显示程序清单时,可以在启动汇编时不加.L附加项,且在源代码的第一行加上 NOLIST 指令。

使用NOLIST 伪指令与附加项 /L不同之处是 NOLIST 伪指令可加在源程序中,与 LIST 伪指令配合使用,使源程序中某些部分不产生清单。

而不加附加项 /L则不产生任何程序清单。

不过,不管有无$NOLIST伪指令,程序在汇编时检查到的错误都将在屏幕上显示出错的源代码行及错误信息23、PAGE功能:PAGE伪指令用于形成新的一中定义一面的行数。

其格式为:$PAGE表达式若表达式缺省则开始新的一页,若有表达式,则每页行数重新定义。

汇编开始时页长为 66行。

一页中除出页外, 剩余 55行用于打印源程序,这一格式适用于标准打印纸。

如果变元值小于 66,页内可打印的源代码行将相应减少。

页长最小值为 12。

若小于 12时,每页内除页上只打印一行源程序。

页长变元是 16位字节,因而每页最长可定义到 65535行,这时分页打印变为连续打印,在屏幕显示程序清单或在卷筒纸上打印程序清单时,常常使用连续打印,如果在启动汇编时用 /N选项,页长就是65535。

24、PUBLIC功能:声明可被其它模块使用的公共函数名。

指令格式:PUBLIC 符号 [,符号,符号[, ······]]PUBLIC 后可跟多个函数名,用逗号格开。

每个函数名都必须是在模块内定义过的。

例如:PUBLIC INTER,_OUTER其中_OUTER 可供 C 调用。

25、RSEG功能:再定位段选择指令为 RSEG,用于选择一个已在前面定义过的再定义段作为当前段,指令格式:RSEG 段名段名必须是在前面声明过的再定位段。

例如:DATAS SEGMENT DATA :声明一个再定位 DATA 段 CODES SEGMENT CODE ;声明一个再定位 CODE 段 BSEG AT 60HRSEG CODES ;选择前面声明的再定位 CODE 段作为当前段。

绝对段选择指令CSEG ---绝对代码段DSEG ---内部绝对数据段 XSEG ---外部绝对数据段 ISEG ---内部间接寻址数据段 BSEG ---绝对位寻址数据段格式:CSEG [AT 绝对地址表达式 ] DSEG [AT 绝对地址表达式 ] XSEG [AT 绝对地址表达式 ]ISEG [AT 绝对地址表达式 ] BSEG [AT 绝对地址表达式 ]括号内是可选项,用来指定当前绝对段的基地址。

CSEG AT 0000H AJMP MAIN26、SEGMENT功能:SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。

相关主题