创建汇编文件进行编译链接

创建汇编文件进行编译链接

  • 首先我们要先去创建一个.asm文件,也就是汇编的源程序文件

这里写图片描述

  • 然后用微软的masm5.0汇编编译器进行对源程序的编译

下面就是去执行masm程序,然后对1.asm文件进行编译,其中.lst文件和.crf文件就是编译器将源程序编译为目标文件过程中产生的中间结果

这里写图片描述

关于1.crf文件的内容

这里写图片描述

再来看下.lst文件中的内容,我们可以看到里面有汇编指令对应的机器码以及这个汇编源程序编译的信息,比如说文件名字,代码行数等等

这里写图片描述

我们经过编译得到了目标文件1.obj了
这里写图片描述

  • 之后我们要做的就是将1.obj文件进行连接成可执行文件1.exe文件

打开微软的Overlay Linker 3.60连接器

这里写图片描述

使用连接程序产生的结果,其实我们这里会看到下面有叫我们输入库文件的名称,如果说我们的程序中调用了某一个库文件中的子程序,就需要在连接的时候,将这个库文件和目标文件连接到一起,生成可执行文件

这里写图片描述

我们这里可以去看看.map这个映像文件,这个文件其实是连接程序将目标文件连接为可执行文件过程中产生的中间结果,我们可以看到里面包含了我们连接程序的时候的警告和机器码的长度,起始地址和结束地址等信息

这里写图片描述

生成的可执行文件如下所示

这里写图片描述

在这里简单的说下连接程序的作用

  • 其实就是当我们的源程序如果很大的时候,就可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件之后,再去用连接程序去将它们连接到一起,然后去生成一个可执行文件
  • 程序中调用了某个库文件中的子程序之后,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件
  • 当一个源程序编译之后,得到了存有字节码的目标文件,但是目标文件中还有些内容是不能直接拿来生成可执行文件的,连接程序将这些内容处理为最终的可执行信息,所以也就是说就算只有一个源程序文件,而且又不需要去调用某个库中的子程序的时候,也必须去使用连接程序对目标文件进行处理,生成可执行文件

猜你喜欢

转载自blog.csdn.net/ZCMUCZX/article/details/80054709