【Masm】使用教程
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【Masm】使用教程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            如果你在用匯編語言來開發windows下的程序的話,MASM32是很好的選擇。
 
(Masm32下載地址請用google搜索罷。)
 
工欲善其事,必先利其器。
 
本文主要針對masm32?v8來說明三點:
 
1 、基本使用方法
如何在MASM32中建立、匯編、鏈接源程序文件和運行生成的可執行文件。
 
2 、如何開啟MASM32的在線幫助功能
 
3 、漢化QEDITOR菜單
 
一、基本使用方法
以在C: \PWIN951\TEMP文件夾下建立TEST.ASM和生成TEST.EXE為例.
 
安裝好MASM32后,打開“資源管理器”或“我的電腦”,進入MASM32所在文件夾( 假設為C: \MASM32),雙擊QEDITOR.EXE
的圖標,這就進入了MASM32的集成開發環境。
 
1 .[這一步是可選的,以下可選的步驟均簡稱為“可選”]?輸入資源文件,?然后使用菜單欄上的菜單File?->?Save?或?快捷工具欄中的代表存盤功能的磁盤狀圖標,第一次需要輸入文件名,注意要指定擴展名?.RC并存盤,注意如果是在集成環境中編譯此資源文件,文件名必須是RSRC.RC(大小寫均可)。
 
2 .[可選]?編譯資源文件。使用菜單欄上的菜單Project?->?Compile?Resource?File。這時系統會打開一個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。這時系統會打開一個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。這時系統會打開一個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
 
其中包括新生成的可執行文件TEST.EXE的有關信息.
 
 
注:沒有找到資源文件不屬于錯誤,因此如果你的程序使用了窗口,匯編和鏈接均順利完成,但運行時卻看不到程序窗口,很可是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
 
⒍?運行生成的可執行文件.使用菜單欄上的菜單Project?->?Run?program。
 
看到程序運行的結果了嗎?
 
如果你的程序使用了窗口,但運行時看不到窗口,很可能是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
 
總之,要注意的是,對源程序文件或資源文件修改后一定要先存盤,然后再進行后繼操作,否則錯誤依舊。
 
Project菜單中其它菜單項的功能和用法:
 
Assemble?&?Link?匯編源程序并鏈接,適用于資源文件未修改,但修改了源程序的情況
Build?All?編譯資源文件,匯編源程序并鏈接,適用于資源文件和源程序均修改的情況
 
 
Console?Link?OBJ?File?匯編控制臺型源程序
&Console?Assemble?Link?匯編并鏈接控制臺型源程序
Console?Build?All?生成控制臺可執行程序?
 
 
二、開啟MASM32的在線幫助功能
在用MASM32編寫程序時,大量使用了WINDOWS?API函數,眾多的函數不同的參數我們很難記住,只能現用現查。
 
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函數名,如MessageBox上,按下功能鍵?F1,?幫助信息出來了吧!?
 
 
注意:修改設置后要重新啟動QEDITOR,新的設置才起作用。
 
 
三、漢化QEDITOR菜單
 
QEDITOR的菜單內容保存在文件QEDITOR.INI中,將其中的菜單項文本改為中文,就完成漢化了(當然你要使用中文版的WINDOWS)。
 
由于QEDITOR.INI是非常重要的文件,所以修改前一定要備份,修改時也要小心。下面是我將其中對應Project菜單的菜單項文本的漢化后的內容。
 
 
; ?--------------------------------------------------------
; ?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
0
1
1
4
2
2
76
80
70
*
*
*
*
\pwin951\help\win32.hlp
0
[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?{b}
&A?匯編源程序文件,\MASM32\BIN\Assmbl.bat?{b}
-
&L?鏈接目標文件,\MASM32\BIN\Lnk.bat?{b}
匯編源程序并鏈接目標文件,\MASM32\BIN\Build.bat?{b}
&B?編譯資源文件、匯編源程序并鏈接目標文件,\MASM32\BIN\Bldall.bat?{b}
運行?&Makeit.bat?生成可執行文件,makeit.bat
-
&O?鏈接控制臺目標文件,\MASM32\BIN\Lnkc.bat?{b}
&C?匯編和鏈接控制臺文件,\MASM32\BIN\Buildc.bat?{b}
&A?一步生成控制臺可執行文件,\MASM32\BIN\Bldallc.bat?{b}
-
&R?運行程序,{b}.exe
 
[&Tools]
                        
                        
                        (Masm32下載地址請用google搜索罷。)
工欲善其事,必先利其器。
本文主要針對masm32?v8來說明三點:
1 、基本使用方法
如何在MASM32中建立、匯編、鏈接源程序文件和運行生成的可執行文件。
2 、如何開啟MASM32的在線幫助功能
3 、漢化QEDITOR菜單
一、基本使用方法
以在C: \PWIN951\TEMP文件夾下建立TEST.ASM和生成TEST.EXE為例.
安裝好MASM32后,打開“資源管理器”或“我的電腦”,進入MASM32所在文件夾( 假設為C: \MASM32),雙擊QEDITOR.EXE
的圖標,這就進入了MASM32的集成開發環境。
1 .[這一步是可選的,以下可選的步驟均簡稱為“可選”]?輸入資源文件,?然后使用菜單欄上的菜單File?->?Save?或?快捷工具欄中的代表存盤功能的磁盤狀圖標,第一次需要輸入文件名,注意要指定擴展名?.RC并存盤,注意如果是在集成環境中編譯此資源文件,文件名必須是RSRC.RC(大小寫均可)。
2 .[可選]?編譯資源文件。使用菜單欄上的菜單Project?->?Compile?Resource?File。這時系統會打開一個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。這時系統會打開一個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。這時系統會打開一個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
其中包括新生成的可執行文件TEST.EXE的有關信息.
注:沒有找到資源文件不屬于錯誤,因此如果你的程序使用了窗口,匯編和鏈接均順利完成,但運行時卻看不到程序窗口,很可是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
⒍?運行生成的可執行文件.使用菜單欄上的菜單Project?->?Run?program。
看到程序運行的結果了嗎?
如果你的程序使用了窗口,但運行時看不到窗口,很可能是你將窗口信息放在資源文件中,但資源文件尚未編譯或編譯沒有成功。
總之,要注意的是,對源程序文件或資源文件修改后一定要先存盤,然后再進行后繼操作,否則錯誤依舊。
Project菜單中其它菜單項的功能和用法:
Assemble?&?Link?匯編源程序并鏈接,適用于資源文件未修改,但修改了源程序的情況
Build?All?編譯資源文件,匯編源程序并鏈接,適用于資源文件和源程序均修改的情況
Console?Link?OBJ?File?匯編控制臺型源程序
&Console?Assemble?Link?匯編并鏈接控制臺型源程序
Console?Build?All?生成控制臺可執行程序?
二、開啟MASM32的在線幫助功能
在用MASM32編寫程序時,大量使用了WINDOWS?API函數,眾多的函數不同的參數我們很難記住,只能現用現查。
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函數名,如MessageBox上,按下功能鍵?F1,?幫助信息出來了吧!?
注意:修改設置后要重新啟動QEDITOR,新的設置才起作用。
三、漢化QEDITOR菜單
QEDITOR的菜單內容保存在文件QEDITOR.INI中,將其中的菜單項文本改為中文,就完成漢化了(當然你要使用中文版的WINDOWS)。
由于QEDITOR.INI是非常重要的文件,所以修改前一定要備份,修改時也要小心。下面是我將其中對應Project菜單的菜單項文本的漢化后的內容。
; ?--------------------------------------------------------
; ?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
0
1
1
4
2
2
76
80
70
*
*
*
*
\pwin951\help\win32.hlp
0
[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?{b}
&A?匯編源程序文件,\MASM32\BIN\Assmbl.bat?{b}
-
&L?鏈接目標文件,\MASM32\BIN\Lnk.bat?{b}
匯編源程序并鏈接目標文件,\MASM32\BIN\Build.bat?{b}
&B?編譯資源文件、匯編源程序并鏈接目標文件,\MASM32\BIN\Bldall.bat?{b}
運行?&Makeit.bat?生成可執行文件,makeit.bat
-
&O?鏈接控制臺目標文件,\MASM32\BIN\Lnkc.bat?{b}
&C?匯編和鏈接控制臺文件,\MASM32\BIN\Buildc.bat?{b}
&A?一步生成控制臺可執行文件,\MASM32\BIN\Bldallc.bat?{b}
-
&R?運行程序,{b}.exe
[&Tools]
總結
以上是生活随笔為你收集整理的【Masm】使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 招聘PHP聚合系统,Thinkphp5开
- 下一篇: Python爬虫入门五URLError异
