segment是段,是段定义的伪指令。在汇编中有数据段,代码段,堆栈段和附加段
[格式]
segment_name SEGMENT 【定位类型】 【组合类型】 【类别名】
···;here is your code
segment ends
注:【】都是在英文输入法下的符号,此处无法打出所以才用了中文状态下的【】
参数解释:
- 【定位类型】
指明段开始的边界,如para,它使段定位在小段的边界,段首地址正好能被16整除,定位类型未指定时默认为para
段的定位类型有4种,分别是:- page(页起始),起始地址以00H结尾,能被256整除
- para (节起始),起始地址以0H结尾,能被16整除
- word(字起始),起始地址末位为0,是偶地址
- byte (字节起始),起始地址为任意边界
- 【组合类型】
决定本段是否要和其他段组合在一起,组合类型有:stack,common,public - 【类别名】
连接时用于相关段组合在一起,如代码段’code’,数据段’Data’,堆栈段’Stack’
例子: stack segment para stack ‘stack’
解释: para表明该段起始地址对齐到para。 1 para= 16 bytes。stack声明该段是堆栈段,这样在最后的链接link时,会将该最终创建的exe文件头部的SS:SP域指向该段的末尾
‘stack’表明该段的组合名为’stack’。同一程序不同模块中,相同组合名的段会组合到一起。组合名也决定了最后exe文件中各个段的排列顺序
参考文档:
微机中的一些解释
SEGMENT伪指令说明