0.准备工作
- 将
masm.exe
和link.exe
拷贝到虚拟机的DOS系统中; - 熟悉DOS系统自带编辑器
edit.exe
的使用;
再来回顾一下整个过程:
1. 使用edit编辑源程序
在命令行中输入edit
打开编辑器,然后编辑程序,以如下源代码为示例:
assume cs:coding
codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21H
codesg ends
end
然后将源代码保存为.asm
格式的文件:
2.使用masm对源文件编译
本文中使用masm 5.0
汇编编译器。
- 进入masm.exe所在目录,运行masm:
- 输入源文件的文件名:
- 文件名称:如果是.asm,则直接输入filename即可,否则输入完整的文件名;
- 文件路径:如果是当前目录,则直接输入filename即可,否则输入完整的路径名;
- 输入目标文件的文件名,默认
.obj
格式:
- 输入列表文件的名称,这个文件是编译器将源程序编译为目标文件所产生的中间文件,不需要产生,直接按
回车
即可:
- 输入交叉引用文件的名称,这个文件同列表文件一样,是编译器将源程序编译为目标文件产生的中间结果,不需要保存,直接
按回车
即可:
- 编译过程错误提醒和警告提醒:
3.使用link对目标文件链接
本文中使用link 3.60
链接器。
- 进入link.exe所在目录,运行link:
- 输入目标文件的文件名,规则同上:
- 链接器已经默认可执行程序文件名为
1.exe
,直接按回车即可:
- 输入映像文件的名称,这个文件是链接器将目标文件链接为可执行文件的过程中产生的中间结果,不需要产生,直接按回车即可:
- 输入库的名称,如果程序里用到了库里的子程序,则需要输入,这里没有用到,直接回车即可:
- 链接完成,生成可执行程序,输入链接信息:
4. 编译和链接过程的简化
从2、3节可以看出,整个编译和链接的过程经历了很多不必要的步骤,这里可以将整个过程简化:
- 编译使用:
masm <filepath\filename>;
(注意最后有个分号) - 链接使用:
link <filepath\filename>;
(注意最后有个分号)
5.执行可执行文件
首先进入到可执行程序所在目录,然后输入文件名运行即可:
6.使用debug调试可执行程序
debug程序的作用:
- 将程序载入内存;
- 设置CS:IP指向程序的入口;
- 继续保持对CPU的控制,便于执行程序;
- 使用命令
debug <可执行程序路径\名称>
开始调试(名称需要带上.exe后缀):
- 使用debug程序的指令开始调试,如: