1. segment
段定义格式:
segmentname segment [ align ] [ combine ] [ 'class' ]
statements
segmentname ends
——————
关键字segment表示段定义的开始,关键字ends表示段定义的结束(end of segment)。
——————
segmentname表示段名,任何一个段都必须有段名,并且段定义结束时的段名必须与段定义开始时设定的段名一致。
——————
statements表示汇编语言的语句,包括指令语句、伪指令语句、汇编指示语句。
——————
align表示对齐方式,用来规定所定义的段以字节byte、字word、双字dword、节para、页page为边界。其中节为16字节,页为256字节。缺省的对齐方式为para。
——————
combine表示合并类型,合并类型有:
public、stack、common、memory、at
其中public一般用于代码段或数据段的定义,凡是段名相同并且合并类型为public的段在连接时都将合并为一个段。
stack用于堆栈段的定义,凡是段名相同并且合并类型为stack的段连接时将合并为一个堆栈段。并且在程序装入内存准备运行时,段寄存器SS自动初始化为改堆栈段的段址,堆栈指针SP自动初始化为该堆栈段末尾字节的偏移地址再加1。
class表示类别名,它的内容是不固定的,可以像段名一样随便取一个。类别名必须用单引号括起来。类别名可以使连接程序在连接时把该段与其它具有相同类别名的段放在一起。一般不用指定类别名。
——————————————————————
段定义的简化
segmentname segment
statements
segmentname ends
——————
2.assume
格式:
assume 寄存器:段标记
例子:
assume cs:code
3.int
格式:
int 中断号
例子:
int 21h
说明:
中断号参见bios中断号列表和dos中断号列表