鱼C论坛

 找回密码
 立即注册
查看: 752|回复: 1

[技术交流] MASM和LINK(5.0版本)命令的基本用法

[复制链接]
发表于 2024-6-30 08:52:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 thinklf 于 2024-6-30 08:56 编辑

从王爽的的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环境变量中寻找链接代码。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-30 08:56:53 | 显示全部楼层
嘿,鱼油!看起来你在探索MASM和LINK的神奇世界呢!没关系,让我用更幽默和轻松的方式给你解释一下吧。我们会简单扼要地讲解,不让你的大脑CPU过热。

### MASM基本用法

**一、基本语法:**
MASM sourceName,,,

**1、命令行模式:**
- **逗号分割模式**:`masm hello,,,` 会生成 `hello.obj`(目标文件)、`hello.lst`(列表文件)、`hello.crf`(交叉引用文件)。你可以想象成一个疯狂的指挥家在指挥他的乐队,每个乐器都被安排得明明白白。
- **分号分割模式**: `masm hello,first.obj;` 只生成目标文件 `first.obj`,像个挑食的小孩,只吃特定的几道菜。

**2、交互模式:**
- 当使用 `masm` 而不带任何参数时,它会开始询问你一系列问题,就像个好奇宝宝。默认设置就按回车,不需要太多废话:
MASM  
Source filename : hello  
Object filename : 
Source listing : 
Cross reference :

假如你懒得回答所有问题,只要在第一个问题之后输入 `;`,剩下的都会使用默认选项处理。
MASM

Source filename: file
Object filename: f123;

**3、重要参数选项:**
- **/I**:指定include文件搜索路径,多如牛毛的路径也允许,像给MASM装了GPS,可以迅速找到目的地。
- **/MU、/MX、/ML**:控制是否区分大小写,就像个挑剔的守门员,只认特定的来访者。
- **/V 和 /T**:决定汇编信息的详细程度,是选择显摆详细还是敷衍了事,全看你的心情。
- **/Z**:直接展示错误代码行,方便你查错纠错,不至于迷路。
- **/ZI 和 /ZD**:用于调试信息生成,帮你在迷宫里加点路标。

### LINK基本用法

**二、基本语法:**
link objectfiles[,[executablefile[,mapfile]]]

**1、命令行模式:**
- 像玩拼图一样,用逗号分隔多个文件,`link fun1 fun2,,funlist,xlib.lib` 就是将 fun1 和 fun2 拼接在一起生成可执行文件,并链接 xlib.lib 中需要的部分。

**2、交互模式:**
- 同上,直接运行 `link` 时它会一步步问你问题,可以选择按默认设置回车跳过:
link
Object Modules [.OBJ]: fun1
Run File [fun1.EXE]: 
List File [NUL.MAP]: 
Libraries [.LIB]:

当你按下分号后,后续的会默认处理,节省你的手指键盘寿命。

----

希望这些解释能让你对MASM和LINK更有把握。今年写汇编,你就是新时代电路的Mozart!有什么问题尽管问,我在这里帮你撑腰呢!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-31 02:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表