当前位置: 技术问答>linux和unix
有关物理地址的形成问题?
来源: 互联网 发布时间:2014-10-28
本文导语: 当汇编成可执行文件时。dos把它装入内存时。 那么程序的指令IP是怎么样的。是不是固定的?如果以被系统固定 那么低段内存的用户程序区的范围会变化吗?会和其他资源冲突吗? 可以自己设定cs段吗?如果设的不...
当汇编成可执行文件时。dos把它装入内存时。
那么程序的指令IP是怎么样的。是不是固定的?如果以被系统固定
那么低段内存的用户程序区的范围会变化吗?会和其他资源冲突吗?
可以自己设定cs段吗?如果设的不好会和其他资源冲突吗?
那么程序的指令IP是怎么样的。是不是固定的?如果以被系统固定
那么低段内存的用户程序区的范围会变化吗?会和其他资源冲突吗?
可以自己设定cs段吗?如果设的不好会和其他资源冲突吗?
|
通常不用自己设置CS段。在可执行文件(EXE)中,存放有程序开始执行时的CS:IP, 不过是相对的。DOS在装入EXE文件的时候,会根据装入的地址对其进行重定位。当然重定位的还有其它的数据。所有需重定位的数据都存放在exe文件的重定位表中。
对于COM程序而言,其IP总是0x100. 它不需要重定位,因为它不会超过64K即一个段的大小。
|
补充,如果在实模式下的dos,如果自己更改cs的内容,一般会死机。
在windows下的dos,一般报错,说执行了非法指令等等。。。
在windows下的dos,一般报错,说执行了非法指令等等。。。
|
对于CS,是根据装入时的内存情况动态分配的。而IP则是由你的程序决定的,相对固定。
|
在DOS中,你可以在程序中将DS指向任何段地址。它的物理地址当然是不固定的。当然程序开始时指向的是程序的数据段地址。如果你不改变DS,且引用的数据也不超过程序的数据区范围,则不会引起冲突;否则的话就看你的运气了,因为在DOS里,内存保护等的概念都没有。
|
找一本汇编书,查“重定位”知识。