在“环境变量窗口”的系统变量列表中选择“PATH”项,再点击系统变量列表下的“编辑”按钮。
在“编辑环境变量窗口”的“变量值”栏里追加MASM的BIN、BINB、INCLUDE目录的路径参数。例如:当MASM安装在E:\\MASM611目录,则在“变量值”栏里追加“; E:\\MASM611\\BINR; E:\\MASM611\\BIN”。
除此之外,还需要增加以下环境变量: LIB=E:\\MASM611\\LIB
INCLUDE=E:\\MASM611\\INCLUDE INIT=E:\\MASM611\\INIT
HELPFILES=E:\\MASM611\\HELP\\*.HLP ASMEX=E:\\MASM611\\SAMPLES
说明:环境参数改变后需要重新启动计算机才能生效。有些机房在计算机中使用了磁盘保护卡,一旦重新启动所有安装的文件和设置的参数都将消失。在这种情况下,可以在DOS命令行模式中输入一些临时命令设置MASM的环境参数。(假设MASM安装在E:\\MASM611目录)
SET PATH=E:\\MASM611\\BINR;E:\\MASM611\\BIN;%PATH% SET LIB=E:\\MASM611\\LIB
SET INCLUDE=E:\\MASM611\\INCLUDE SET INIT=E:\\MASM611\\INIT
SET HELPFILES=E:\\MASM611\\HELP\\*.HLP SET ASMEX=E:\\MASM611\\SAMPLES
2.4. MASM.EXE的使用
MASM.EXE用于将汇编源程序汇编成目标文件。当MASM汇编环境参数配置好之后,在“命令提示符”窗口中键入“MASM /H”指令,将显示出MASM的使用介绍。
MASM的命令格式如下:
MASM [option...] source(.asm),[out(.obj)],[list(.lst)],[cref(.crf)][;]
可选部分是MASM的各种汇编参数。source(.asm)指定汇编源文件的名称,缺省的扩展名是ASM。out(.obj)指定输出的目标代码文件。缺省的文件名与汇编源文件相同,扩展名改为OBJ。list(.lst)指定输出的列表文件,缺省的扩展名是LST。缺省情况下MASM不生成列表文件。cref(.crf)指定输出的交叉参考文件,缺省的扩展名是CRF。缺省情况下MASM不生成交叉参考文件,交叉参考文件的后缀为SBR。最后的分号表示其后的项目按缺省情况处理。
以下就各个汇编参数逐个加以说明。
参数名 /C /D
code1 segment assume cs:code1, ds:data1 start:
mov ax, data1
mov ds, ax mov dx, offset msg mov ah, 9
int 21h mov ax, 4c00h
int 21h code1 ends
end start
输入“masm hello;”指令,指令后的分号表示一切按缺省情况进行。运行后显示以下内容: Microsoft (R) MASM Compatibility Driver
Copyright (C) Microsoft Corp 1993. All rights reserved.
Invoking: ML.EXE /I. /Zm /c hello.asm
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993. All rights reserved.
Assembling: hello.asm
执行MASM /LA /ZI /ZD HELLO.ASM指令,用记事本观看生成的HELLO.LST的内容。
2.5. LINK.EXE的使用
LINK.EXE用于将目标文件链接成可执行文件。当环境参数配置好之后,在“命令提示符”窗口中键入“LINK /?”指令,将显示出LINK的参数表。
LINK的命令格式如下:
LINK [option...]
objs指定目标文件的名称,缺省的扩展名是OBJ。可以有多个目标文件,目标文件之间用加号或者空格间隔。
exefile指定输出的可执行文件的名称。缺省的文件名与目标文件相同,缺省扩展名改为EXE。 mapfile指定输出的列表文件的名称,缺省的扩展名是MAP。缺省情况下不生成列表文件。 libs指定链接时使用的库文件,缺省的扩展名是LIB。可以有多个库文件,库文件之间用加号或者空格间隔。缺省情况下MASM不使用库文件。最后的分号表示其后的项目按缺省情况处理。
deffile指定输出的定义文件的名称,缺省的扩展名是DEF。缺省情况下不生成定义文件。 最后的分号表示其后的项目按缺省情况处理。 以下就各个链接参数逐个加以说明。 参数名 /ALIGNMENT:size /BATCH /CODEVIEW 缩写 /A:size /B /CO 作用 根据指定的大小在分段执行文件中排列段数据,不可用于DOS程序 隐藏库或目标文件找不到的提示 加入CodeView的标识符号及列号,该选项与/EXEPACK不兼容。
/CPARMAXALLOC:number /DOSSEG /DSALLOCATE /EXEPACK /FARCALLTRANSLATION /CP:number /DO /DS /E /F 以16字节为单位设置程序最大分配空间 用缺省顺序排列段(用于微软高级语言) 从数据段的尾部开始装入全部数据,用于链接成EXE文件 压缩可执行文件的大小,与/CO和/INCR不兼容 优化远程调用,当使用/TINY时自动使用/FARCALL。当链接WINDOWS程序时不建议同时使用 /FARCALL和/FARCALLTRANSLATION 显示简要帮助信息 执行时尽可能地装入高端内存区,和/DEALLOC并用。(用于微软高级语言) 准备加入ILINK链接,与/EXEPACK和/TINY不兼容。 显示链接过程的信息 将源文件行号和相关地址加入MAP文件,目标文件必须带行号汇编。 将公共标识符加到MAP文件 忽略指定的缺省库 阻止LINK寻找库中的扩展字典,当重定义标识符导致错误L2044时使用/NOE 禁止远程调用 区别大小写字母 隐藏版权信息 类似于/DOSSEG参数,但是在_TEXT段前不加额外的字节 对代码段不压缩 /HELP /HIGH /HE /HI /INCREMENTAL /INFORMATION /LINENUMBERS /MAP /NOEXTDICTIONARY /INC /INF /LI /M /NOE /NODEFAULTLIBRARYSEARCH[:library] /NOD[:library] /NOFARCALLTRANSLATION /NOIGNORECASE /NOLOGO /NONULLSDOSSEG /NOPACKCODE /PACKCODE:number /PACKDATA:number /NOF /NOI /NOL /NON /NOP /PACKC:number 将相邻的代码段合并压缩,指定的字节数用于设定物理段的最大值 。 /PACKD:number 将相邻的数据段合并压缩,指定的字节数用于设定物理段的最大值 。仅用于windows /PAU /PM:type 链接过程中暂停以更换磁盘 指定基于Windows的应用程序的类型。 类型为PM表示是Windows API; 类型为VIO表示是Windows /PAUSE /PMTYPE:type
Compat; 类型为NOVIO表示不是Windows Compat; /QUICKLIBRARY /SEGMENTS:number /STACK:number /TINY /? /Q /SE:number /ST:number /T /? 建立Quick Basic程序库 设置链接时的段总数,缺省值为127 设置栈段的最大字节数,不超过64K 生成小模式的COM文件,与/INCR不兼容 显示简要帮助信息 下面将刚才用MASM.EXE汇编出来的目标程序进行链接。目标程序名称为HELLO.OBJ。 输入“link hello;”指令,指令后的分号表示一切按缺省情况进行。运行后显示以下内容: Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992 Copyright (C) Microsoft Corp 1984-1992. All rights reserved.
LINK : warning L4021: no stack segment
链接警告没有定义栈段,这不影响程序的运行。
接下来可以运行HELLO.EXE,看看显示结果是不是“Hello, world.”。
2.6. ML.EXE的使用
ML.EXE的功能相当于MASM.EXE和LINK.EXE的总和,可以将汇编语言源程序汇编和链接后直接生成可执行文件。当环境参数配置好之后,在“命令提示符”窗口中键入“ML /?”指令,将显示出ML的参数表。
ML的命令格式如下:
ML [ /options ] filelist [ /link linkoptions ]
可选部分是ML的各种链接参数,/link linkoptions里设定的是链接参数,这些参数可以参照2.5 LINK的有关参数。
filelist指定汇编源文件的名称,缺省的扩展名是ASM。可以有多个汇编源文件,文件之间用空格间隔。
以下就各个链接参数逐个加以说明。
参数名 /AT Enable tiny model (.COM file) /Bl