【第四章】源程序(2)

4.8 谁将可执行文件的程序加载入内存并使它运行?

任何通用的操作系统,都要提供一个Shell程序,用户使用这个程序来操作计算机系统进行工作。DOS中有一个程序command.com,这个程序在DOS中称为命令解释器,也就是DOS系统的Shell。

如果用户要执行一个程序,则输入该程序的名字,command通过名字找到这个程序,将其载入内存,设置CS:IP指向该程序的入口。然后,command暂停运行,CPU运行程序,程序运行完后返回command中。

1.PNG

对程序的加载:

1.PNG

  1. 程序加载后,ds中存放着程序所在内存区的段地址,这个内存区的偏移地址为0,则程序所在地址为DS:0000
  2. 这个内存区的前256个字节中存放的是PSP,DOS用来和程序通信。从256字节后放的是程序。CS:IP指向程序的入口,因此CS=DS+0010,IP为0。

那么我们如果想要对程序进行调试怎么办呢?

可以用debug程序对我们的.exe文件进行调试

> debug 名字.exe

注意:用debug加载程序,程序结束后并不是返回到command中而是返回到debug中。因为程序载入的过程为command加载debug,debug再加载1.exe,因此从1.exe退出要先返回debug,再返回到command。