MASM

MASM 是 Microsoft Macro Assembler 的縮寫，它是微軟為 x86 微處理器家族，所寫的一套巨集組譯器。它最初是用來發展在 MS-DOS 上面執行的軟體，同時，它也是該系統最流行的組譯器。

它支援的巨集很靈巧，既廣泛又多樣性，結構化程式的慣用語法，包含高階架構式的迴圈、程序呼叫，以及輪替 (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 Studio，RadASM）、除錯器（像是 OllyDbg），以及 反組譯器（如 IDAPro, Interactive Disassembler）

為了 MASM 使用者的方便，有MASM32的專案把程序员所寫的程式庫 (library)、程式範例 (sample code) 以及說明文件集合在一起。也有很多網上論壇在支援 MASM。

這些也都是沿習著著名的產品，如 Visual Basic、Visual C++、EasyCode 的 IDE 一樣，為 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/2 與 WinAPI。
 簡易指令加入流程控制敘述，如 .IF、.While、.Exit......等。
 強化對外部函式庫的支援命令，如 proto 與 invoke 等指令，其中最核心的是將 proc 指令包裝成符合高階語言風格（支援 C 與 Pascal 風格）的形式，且 invoke 指令重新包裝 call 與 push/pop 指令，可以更直觀、高階地運用函式。這對呼叫高階語言寫成的函式、特別是繁複的 WinAPI 非常重要。
 masm 與 link 整合為 ML。
 NMake 的 makefile 描述結構也產生了巨大的變化。

單獨銷售的最終版本 MASM 是 6.11。自從微軟停止 MASM 單獨銷售之後，至今他們也更新了幾次的 MASM。因為在微軟的作業系統等產品內，還是有大量以組合語言撰寫的程式碼。

 6.15 版是放在 Visual C++ 6.0 Processor Pack 中。
 7.0 版是放在 Visual C++ .NET 2002。
 7.1 版是放在 Visual C++ .NET 2003。
 8.0 版是放在 Visual C++ .NET 2005，它也可以組譯 x64 的程式碼。

在這些新版 Visual C++ 的 bin 目錄中，皆有 ml.exe。Visual C++ .NET 2005 的相同目錄，還有一個 ml64.exe，它可以組譯 x64 的程式碼。相關的說明，都包含在這些新版 Visual C++ 的說明文件裡。

有些新版的 MASM，也會放在微軟的 SDK 和 DDK 中。
在VisualStudio2010中可用如下方式运行MASM（ML.exe）：
    [SetupDir]\VC>ML [SourceFile]

 支援 

雖然有傳言說，微軟不再支援發展組譯器，事實上，微軟是繼續支援發展這個產品。大致來說，支援僅限於添加新的指令集，如出現較新的處理器，以及加強支援 64 位元；往後將不會見到此組譯器被徹底的改頭換面。

 外部連結 

 MASM32 Homepage 
 Free MASM Source Code
 PC Benchmarks For 64 
 開始進行 64 位 Windows 系統編程之前需要瞭解的所有信息 

Category:微軟開發工具
Category:DOS軟體
Category:Windows软件
Category:汇编语言