MASM是Microsoft公司推出的匯編編譯器。它的版本從低到高經過了很多次的升級(微軟的通病,升級補丁多如牛毛)。每次升級除了例行的錯誤修正外都增加了壹些新的功能,以至於到最後高版本和低版本的語法和功能相差很多,向下兼容性也不好。低版本的MASM固然無法編譯高版本的源程序,但高版本的MASM也可能無法正常編譯低版本的源程序,如MASM 4.0寫的源程序常常無法在MASM 6.x上編譯成功。在使用MASM系列編譯器時,如果不先搞清楚特定的語法和編譯選項可以在哪個版本上用,編譯中就會錯誤連篇。所以在這裏有必要了解壹下MASM各版本的演變過程
下表列出了不同版本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,可讀性和可維護性提高了很多
MASM6.00A
未發售的版本
MASM 6.00B
最後壹個支持OS/2的MASM版本,修正了上壹版本中的壹些錯誤
MASM 6.10
修正了壹些錯誤,同時增加了/Sc選項,可以在產生的list文件中列出每條指令使用的時鐘周期數
MASM6.10A
1992年發布,修正了壹些內存管理方面的問題
MASM 6.11
1993年11月發布,支持Windows NT,可以編寫Win32程序,同時支持Pentium指令,但不支持MMX指令集
MASM6.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