《汇编语言·第三版》--王爽
1 准备工作
(1) 调试工具Debug
Win 7 64位系统需要额外准备debug。下载DOSBOX和debug.exe。
安装DOSBOX后打开DOSBOX,将debug.exe拷贝到F盘(某盘根目录),在DOSBOX中输入“mountc f:\”命令(此命令输入后有“Drive C is mounted aslocal directory f:\”,再输入“c:”回车。
(2) 汇编编译器
使用微软的masm5.0来编译编写的汇编程序。下载masm5。将masm5.zip解压拷贝到debug.exe所在的目录下。
(3) 连接器
(2)中masm5目录下含连接器,可直接用其下的link。
2 源程序
在masm5下新建src\first文件夹,在first内用Notepad++编写一个汇编程序如下:汇编源程序中包含两种指令,一种是汇编指令,一种是伪指令。汇编指令是有对应的机器码的指令,可以被编译器机器指令,最终为CPU所执行。伪指令没有相应的机器指令,又编译器来执行。
3 编译
对汇编源程序进行编译,生成包含机器代码的目标文件。
经过这些步骤后,在src\first目录下会自动生成first.obj目标文件。
4 连接
在对源程序进行编译得到目标文件后,再对目标文件进行连接,从而得到可执行文件。
经过此过程后,src\first\目录下会自动生成first.exe可执行文件。
5 执行
(1) 执行操作
直接输入可执行文件的名字,可执行文件即可得到执行:(2) 执行过程分析
- 在DOS中直接执行first.exe时,正在运行的command(shell)程序将first.exe中的程序加载到内存;程序所在内存区的地址为ds:0,这个区域的前256字节中存放的是PSP,DOS用PSP来和程序进行通信;从256字节处向后的空间存放的是程序。
- CS:IP等寄存器的值备份,command设置CPU的CS:IP指向程序的第一条指令(程序入口),使程序得以运行;
- 程序运行完毕后,CS:IP等寄存器的值复原,返回到command中。
6 用调试工具跟踪程序运行
用command加载程序运行时,command会放弃CPU的控制权,CPU立即开始执行程序,直至程序运行结束。
Debug可以将程序加载入内存,设置CS:IP指向程序的入口,但Debug不放弃对CPU的控制,这样,就可以使用Debug的相关命令来单步执行程序,查看每一条指令的执行过程。
(1) 单步执行
(2) 查看PSP内容
ds:0 ~ ds:FFH存放的是PSP的内容。