MASM

MASM

MASM是Microsoft Macro Assembler 的縮寫,是微軟公司為x86 微處理器家族開發的彙編開發環境,擁有可視化的開發界面,使開發人員不必再使用DOS環境進行彙編的開發,編譯速度快,支持80x86彙編以及Win32Asm,是Windows下開發彙編的利器。它與windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的開發人員必須在windows下進行開發。

它支持的宏很靈巧,既廣泛又多樣性,結構化程序的慣用語法,包含高級架構式的循環、程序調用,以及輪替 (alternation)(因此,MASM 算是高級彙編器的一個範本)。

發展歷程


MASM 4.00
這是最先廣泛使用的一個 MASM 版本,適用於 DOS 下的彙編編程。它很精巧,但使用起來不是很智能化,需要用戶自己一板一眼地寫出所有的東西。很多教科書上講的 8086 彙編語法都是針對這個版本的,對程序員來說。它只比用 Debug 方便一點點
MASM 5.00
MASM 5.00 比 4.00 在速度上快了很多,並將段定義的偽指令簡化為類似 .code 與 .data 之類的定義方式,同時增加了對 80386 處理器指令的支持,對 4.00 版本的兼容性很好
MASM 5.10
對程序員來說,這個版本最大的進步是增加了對 @@ 標號的支持。這樣,程序員可以不再為標號的起名花掉很多時間。另外, MASM 5.10 增加了對 OS/2 1.x 的支持
MASM 5.10B
1989 年推出,比上一個版本更穩定、更快,它是傳統的 DOS 彙編編譯器中最完善的版本
MASM 6.00
1992 年發布,有了很多的改進。編譯器可以使用擴展內存,這樣可以編譯更大的文件,可執行文件名相應從 Masm.exe 改為 Ml.exe 。從這個版本開始可以在命令行上用 *.asm 同時編譯多個源文件,源程序中數據結構的使用和命令行參數的語法也更像 C 的風格。最大的改進之一是開始支持 .if/.endif 這樣的高級語法,這樣,使用複雜的條件分支時和用高級語言書寫一樣簡單,可以做到幾千行的代碼中不定義一個標號;另外增加了 invoke 偽指令來簡化帶參數的子程序調用。這兩個改進使彙編代碼的風格越來越像 C ,可讀性和可維護性提高了很多
MASM 6.00A
未發售的版本
MASM 6.00B
最後一個支持 OS/2 的 MASM 版本,修正了上一版本中的一些錯誤
MASM 6.10
修正了一些錯誤,同時增加了 /Sc 選項,可以在產生的 list 文件中列出每條指令使用的時鐘周期數
MASM 6.10A
1992 年發布,修正了一些內存管理方面的問題
MASM 6.11
1993 年 11 月發布,支持 Windows NT ,可以編寫 Win32 程序,同時支持 Pentium 指令,但不支持 MMX 指令集
MASM 6.11C
1994 年發布,增加了對 Windows 95 VxD 的支持
MASM 6.12
1997 年 8 月發布,增加 .686 , .686P , .MMX 聲明和對相應指令的支持
MASM 6.13
1997 年 12 月發布,增加了 .K3D 聲明,開始支持 AMD 處理器的 3D 指令
MASM 6.14
這是一個很完善的版本,它在 .XMM 中增加了對 Pentium III 的 SIMD 指令集的支持,相應增加了 OWORD ( 16 位元組)的變數類型
Masm 6.15界面
Masm 6.15界面
MASM 6.15
2000 年 4 月發布,位於Visual C++ 6.0 Processor Pack。
MASM 7.0
位於Visual C++ .NET 2002。
MASM 7.1
位於Visual C++ .NET 2003。
MASM 8.0
放在Visual C++ .NET 2005,它也可以彙編x64的代碼。
最新版本:14.0
位於Visual C++ 2015及其以後的版本中
在這些新版Visual C++的 bin 目錄中,皆有 ml.exe。Visual C++ .NET 2005的相同目錄,還有一個 ml64.exe,它可以彙編x64的代碼。相關的說明,都包含在這些新版Visual C++的說明文件里。

軟體競爭


在 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,其中包括IDE(如WinAsm Studio,RadASM)、除錯器(像是OllyDbg),以及反彙編器(如 IDAPro,Interactive Disassembler)
為了 MASM 用戶的方便,有MASM32的項目把程序員所寫的程序庫(library)、程序示例 (sample code) 以及說明文件集合在一起。也有很多網上論壇在支持 MASM。
這些也都是沿習著著名的產品,如Visual Basic、Visual C++、EasyCode的IDE一樣,為 MASM 提供可視化(visual) 的能力。雖然這個產品上了年紀,但它仍然是最受各方支持的彙編器。
雖然有傳言說,微軟不再支持發展彙編器,事實上,微軟是繼續支持發展這個產品。大致來說,支持僅限於添加新的指令集,如出現較新的處理器,以及加強支持 64 比特;往後將不會見到此彙編器被徹底的改頭換面。
微軟宏彙編編譯器
微軟宏彙編編譯器