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的代碼。

最新版本:12

位於Visual C++ 2013中

在這些新版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 比特;往後將不會見到此彙編器被徹底的改頭換面。

微軟宏彙編編譯器微軟宏彙編編譯器

相關搜尋

熱門詞條

聯絡我們