moh*_*hed 8 assembly dos intel masm x86-16
为什么DS和ES寄存器的初始化必须由程序员手动完成?
例如:
MOV AX, DTSEG
MOV DS, AX
Run Code Online (Sandbox Code Playgroud)
另一方面,CS和SS寄存器由操作系统(in MS-DOS)初始化.为什么会这样?
因为CS和SS寄存器对于程序执行至关重要,DS与ES寄存器相反,寄存器指向用户定义的数据段.默认情况下,执行程序中不存在任何数据,无需初始化DS和ES使用.作为程序编写者,您可以通过设置数据段寄存器来指定数据的位置.
编辑:正如@FrankKotler正确记录的那样,在.com文件中(整个程序大小不超过单段),DS并且ES被初始化并等于CS.对于其他执行模型,DS并ES通过指针初始化PSP(这不是指向真实用户数据的指针).
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |