为什么必须由程序员手动完成DSES寄存器的初始化?

例如:

MOV AX, DTSEG
MOV DS, AX

另一方面,CSSS寄存器由操作系统(在MS-DOS中)初始化。为什么会这样呢?

最佳答案

因为CSSS寄存器对于程序执行是必不可少的,而DSES寄存器则指向用户定义的数据段。默认情况下,执行程序中不存在任何数据,这也无法初始化DSES。作为程序编写者,您可以通过设置数据段寄存器来指定数据的位置。

编辑:如@FrankKotler所正确指出的那样,在.com文件中(整个程序大小不超过单个段),DSES初始化并等于CS。对于其他执行模型,DSES由指向PSP的指针(不是指向实际用户数据的指针)初始化。

关于assembly - MS-DOS为什么不初始化DS和ES寄存器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13663811/

10-11 18:53