MASM和LINK(5.0版本)命令的基本用法

  从Microsoft的MASM汇编开始学习的汇编,MASM命令的详细用法少有书籍介绍,博主从《Microsoft Micro Assembler User's Guide》中学习后记录如下:

一、MASM 5.0的基本语法是

  MASM [options] sourceName,[objectName],[listFileName],[crossReferenceName]

  MASM有2种使用模式,命令行模式和交互模式。默认MASM自动添加文件参数的扩展名,除非特别指定。sourceName默认的扩展名是asm(即,如果要编译hello.asm,只要输入masm hello;即可);objectName的默认扩展名是obj;listFileName默认扩展名是lst;crossReferenceName默认扩展名是crf。

  查看帮助命令:masm /h

1、命令行模式

    MASM可通过,(逗号)和;(分号)对文件名参数进行分割,如果用,(逗号)分割,表示逗号之间的文件名用sourceName文件名表示;如果如果用;(分号)分割,表示分号之后的文件名用默认表示,MASM 默认不生产lst文件和crf文件(即默认的文件名是:NUL)。

    如:

masm hello,,,,

    生成hello.obj、hello.lst、hello.crf三个文件。

masm hello,first.obj;

    生成first.obj一个文件。

masm d:\asmFile\hello,,stest;

    生成hello.obj(如果文件不在当前文件夹,需提供完整的文件路径)和stest.lst两个个文件,crf文件被跳过了。

2、交互模式

  交互模式(prompt)中分号的使同命令模式基本相同,交互模式提供了默认选项的提示,如果按默认选项来,可以不做任何输入,直接按回车(return)即可。

  如: 

masm  <回车>
提示:
Source filename [.ASM]:hello  <回车>
Object filename [hello.OBJ]: <回车>
Source listing [NUL.LST]: <回车>
Cross reference [NUL.CRF]: <回车>

 

    如果在提示输入的时候输入;(分号),那么后面的选项将按默认方式处理,不再提示。

MASM <回车>

Source filename.me [.ASM] : file    <回车>
Object filename [file.OBJ] : f123;  <回车>

 3、[option]参数部分,option不区分大小写

  (1)/I,include文件的搜索路径

  指定masm搜索include指令的搜索路径,最多可指定10个,如:masm /Ic:\masm5\include /Ic:\include。masm首先在/I指定的目录中,根据指定的路径顺序依次搜索;如没找到,再到当前目录中;最后到include环境变量中搜索。如inclde中指定路径,如c:\include\dos.inc或.\dos.ic,则masm不对路径进行搜索。

  (2)/MU(默认)、/MX、/ML,标志名称区分大小写

  mu将定义的name(变量,标号等)转换成大写;mx指示masm对public和external的name区分大小写;ml指示masm所有的name区分大小写。如masm使用了ml或mx,则link 要使用/NOI,对于与像C语言这样的模块互通有益。

  (3)/V和/T,汇编状态信息显示

  V(verbose)显示详细的汇编信息,T(terse)显示简单的汇编信息(基本无任何显示),除非有错误发生。

  如两个都不指定,汇编状态信息显示的是汇编状态统计,即警告(Warnings)和错误(Errors)的数量。

  (4)/Z,显示错误行代码

  默认masm只显示错误信息数,/Z则可以将错误处的代码显示出来,便于定位错误原因。

  (5)/ZI和ZD,在obj文件中生成行号和符号信息

  /ZD,在Obj文件中生成行号,用于map文件查看。

  /ZI,在ob文件中生成行号和符号信息,用于CodeView调试,符号信息指:标号和变量名称等。

二、LINK 4.05的基本语法是

  link [option] objectfiles[,[executablefile[,mapfile[,libraryfile]]]][;]

  objectfiles之间可用空格或+号进行分割;

  objectfiles部分也可以添加lib文件(注意lib扩展名),表示该lib文件中的所有object module都链接到exe文件中。

  libraryfile部分的lib文件,link只链接其中通过外部引用到的部分,并不链接所有的object模块。

  查看帮助命令:link /help

1、命令模式

  与masm相同,可通过逗号分割,表示逗号部分用默认文件名;

  如link fun1 fun2,,funlist,xlib.lib;(executablefile就是执行默认文件名选择)

  如果直接用分号,则表示后续的选择都用默认动作(如map文件默认不生成)。

2、交互模式

  交互模式(prompt)中分号的使同命令模式基本相同,交互模式提供了默认选项的提示,如果按默认选项来,可以不做任何输入,直接按回车(return)即可。

  Run File默认是第一个obj文件的名称,扩展名默认是exe。

  List File默认是NUL.MAP,即不生成map文件。

  Libraries默认是从当前文件夹或lib环境变量中寻找链接代码。

posted @ 2022-06-07 18:41  美洲象  阅读(1173)  评论(0编辑  收藏  举报