续上一篇编译出的可执行文件,分析其执行过程。
用Debug装载程序
-
程序被装入内存的什么地方?
根据这些信息,能画出一下的图
其中,一共256(100H)字节的程序段前缀(PSP),作为数据区这里的“数据区”属于操作系统的细节,这里不展开(焦点放在对汇编指令的了解上)。
通过u观察代码段代码
- 小结
- 程序加载后,DS中存放着程序所在的内存区的段地址,这个内存区的偏移地址位0,则程序所在的内存区的地址位:
DS:0。 - 这个内存区的前256个字节存PSP,DOS用来和程序进行通信。
- 从256字节处向后的空间存放的是程序,CS的值为DS+10H。
-
程序加载后,CX中存放代码代码的长度(字节)。
- 程序加载后,DS中存放着程序所在的内存区的段地址,这个内存区的偏移地址位0,则程序所在的内存区的地址位:
用Debug单步执行程序
ip移动到另外一个位置,代表程序已经执行完毕
其他方式执行 (P命令/G命令)
- 继续命令P(
Proceed):
类似T命令,逐条执行指令、显示结果。
但遇子程序、中断等时,直接执行,然后显示结果。 - 运行命令G(
Go):
从指令地址处开始运行程序,直到遇到断点或者程序正常结束。