我目前正在阅读 Jeff Duntemann 的“Assembly Language step by step”。我对描述受保护平面模型的内存组织的图片感到有些沮丧。它显示了一块 4GB 大小的内存。在那里,指令区靠近底部(低地址),然后是上面的数据区,堆栈靠近顶部。同时,如果我理解正确的话,平面模式下的 DS 和 CS 寄存器不会影响指令或数据的起始地址(在 4GB 内)。
我的问题是:
那么,谁在这 4GB 中分配代码和数据区域(下面的代码,上面的数据)?谁决定指令从哪个地址开始,数据从哪个地址开始?书中有一些汇编程序,但看起来程序员没有为指令和数据选择内存位置(在他自己的 4GB 内)。他只是在某处声明数据部分并输入指令。另一方面,*.lst 文件已经有指令和数据块的地址。那么是汇编程序决定地址吗?