MASMMicrosoft Macro Assembler 的缩写,它是微软x86 微处理器家族,所写的一套宏汇编器。它最初是用来发展在 MS-DOS 上面执行的软件,同时,它也是该系统最流行的汇编器。

Microsoft Macro Assembler
开发者Microsoft
当前版本12.0.21005.1(2013年11月8日 (2013-11-08)
操作系统Microsoft Windows and MS-DOS
类型Assembler
许可协议Microsoft EULA
网站www.masm32.com 编辑维基数据

它支持的很灵巧,既广泛又多样性,结构化程序的惯用语法,包含高阶架构式的循环、程序调用,以及轮替 (alternation)(因此,MASM 算是高阶汇编器的一个范本)。MASM原本是由微软公司维护的,但从6.12版后不再单独销售,而是随附在微软软件开发工具包与C语言编译器下,近期版本的MASM也包含在微软开发工具Visual Studio中。

竞争

在 1990 年代初期,不管如何,有一些可供选择的汇编器,像是 Borland TASM、共享版的 A86,以及(在 90 年代末期)NASM,都开始获取 MASM 的一些市场分量。但是在 1990 年代终,有两种因素,使得 MASM 保住大部分的市场分量:

于是,微软停止把 MASM 作为商业产品一样的出售,并开始当成免费散布的 DDK驱动器发展包)之一部分;其次,MASM32 开发包Iczelion's Win32 教材的出现,让视窗应用程式的设计,更方便使用 MASM.

后来在 2000 年,MASM 6.15 的发行,一样是 Visual C++ Processor Pack 的一部分,费用全免。结果,在 Visual C++ 6.0 后来的所有版本,所包含的 MASM 之版本,都相等该 Visual C++ 的版本。后来在 Visual C++ 2005,64 位元版的 MASM 出现了(文件名为 ml64.exe)。加上有庞大数量已安装 MASM 的用户群基础,这些因素,使得MASM仍能继续生存而不被淘汰。

支持 MASM 的项目

有许多正在进行的软件开发项目,都有支持到 MASM,其中包括 IDE(如 WinAsm StudioRadASM)、调试器(像是 OllyDbg),以及 反汇编器(如 IDAPro, Interactive Disassembler

为了 MASM 用户的方便,有MASM32的项目把程序员所写的程序库 (library)、程序示例 (sample code) 以及帮助文档集合在一起。也有很多网上论坛在支持 MASM。

这些也都是沿习着着名的产品,如 Visual Basic、Visual C++、EasyCodeIDE 一样,为 MASM 提供 可视化 (visual) 的能力。虽然这个产品上了年纪,但它仍然是最受各方支持的汇编器

MASM 的版本

  • 商业软件时期的 MASM 主要版本:
    • 4.x 1980 年代末期最流行的版本,很多汇编语言入门书都以它为范本。
    • 5.x 开始强化汇编器简易指令(点指令),以简化程序架构。稍晚的汇编语言入门书亦大量运用此一版本。
    • 6.x 版本为了支持 Windows,有几个重大特色:
      • 支持 flat 与 386 以上 CPU保护模式。
      • 集成 PWB(Programmer's WorkBench) 开发环境。这软件在同时期的 Quick BASIC 也找得到。
      • 支持 DOS Extender,内建 DOS/16M。
      • 开始支持 OS/2WinAPI
      • 简易指令加入流程控制叙述,如 .IF、.While、.Exit......等。
      • 强化对外部函数库的支持命令,如 proto 与 invoke 等指令,其中最核心的是将 proc 指令包装成符合高级语言风格(支持 C 与 Pascal 风格)的形式,且 invoke 指令重新包装 call 与 push/pop 指令,可以更直观、高阶地运用函数。这对调用高级语言写成的函数、特别是繁复的 WinAPI 非常重要。
      • masm 与 link 集成为 ML。
      • NMake 的 makefile 描述结构也产生了巨大的变化。

单独销售的最终版本 MASM 是 6.11。自从微软停止 MASM 单独销售之后,至今他们也更新了几次的 MASM。因为在微软的操作系统等产品内,还是有大量以汇编语言撰写的代码

在这些新版 Visual C++ 的 bin 目录中,皆有 ml.exe。Visual C++ .NET 2005 的相同目录,还有一个 ml64.exe,它可以汇编 x64代码。相关的说明,都包含在这些新版 Visual C++ 的帮助文档里。

有些新版的 MASM,也会放在微软的 SDKDDK 中。 在VisualStudio2010中可用如下方式运行MASM(ML.exe):

   [SetupDir]\VC>ML [SourceFile]

支持

虽然有传言说,微软不再支持发展汇编器,事实上,微软是继续支持发展这个产品。大致来说,支持仅限于添加新的指令集,如出现较新的处理器,以及加强支持 64 位元;往后将不会见到此汇编器被彻底的改头换面。

外部链接