问题描述
首先我们写一段很简单的带有栈段的汇编程序:
stack segment
db 128 dup (?)
stack ends
code segment
assume cs:code,ss:stack
start:
mov ax,stack
mov ss,ax
mov ax,0001h
mov ax,4c00h
int 21h
code ends
end start
可以看到,我们其实写了一个名称为stack的栈段,并且用assume伪指令做了指令,但是我们在连接的时候会发现这样一个情况:
这个警告无论你是否定义栈段都会产生。
解决方案
问题产生的主要原因是assume伪指令实际上不会起任何作用,我们需要通过其他的方法让编译器知道stack段就是栈段,因此,做出的改动是在stack segment语句后添加stack.
stack segment stack
db 128 dup (?)
stack ends
code segment
assume cs:code,ss:stack
start:
mov ax,stack
mov ss,ax
mov ax,0001h
mov ax,4c00h
int 21h
code ends
end start
再次编译连接就不会报警告了。