@2017libin
2019-05-14T03:06:54.000000Z
字数 693
阅读 73
汇编
前段时间,有个同学问我为什么我已经定义了堆栈段:
stack1 segment;堆栈段定义stack1 ends
但是在link的时候还是会出现警告:no stack segment!。但是将代码改成:
stack1 segment stack;堆栈段定义stack1 ends
这样一来,link的话就不会出现no stack segment!的警告了。在后面添加stack到底有什么作用呢?于是上网查了一下资料,在这里做一下总结:
segment定义格式如下:
name SEGMENT [[READONLY]] [[align]] [[combine]] [[use]] [[characteristics]] ALIAS(string) [['class']]statementsname ENDS
这是我在Micosoft文档里面参考的segment的定义。
下面来看一下后面几个重要的可选项的具体意义:
| 选项 | 意义 |
|---|---|
| align | 段的物理地址的起始位置,默认为para(段地址为16的倍数) |
| combine | 定义在link时,怎么连接相同段名的段 |
| class | 定义段的类别,会影响link时的段的位置 |
我们再回头来看一下这段代码:
stack1 segment stack;堆栈段定义stack1 ends
