MASM32 SDK 這個(gè)資源包里附帶的很多例子工具代碼,都是無價(jià)之寶,能完全吃透這個(gè)包,你差不多天下無敵了,很多玩MASM的人都用這個(gè)包,可這個(gè)包里的很多東東,有多少人看過一邊。
MASM32并非是指Microsoft的MASM宏匯編器。MASM32 是一個(gè)為那些對(duì)學(xué)習(xí)或者編寫 32 位微軟匯編( MASM )感興趣 的程序員提供的工作環(huán)境,MASM32是一個(gè)由個(gè)人開發(fā)的包含了不同版本工具組建的匯編開發(fā)工具包。它的匯編編譯器是MASM6.0以上版本中的Ml.exe,資源編譯器是Microsoft Visual Studio中的Rc.exe,32位鏈接器是Microsoft Visual Studio中的Link.exe,同時(shí)包含有其他的一些如Lib.exe和DumpPe.exe等工具。該工具是由Steve Hutchesson開發(fā)的。MASM32是國外的MASM愛好者自行整理和編寫的一個(gè)軟件包,目前最高版本為11.0版,MASM32并不是微軟官方發(fā)布的軟件,微軟官方發(fā)布的軟件最新版本也只到6.15版,微軟發(fā)布的MASM系列版本從6.11版才開始支持windows編程,6.11版以前的版本都不支持windows編程,只能用來寫DOS程序。
MASM32使用教程:
代碼
如果你在用匯編語言來開發(fā)windows下的程序的話,MASM32是很好的選擇。
(Masm32下載地址請(qǐng)用google搜索罷。)
工欲善其事,必先利其器。
本文主要針對(duì)masm32 v8來說明三點(diǎn):
1、基本使用方法
如何在MASM32中建立、匯編、鏈接源程序文件和運(yùn)行生成的可執(zhí)行文件。
2、如何開啟MASM32的在線幫助功能
3、漢化QEDITOR菜單
一、基本使用方法
以在C:\PWIN951\TEMP文件夾下建立TEST.ASM和生成TEST.EXE為例.
安裝好MASM32后,打開“資源管理器”或“我的電腦”,進(jìn)入MASM32所在文件夾(假設(shè)為C:\MASM32),雙擊QEDITOR.EXE
的圖標(biāo),這就進(jìn)入了MASM32的集成開發(fā)環(huán)境。
1. [這一步是可選的,以下可選的步驟均簡稱為“可選”] 輸入資源文件, 然后使用菜單欄上的菜單File -> Save 或 快捷工具欄中的代表 存盤功能的磁盤狀圖標(biāo),第一次需要輸入文件名,注意要指定擴(kuò)展名 .RC并存盤,注意如果是在集成環(huán)境中編譯此資源文件,文件名必須是RSRC.RC(大 小寫均可)。
2.[可選] 編譯資源文件。使用菜單欄上的菜單Project -> Compile Resource File。這時(shí)系統(tǒng)會(huì)打開一個(gè)DOS窗口運(yùn)行相關(guān)的批處理文件,并報(bào)告結(jié)果。
若不編譯成功,信息為(具體錯(cuò)誤信息因錯(cuò)誤而異):
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 . . .
其中給出了出錯(cuò)語句的行號(hào),錯(cuò)誤類型代碼及錯(cuò)誤信息。
按任一鍵結(jié)束,再關(guān)閉此DOS窗口,并按錯(cuò)誤信息修改資源文件,存盤后,重新編譯。
技巧小提示: 在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文件,按任一鍵結(jié)束,再關(guān)閉此DOS窗口。
⒊輸入源程序,然后使用菜單欄上的菜單File -> Save 或 快捷工具欄中的代表存盤功能的磁盤狀圖標(biāo),第一次需要輸入文件名,注意要指定擴(kuò)展名 .ASM[本例中為C:\PWIN951\TEMP\TEST.ASM]。
⒋匯編源程序。使用菜單欄上的菜單Project -> Assemblier ASM file。這時(shí)系統(tǒng)會(huì)打開一個(gè)DOS窗口運(yùn)行相關(guān)的批處理文件。結(jié)束后會(huì)彈出一個(gè)名為“\masm32\bin\asmbl.txt”的窗口報(bào)告結(jié)果。
若匯編不成功,則顯示信息如下(具體錯(cuò)誤信息因錯(cuò)誤而異):
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
其中包括了詳細(xì)出錯(cuò)信息。如
C:\PWIN951\TEMP\test.asm(60) : error A2006: undefined symbol : NULL
中
C:\PWIN951\TEMP\test.asm 為源程序文件的文件說明符
(60) 其中60為源程序中引起錯(cuò)誤的語句的行號(hào)
error A2006 A2006為錯(cuò)誤類型代號(hào)
undefined symbol : NULL 為具體錯(cuò)誤信息
這時(shí)應(yīng)按這些信息修改源程序中相應(yīng)行,存盤后重新匯編。直至窗口顯示如下成功信息:
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
其中包括了新生成的目標(biāo)文件TEST.OBJ的有關(guān)信息。
⒌鏈接目標(biāo)文件。使用菜單欄上的菜單Project -> Link OBJ file。這時(shí)系統(tǒng)會(huì)打開一個(gè)DOS窗口運(yùn)行相關(guān)的批處理文件,并彈出名為“\masm32\bin\lnk.txt”的窗口報(bào)告結(jié)果如下:
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的有關(guān)信息.
注:沒有找到資源文件不屬于錯(cuò)誤,因此如果你的程序使用了窗口,匯編和鏈接均順利完成,但運(yùn)行時(shí)卻看不到程序窗口,很可是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
⒍ 運(yùn)行生成的可執(zhí)行文件.使用菜單欄上的菜單Project -> Run program。
看到程序運(yùn)行的結(jié)果了嗎?
如果你的程序使用了窗口,但運(yùn)行時(shí)看不到窗口,很可能是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
總之,要注意的是,對(duì)源程序文件或資源文件修改后一定要先存盤,然后再進(jìn)行后繼操作,否則錯(cuò)誤依舊。
Project菜單中其它菜單項(xiàng)的功能和用法:
Assemble & Link 匯編源程序并鏈接,適用于資源文件未修改,但修改了源程序的情況
Build All 編譯資源文件,匯編源程序并鏈接,適用于資源文件和源程序均修改的情況
Console Link OBJ File 匯編控制臺(tái)型源程序
&Console Assemble Link 匯編并鏈接控制臺(tái)型源程序
Console Build All 生成控制臺(tái)可執(zhí)行程序
二、開啟MASM32的在線幫助功能
在用MASM32編寫程序時(shí),大量使用了WINDOWS API函數(shù),眾多的函數(shù)不同的參數(shù)我們很難記住,只能現(xiàn)用現(xiàn)查。
MASM32提供了在線幫助功能,但必須進(jìn)行相應(yīng)設(shè)置,才能“招之即來”。
在QEDITOR中按功能鍵 F1 ,彈出對(duì)話框,幫助文件?.Hlp沒找到?怎么辦?跟我做:
選 擇菜單TOOLS -> Change Editor settings,彈出名為“Change Quick Editor settings” 的窗口,從Double Click Item to Edit下的列表框中找到“F1 Help File = ?.hlp”項(xiàng),剛才我們看到 的?.hlp就在其中,原來MASM32不知我們的幫助文件放在何處,所以只能由我們用戶自己來指定位置。
雙擊這一項(xiàng),彈出一個(gè)對(duì)話框,直接輸入我們所用的幫助文件的文件說明符,[如我的是“C:\PWIN951\HELP\WIN32.HLP”,是DLEPHI附帶的。],或則單擊"Browse..."按鈕從選擇文件對(duì)話框中選擇。做完后單擊"Save"按鈕,然后關(guān)閉此窗口。
重新啟動(dòng)QEDITOR,將光標(biāo)定位在一個(gè)API函數(shù)名,如MessageBox上,按下功能鍵 F1, 幫助信息出來了吧!
注意:修改設(shè)置后要重新啟動(dòng)QEDITOR,新的設(shè)置才起作用。
三、漢化QEDITOR菜單
QEDITOR的菜單內(nèi)容保存在文件QEDITOR.INI中,將其中的菜單項(xiàng)文本改為中文,就完成漢化了(當(dāng)然你要使用中文版的WINDOWS)。
由于QEDITOR.INI是非常重要的文件,所以修改前一定要備份,修改時(shí)也要小心。下面是我將其中對(duì)應(yīng)Project菜單的菜單項(xiàng)文本的漢化后的內(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 鏈接目標(biāo)文件,\MASM32\BIN\Lnk.bat
匯編源程序并鏈接目標(biāo)文件,\MASM32\BIN\Build.bat
&B 編譯資源文件、匯編源程序并鏈接目標(biāo)文件,\MASM32\BIN\Bldall.bat
運(yùn)行 &Makeit.bat 生成可執(zhí)行文件,makeit.bat
-
&O 鏈接控制臺(tái)目標(biāo)文件,\MASM32\BIN\Lnkc.bat
&C 匯編和鏈接控制臺(tái)文件,\MASM32\BIN\Buildc.bat
&A 一步生成控制臺(tái)可執(zhí)行文件,\MASM32\BIN\Bldallc.bat
-
&R 運(yùn)行程序,.exe
[&Tools]