处理器选择伪操作
这类伪操作一般放在程序的最前面,如不给出,则汇编程序默认值为 .8086
段定义伪操作
完整的段定义伪操作
1 | 段名 SEGMENT [定位类型] [组合类型] [使用类型] [‘类别’] |
- 段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始位置
- 定位类型:PARA(默认),WORD,BYTE,PAGE。
- 段地址起始地址的限制,PARA限制16的整数倍
- 组合类型:PRIVATE(默认),PUBLIC,COMMON,STACK,MEMORY(同PUBLIC),AT 表达式
- 使用类型:USE16,USE32.
- 使用xx位寻址方式
- 类别:在引号中给出连接时组成的段组的类型名。在连接后形成的装入模块中,可使相同类别的段位置靠在一起。
假定伪指令ASSUME
- 格式:ASSUME 段寄存器:段名 [,段寄存器:段名]
- 功能:建立段寄存器与段之间的对应关系。该伪指令一般出现在代码段中。
- 只是建立对应关系,但没有赋值,还需要自己初始化段寄存器的值
- 其中段寄存器名必须是CS,DS,ES和SS中的一个。段名必须是由SEGMENT定义的段中的段名。
段组定义伪操作
- 格式:段组名 GROUP 数据段名1[,数据段名2……]
- 功能:汇编程序把各数据段组成一个段组,以便程序在访问各数据段时使用一个数据段寄存器DS。
数据定义及存储器分配伪操作
格式
[变量名] 助记符 操作数 [ , 操作数 , … ] [ ; 注释]
- 变量名必须是一个合法的标识符,可写可不写
- 助记符:DB(字节)、DW(字)、DD(双字)、DF(6字节)、DQ(四字)、DT(10字节)
- 操作数是定义内存单元时的初值表达式,一个定义语句可以有多个初值表达式,各表达式之间必须用逗号 ‘,’ 分开;如果某个存储单元没有初值表达式,则必须用一个问号 ‘?’ 来表示;
- 注:‘?’表示保留存储空间但不存入数据
- 注释可以不写
重复说明符DUP
- 一般形式:repeat_conut DUP(表达式,表达式……)
- repeat_conut是重复次数
- (表达式,表达式……)是被重复的部分
- 表达式可以是存储单元的初值,也可以是另一个DUP式子(可以嵌套)
- 多个表达式要用逗号 ‘,’ 分开
强制属性操作符PTR
- 类似于C语言的强制类型转换,为临时属性
- 一般格式:数据类型 PTR 地址表达式
- 例如:MOV byte ptr[BX],1H
LABEL伪操作
- 同一个变量可以具有不同的类型属性,除了可以用PTR来定义外,还可以用LABEL伪操作来定义
- 一般格式:符号名 LABEL 变量类型
- LABEL为当前地址的另一别称,不占内存空间
表达式赋值伪操作
等价语句
符号名 EQU 表达式
- 作用:左边的符号名代表右边的表达式
- 注意:等价语句不会给符号名分配空间,不能重名,也不能被重新定义
等号"="
符号名=数值表达式
- 汇编语言提供了 等号"=" 来定义符号常数的方法,即可用符号名代表一个常数。
- 数值表达式在汇编时应该可以计算出数值,它不能含有向前引用的符号名称。
- 用等号语句定义的符号可以被重复定义。
EQU和"="的区别
- 由EQU伪指令定义后的符号名是不能重复再定义的
- 而“=”伪指令中定义的符号名可重复定义
地址计数器与对准伪操作
地址计数器 $
- 作用:保存当前正在汇编的指令的地址
- $ 用在伪操作的参数字段:表示地址计数器的当前值
ORG伪操作
- 作用:告诉汇编程序,本伪指令下面的内存变量从该“数值表达式”所指定的地址开始分配。
基数控制伪操作
RADIX 表达式 ; 规定无标记数的基数
其他
OFFSET运算符
- 格式:OFFSET 变量或标号
- 功能:分离出其后变量或标号的偏移地址。