汇编 – 为什么MS-DOS不初始化DS和ES寄存器?

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

例如:

MOV AX,DTSEG
MOV DS,AX

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

因为CS和SS寄存器对于程序执行至关重要,而DS和ES寄存器则指向用户定义的数据段.认情况下,执行程序中不存在任何数据,这对于初始化DS和ES没有任何意义.作为程序编写者,您可以通过设置数据段寄存器来指定数据的位置.

编辑:正如@FrankKotler在.com文件中正确记录的那样(整个程序大小不超过单段),DS和ES被初始化并等于CS.对于其他执行模型,DS和ES通过指向PSP(不是指向真实用户数据的指针)的指针进行初始化.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...