理论教育 常用的伪指令语句优化技巧

常用的伪指令语句优化技巧

时间:2023-11-04 理论教育 版权反馈
【摘要】:组合类型用来告诉连接程序本段与其他段的关系,分别为NONE、PUBLIC、COMMON、AT表达式以及STACK和MEMORY。需要注意,ASSUME是伪指令语句,只是建立了段与段寄存器之间的对应关系,但并不能自动把段寄存器设置为实际的段地址。因此,一般需要在程序中用指令语句将各段寄存器设置为正确的值。根据调用的要求使用NEAR或FAR属性。

常用的伪指令语句优化技巧

1.符号定义语句

(1)赋值语句(EQU)

格式:

符号名 EQU 表达式

EQU语句给符号定义一个值或其他符号名,甚至是一条可执行指令等。

(2)等号语句(=)

格式:

符号名=表达式

此语句功能与EQU类似,但可以对符号名进行再定义。

(3)标号定义语句(LABEL)

LABEL伪指令用于为标号或变量指明或修改类型属性。

定义标号有两种方法:一种是用冒号定义标号(标号名:),这种方法只能定义NEAR属性的标号;另一种就是使用LABEL伪指令定义标号,可以定义NEAR或FAR属性的标号。

2.数据定义语句

(1)定义字节(DB)

DB(Define Byte)用来定义一个变量并初始化其内存单元。DB分配一个或多个字节。

格式:

符号名 DB 表达式

表达式可以是常数表达式、问号(?)、字符串或重复子句。

(2)定义字(DW)

DW定义一个字(两字节),其格式和表达式与DB类似。此外还有DD(定义双字,4字节)、DQ(定义4个字,8字节)、DT(定义10字节)。

3.段定义语句

(1)SEGMENT与ENDS

这两个伪操作总是一起出现。它们将汇编语言源程序分成段,这些分段对应于存储器中的段。

格式:

段名 SEGMENT[定位类型][组合类型]['类别'](www.daowen.com)

段名 ENDS

段名是由编程者自己指定的,需符合汇编语言符号名的规定。定位类型、组合类型和类别是赋给段名的属性。定位类型表示此段的起始边界要求,可以是PAGE、PARA、WORD或BYTE。组合类型用来告诉连接程序本段与其他段的关系,分别为NONE、PUBLIC、COMMON、AT表达式以及STACK和MEMORY。类别可以是任何合法的名称,必须用单引号括起来。连接程序把类型名相同的段放在连续的存储区内。

(2)ASSUME

ASSUME伪操作语句告诉汇编程序访问某个段使用哪个段寄存器。当汇编程序遇到一个段名时,它就自动地引用给出的段寄存器将段名加以汇编。

格式:

ASSUME段寄存器:段名[,…]

ASSUME 段寄存器:NOTHING段寄存器的输入是CS、DS、ES或SS。

需要注意,ASSUME是伪指令语句,只是建立了段与段寄存器之间的对应关系,但并不能自动把段寄存器设置为实际的段地址。因此,一般需要在程序中用指令语句将各段寄存器设置为正确的值。

(3)ORG

ORG语句指定了在它以后的程序或数据块存放的起始地址的偏移量

格式:

ORG表达式

与ORG有关的有一个用“$”代表的位置计数器,代表当前段的汇编内容偏移量。

4.过程定义语句

过程是程序的一部分,实际上就是子程序。

格式:

伪操作PROC与ENDP必须成对出现。根据调用的要求使用NEAR或FAR属性。

5.结束语句

END语句标志着整个源程序的结束,它告诉汇编程序汇编任务到此结束。

格式:

END [表达式]

表达式必须是源程序的启动地址。如果几个模块连在一起,则只能指定主模块的启动地址。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈