【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)

0.准备工作

  • masm.exelink.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

【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第1张图片
然后将源代码保存为.asm格式的文件:
【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第2张图片
【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第3张图片

2.使用masm对源文件编译

本文中使用masm 5.0汇编编译器。

  1. 进入masm.exe所在目录,运行masm:
  2. 输入源文件的文件名:
  • 文件名称:如果是.asm,则直接输入filename即可,否则输入完整的文件名;
  • 文件路径:如果是当前目录,则直接输入filename即可,否则输入完整的路径名;
  1. 输入目标文件的文件名,默认.obj格式:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第4张图片
  2. 输入列表文件的名称,这个文件是编译器将源程序编译为目标文件所产生的中间文件,不需要产生,直接按回车即可:
  3. 输入交叉引用文件的名称,这个文件同列表文件一样,是编译器将源程序编译为目标文件产生的中间结果,不需要保存,直接按回车即可:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第5张图片
  4. 编译过程错误提醒和警告提醒
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第6张图片

3.使用link对目标文件链接

本文中使用link 3.60链接器。

  1. 进入link.exe所在目录,运行link:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第7张图片
  2. 输入目标文件的文件名,规则同上:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第8张图片
  3. 链接器已经默认可执行程序文件名为1.exe,直接按回车即可:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第9张图片
  4. 输入映像文件的名称,这个文件是链接器将目标文件链接为可执行文件的过程中产生的中间结果,不需要产生,直接按回车即可:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第10张图片
  5. 输入库的名称,如果程序里用到了库里的子程序,则需要输入,这里没有用到,直接回车即可:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第11张图片
  6. 链接完成,生成可执行程序,输入链接信息:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第12张图片

4. 编译和链接过程的简化

从2、3节可以看出,整个编译和链接的过程经历了很多不必要的步骤,这里可以将整个过程简化:

  • 编译使用:masm ;(注意最后有个分号)
  • 链接使用:link ;(注意最后有个分号)

【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第13张图片

5.执行可执行文件

首先进入到可执行程序所在目录,然后输入文件名运行即可:

6.使用debug调试可执行程序

debug程序的作用:

  • 将程序载入内存;
  • 设置CS:IP指向程序的入口;
  • 继续保持对CPU的控制,便于执行程序;
  1. 使用命令debug <可执行程序路径\名称>开始调试(名称需要带上.exe后缀):
  2. 使用debug程序的指令开始调试,如:
    【8086汇编】从汇编源程序到可执行文件(masm + link工具链的使用)_第14张图片

你可能感兴趣的:(#,8086汇编)