MASM32 SDK 這個資源包里附帶的很多例子工具代碼,都是無價之寶,能完全吃透這個包,你差不多天下無敵了,很多玩MASM的人都用這個包,可這個包里的很多東東,有多少人看過一邊。
MASM32并非是指Microsoft的MASM宏匯編器。MASM32 是一個為那些對學習或者編寫 32 位微軟匯編( MASM )感興趣 的程序員提供的工作環(huán)境,MASM32是一個由個人開發(fā)的包含了不同版本工具組建的匯編開發(fā)工具包。它的匯編編譯器是MASM6.0以上版本中的Ml.exe,資源編譯器是Microsoft Visual Studio中的Rc.exe,32位鏈接器是Microsoft Visual Studio中的Link.exe,同時包含有其他的一些如Lib.exe和DumpPe.exe等工具。該工具是由Steve Hutchesson開發(fā)的。MASM32是國外的MASM愛好者自行整理和編寫的一個軟件包,目前最高版本為11.0版,MASM32并不是微軟官方發(fā)布的軟件,微軟官方發(fā)布的軟件最新版本也只到6.15版,微軟發(fā)布的MASM系列版本從6.11版才開始支持windows編程,6.11版以前的版本都不支持windows編程,只能用來寫DOS程序。
MASM32使用教程:
代碼
如果你在用匯編語言來開發(fā)windows下的程序的話,MASM32是很好的選擇。
(Masm32下載地址請用google搜索罷。)
工欲善其事,必先利其器。
本文主要針對masm32 v8來說明三點:
1、基本使用方法
如何在MASM32中建立、匯編、鏈接源程序文件和運行生成的可執(zhí)行文件。
2、如何開啟MASM32的在線幫助功能
3、漢化QEDITOR菜單
一、基本使用方法
以在C:\PWIN951\TEMP文件夾下建立TEST.ASM和生成TEST.EXE為例.
安裝好MASM32后,打開“資源管理器”或“我的電腦”,進入MASM32所在文件夾(假設為C:\MASM32),雙擊QEDITOR.EXE
的圖標,這就進入了MASM32的集成開發(fā)環(huán)境。
1. [這一步是可選的,以下可選的步驟均簡稱為“可選”] 輸入資源文件, 然后使用菜單欄上的菜單File -> Save 或 快捷工具欄中的代表 存盤功能的磁盤狀圖標,第一次需要輸入文件名,注意要指定擴展名 .RC并存盤,注意如果是在集成環(huán)境中編譯此資源文件,文件名必須是RSRC.RC(大 小寫均可)。
2.[可選] 編譯資源文件。使用菜單欄上的菜單Project -> Compile Resource File。這時系統(tǒng)會打開一個DOS窗口運行相關的批處理文件,并報告結果。
若不編譯成功,信息為(具體錯誤信息因錯誤而異):
Microsoft (R) Windows (R) Resource Compiler, Version 5.00.1823.1 - Build 1823
Copyright (C) Microsoft Corp. 1985-1998. All rights reserved.
Using codepage 936 as default
Creating rsrc.RES
RC: RCPP -CP 936 -f C:\PWIN951\TEMP\RCa83947 -g C:\PWIN951\TEMP\RDa83947 -DRC_IN VOKED -D_WIN32 -pc\:/ -E -I. -I .
rsrc.rc.
rsrc.rc (1): error RC2135 : file not found: MAINICON.ICO.
Writing MENU:600, lang:0x409, size 128
Microsoft (R) Windows Resource To Object Converter Version 5.00.1736.1
Copyright (C) Microsoft Corp. 1992-1997. All rights reserved.
CVTRES : fatal error CVT1101: cannot open rsrc.res for reading
Press any key to continue . . .
其中給出了出錯語句的行號,錯誤類型代碼及錯誤信息。
按任一鍵結束,再關閉此DOS窗口,并按錯誤信息修改資源文件,存盤后,重新編譯。
技巧小提示: 在qeditor.exe中,按Ctlr+G可跳到指定的行
直到顯示如下成功信息:
Microsoft (R) Windows (R) Resource Compiler, Version 5.00.1823.1 - Build 1823
Copyright (C) Microsoft Corp. 1985-1998. All rights reserved.
Using codepage 936 as default
Creating rsrc.RES
RC: RCPP -CP 936 -f C:\PWIN951\TEMP\RCa81843 -g C:\PWIN951\TEMP\RDa81843 -DRC_IN
VOKED -D_WIN32 -pc\:/ -E -I. -I .
rsrc.rc.
Writing MENU:600, lang:0x409, size 128
Microsoft (R) Windows Resource To Object Converter Version 5.00.1736.1
Copyright (C) Microsoft Corp. 1992-1997. All rights reserved.
Press any key to continue . . .
說明生成了rsrc.RES和rsrc.obj文件,按任一鍵結束,再關閉此DOS窗口。
⒊輸入源程序,然后使用菜單欄上的菜單File -> Save 或 快捷工具欄中的代表存盤功能的磁盤狀圖標,第一次需要輸入文件名,注意要指定擴展名 .ASM[本例中為C:\PWIN951\TEMP\TEST.ASM]。
⒋匯編源程序。使用菜單欄上的菜單Project -> Assemblier ASM file。這時系統(tǒng)會打開一個DOS窗口運行相關的批處理文件。結束后會彈出一個名為“\masm32\bin\asmbl.txt”的窗口報告結果。
若匯編不成功,則顯示信息如下(具體錯誤信息因錯誤而異):
Assembling: C:\PWIN951\TEMP\test.asm
C:\PWIN951\TEMP\test.asm(60) : error A2006: undefined symbol : NULL
C:\PWIN951\TEMP\test.asm(60) : error A2114: INVOKE argument type mismatch : argument : 1
Volume in drive C is LIU
Volume Serial Number is 4061-17D7
Directory of C:\PWIN951\TEMP
TEST ASM 8,402 06-05-02 19:29 test.asm
1 file(s) 13,010 bytes
0 dir(s) 24,403,968 bytes free
其中包括了詳細出錯信息。如
C:\PWIN951\TEMP\test.asm(60) : error A2006: undefined symbol : NULL
中
C:\PWIN951\TEMP\test.asm 為源程序文件的文件說明符
(60) 其中60為源程序中引起錯誤的語句的行號
error A2006 A2006為錯誤類型代號
undefined symbol : NULL 為具體錯誤信息
這時應按這些信息修改源程序中相應行,存盤后重新匯編。直至窗口顯示如下成功信息:
Assembling: C:\PWIN951\TEMP\test.asm
Volume in drive C is LIU
Volume Serial Number is 4061-17D7
Directory of C:\PWIN951\TEMP
TEST ASM 8,401 06-05-02 19:34 test.asm
TEST OBJ 3,720 06-05-02 19:35 test.obj
2 file(s) 16,729 bytes
0 dir(s) 22,298,624 bytes free
其中包括了新生成的目標文件TEST.OBJ的有關信息。
⒌鏈接目標文件。使用菜單欄上的菜單Project -> Link OBJ file。這時系統(tǒng)會打開一個DOS窗口運行相關的批處理文件,并彈出名為“\masm32\bin\lnk.txt”的窗口報告結果如下:
Volume in drive C is LIU
Volume Serial Number is 4061-17D7
Directory of C:\PWIN951\TEMP
TEST ASM 8,401 06-05-02 19:34 test.asm
TEST OBJ 3,720 06-05-02 19:35 test.obj
TEST EXE 4,608 06-05-02 19:38 test.exe
3 file(s) 16,729 bytes
0 dir(s) 24,395,776 bytes free
其中包括新生成的可執(zhí)行文件TEST.EXE的有關信息.
注:沒有找到資源文件不屬于錯誤,因此如果你的程序使用了窗口,匯編和鏈接均順利完成,但運行時卻看不到程序窗口,很可是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
⒍ 運行生成的可執(zhí)行文件.使用菜單欄上的菜單Project -> Run program。
看到程序運行的結果了嗎?
如果你的程序使用了窗口,但運行時看不到窗口,很可能是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
總之,要注意的是,對源程序文件或資源文件修改后一定要先存盤,然后再進行后繼操作,否則錯誤依舊。
Project菜單中其它菜單項的功能和用法:
Assemble & Link 匯編源程序并鏈接,適用于資源文件未修改,但修改了源程序的情況
Build All 編譯資源文件,匯編源程序并鏈接,適用于資源文件和源程序均修改的情況
Console Link OBJ File 匯編控制臺型源程序
&Console Assemble Link 匯編并鏈接控制臺型源程序
Console Build All 生成控制臺可執(zhí)行程序
二、開啟MASM32的在線幫助功能
在用MASM32編寫程序時,大量使用了WINDOWS API函數(shù),眾多的函數(shù)不同的參數(shù)我們很難記住,只能現(xiàn)用現(xiàn)查。
MASM32提供了在線幫助功能,但必須進行相應設置,才能“招之即來”。
在QEDITOR中按功能鍵 F1 ,彈出對話框,幫助文件?.Hlp沒找到?怎么辦?跟我做:
選 擇菜單TOOLS -> Change Editor settings,彈出名為“Change Quick Editor settings” 的窗口,從Double Click Item to Edit下的列表框中找到“F1 Help File = ?.hlp”項,剛才我們看到 的?.hlp就在其中,原來MASM32不知我們的幫助文件放在何處,所以只能由我們用戶自己來指定位置。
雙擊這一項,彈出一個對話框,直接輸入我們所用的幫助文件的文件說明符,[如我的是“C:\PWIN951\HELP\WIN32.HLP”,是DLEPHI附帶的。],或則單擊"Browse..."按鈕從選擇文件對話框中選擇。做完后單擊"Save"按鈕,然后關閉此窗口。
重新啟動QEDITOR,將光標定位在一個API函數(shù)名,如MessageBox上,按下功能鍵 F1, 幫助信息出來了吧!
注意:修改設置后要重新啟動QEDITOR,新的設置才起作用。
三、漢化QEDITOR菜單
QEDITOR的菜單內(nèi)容保存在文件QEDITOR.INI中,將其中的菜單項文本改為中文,就完成漢化了(當然你要使用中文版的WINDOWS)。
由于QEDITOR.INI是非常重要的文件,所以修改前一定要備份,修改時也要小心。下面是我將其中對應Project菜單的菜單項文本的漢化后的內(nèi)容。
; --------------------------------------------------------
; Do not edit this file manually, the sequence of settings
; must be in the correct order and it must have the correct
; number of settings otherwise the editor may not function
; properly.
; --------------------------------------------------------
[editor settings]
MASM32 Version 6
command.com
\pwin951\help\win32.hlp
[menu settings]
;------------------------------------------------------------
; File paths should have the drive added so that the relative
; paths become absolute paths. This allows the tools to be
; accessed from different drives on the computer.
; -----------------------------------------------------------
[&R工程]
&R 編譯資源文件,\MASM32\BIN\Bres.bat
&A 匯編源程序文件,\MASM32\BIN\Assmbl.bat
-
&L 鏈接目標文件,\MASM32\BIN\Lnk.bat
匯編源程序并鏈接目標文件,\MASM32\BIN\Build.bat
&B 編譯資源文件、匯編源程序并鏈接目標文件,\MASM32\BIN\Bldall.bat
運行 &Makeit.bat 生成可執(zhí)行文件,makeit.bat
-
&O 鏈接控制臺目標文件,\MASM32\BIN\Lnkc.bat
&C 匯編和鏈接控制臺文件,\MASM32\BIN\Buildc.bat
&A 一步生成控制臺可執(zhí)行文件,\MASM32\BIN\Bldallc.bat
-
&R 運行程序,.exe
[&Tools]