ITEEDU

6.3.1 对齐类型(ALIGN)

对齐类型表示当前段对起始地址的要求,连接程序(LINK.EXE)按表6.1的地址格式来定位段的起始地址。在进行段定位时,会根据其定位类型进行定位的,所以,各段之间就有可能出现一些空闲字节,即可能浪费几个字节单元。

段对齐类型PARA是一个适用于所有段类型的对齐类型,它也是缺省的对齐类型。对齐类型BYTE和WORD通常用于数据段的定位,对齐类型DWORD通常用于80386及其以后CPU代码段的定位。

表6.1 段对齐类型与段起始地址之间的对应关系

对齐类型
起始地址(二进制) 功能说明 最多的空闲字节数
BYTE xxxx xxxx xxxx xxxx xxxx 下一个字节地址 0
WORD xxxx xxxx xxxx xxxx xxx0 下一个字地址 1
DWORD xxxx xxxx xxxx xxxx xx00 下一个双字地址 3
PARA xxxx xxxx xxxx xxxx 0000 下一个节地址 15
PAGE xxxx xxxx xxxx 0000 0000 下一个页地址 127

6.3.2 组合类型(COMBINE)

组合类型是告诉连接程序如何把不同模块中段名相同的段合并在一起。具体的组合类型如下:

NONE 表示当前段在逻辑上独立于其它模块,并有其自己的基地址。NONE是缺省的组合类型。

PUBLIC 表示当前段与其它模块中同段名的PUBLIC类型段组合成一个段。组合的先后次序取决于LINK程序中目标模块排列的次序。在组合时,后续段的起始地址要按其对齐类型进行定位,所以,同名段之间可能有间隔。

COMMON 表示当前段与其它模块中同名段重叠,也就是说,它们的起始地址相同。最终段的长度是同名段的最大长度。由于段覆盖,所以,前一同名段中的初始化数据被后续段的初始数据覆盖掉。

STACK 组合类型STACK表示当前段是堆栈栈,其组合情况与PUBLIC相同。

AT 数值表达式 该数值表达式是当前段所指定的绝对起始地址的段地址。