对于已经编写好的汇编程序,我们需要使用汇编器、连接器等工具来将其转换成为能够在目标平台上运行的可执行代码,在X86平台上常用的汇编器有Microsoft公司的宏汇编MASM和Borland公司的TASM两种。一般来说,使用汇编语言开发程序需要至少三个步骤。
1)使用通用编辑器(如EDIT、Notepad等)或其他专用编辑器书写汇编程序,建立ASM源文件。
2)使用汇编程序(MASM或TASM)把ASM文件转换为OBJ文件。
3)使用连接程序(LINK或TLINK)把汇编得到的OBJ文件以及相关的其他OBJ文件、LIB文件(库文件)连接为EXE可执行文件。
图3-4是汇编、连接和运行本节开头的示例程序的过程。
图3-4 汇编语言程序的建立与运行过程
首先,我们用编辑程序建立一个包含全部程序代码的纯文本文件,由于汇编程序要求输入的汇编程序源文件必须以ASM为扩展名,我们将其命名为HELLO.ASM。
在编辑汇编程序源文件的时候我们必须注意,汇编程序中的所有关键字和分割符都是半角的ASCⅡ字符,在输入时一定不要把诸如中文冒号、中文等号等全角字符当做对应的ASCⅡ字符输入,那样会导致汇编程序汇编出错。
然后,我们用汇编程序将ASM文件汇编为OBJ文件,这个过程是靠“MASM HELLO.ASM”这条命令完成的。在这个过程中,汇编程序有可能会询问ASM源程序文件名、OBJ目标文件名、LST列表文件名、CRF交叉引用文件名几个问题,得到回答后汇编程序开始进行汇编工作,如果程序没有语法错误,汇编程序就会产生OBJ目标文件等一系列文件。如果程序中存在语法错误,则汇编程序会在屏幕上显示出错误的位置(行数)和错误的原因,要求用户对其进行修改。
需要注意的是,程序没有语法错误并不等于程序能够正确执行,汇编程序只能对程序的语法错误做出反应,对于程序设计中的算法和逻辑上的错误汇编程序是无能为力的。
汇编完成之后,我们将汇编得到的HELLO.OBJ文件用连接程序LINK或TLINK连接成为可执行程序HELLO.EXE。由于我们的hello,world程序不需要连接其他程序模块就可以独立运行,所以我们输入的连接命令行中只有“HELLO.OBJ”一个OBJ模块。除了输出可执行程序之外,连接程序还可以根据我们的需要输出以MAP为扩展名的映像文件。整个汇编和连接的过程的示例如图3-5所示。(www.xing528.com)
图3-5 可执行文件的产生过程以及过程中涉及的文件
在整个汇编、连接的过程中,我们会涉及以下几种不同的文件。
●源文件:以ASM为扩展名,文本文件,是我们用编辑工具生成的文件。
●目标文件:以OBJ为扩展名,二进制文件,由汇编程序根据ASM文件产生,将被连接程序使用。
●列表文件:以LST为扩展名,文本文件,由汇编程序根据ASM文件产生,在汇编的时候可以选择是否生成该文件。列表文件列出全部机器语言代码、偏移地址以及汇编程序检查出来的错误等信息,对于程序开发者非常有用。
●交叉引用文件:以CRF为扩展名,二进制文件,由汇编程序根据ASM文件产生,在汇编的时候可以选择是否生成该文件。交叉引用文件中包括交叉引用表,列出了程序中使用的全部符号,以及这些符号被定义的行号和被引用的行号,这些信息对于调试很有用。交叉引用文件可以使用CREF工具(MASM中自带)转换为ASCⅡ码的文本文件。
●库文件:以LIB为扩展名,二进制文件,由LIB或TLIB工具将一系列的OBJ文件组织起来形成,一般包括一系列常用的汇编语言程序模块,这些模块可以提供一些常用功能。库文件一般用于连接时作为连接程序的输入使用。
●映射文件:以MAP为扩展名,文本文件,由连接程序在连接过程中可选地产生。映像文件给出程序中每个段的段名、在存储器中的起始地址、结束地址以及长度等信息,对于多模块组成的大程序的调试很有帮助。
●可执行文件:以EXE为扩展名,二进制文件,由连接程序连接目标文件(OBJ)和库文件(LIB)产生,可以在以X86微处理器为中心的PC系统上运行,是我们真正需要的文件。可以通过输入该文件的文件名来启动该文件,运行我们所编写的程序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。