MASM32快速起步


MASM32是一個免費的軟件程序,讓您編輯Microsoft宏匯編程序(MASM)代碼從一個基本的文本界面。它強調MASM代碼各部分以不同的顏色,使其更容易掃描和檢測錯誤。它提供了一個簡單的布局程序員手動編輯代碼,沒有任何花哨的功能或選項的常規Microsoft宏匯編。注意MASM32編輯器實際上並沒有讓你運行或編譯的代碼。對於這一點,你仍然需要Microsoft宏匯編程序

1,下載並安裝MASM32。

2,MASM32文件夾中打開的editor.exe文件。

 

 

 

3,點擊“瀏覽”。

 

 

 

4,選擇的的MASM代碼文件,你想編輯,然后單擊“打開”。“這將顯示你的代碼,自動突出顯示根據MASM32計划(命令一個顏色,文本另一種顏色,等等)。

 

5,進行更改,然后單擊“保存”。

 

 

 

 

   這幾天讀了CSDN上人氣相當旺的《 瘋狂的程序員》,有感於匯編語言入門之難,特寫此文,以飱眾多熱心的網友,以邀更多的有心人共同探索充滿神秘光環的匯編編程。
 
 
 
 
1.1  安裝MASM32
 
 
http://www.masm32.com/下載MASM32。指定一個盤符后,其將被安裝至該盤的一個名為“masm32”的路徑中。下文介紹了如何在MASM32自帶的編輯器及VC6 IDE中編寫Hello World的匯編程序。
 
 
 
 
 
1.2   Quick Editor環境
 
 
MASM32自帶一個Quick Editor的編輯器,位於masm32目錄下,名為qeditor.exe。
作為一個IDE,Quick Editor讓我們很方便地在其中進行編輯源碼,連接並運行程序。
 
注意:盡管Quick Editor支持拖放操作,但不推薦這樣做。因為這種作法不能使Quick Editor自動地將當前目錄設為所打開文件所在的目錄,其結果,就是在連接時,提示找不到.obj文件。正確的作法是,先運行Quick Editor,再通過菜單File->Open打開相應的源碼。
 
在Quick Editor修改代碼后,一定要記得先存盤,才編譯及連接。否則,所生成的執行文件還依舊是未保存之前的舊版本。
 
新建一個文件夾HelloWorld,打開Quick Editor,輸入下面的源碼,並將其存至HelloWorld文件夾中,名為“HelloWorld.asm”。

 

復制代碼
 1 ; HelloWorld.asm
 2  
 3 comment * ----------------------------------------------
 4                  The First Assemble Application
 5                 ---------------------------------------------- *
 6  
 7     .386
 8     .model flat, stdcall
 9     option casemap:none
10  
11 include /masm32/include/windows.inc
12  
13 include /masm32/include/user32.inc
14 include /masm32/include/kernel32.inc
15  
16 includelib /masm32/lib/user32.lib
17 includelib /masm32/lib/kernel32.lib
18  
19     .data
20 szCaption   db 'System Information', 0
21 szText      db 'Hello, World!', 0
22  
23     .code
24 start:
25     invoke MessageBox,/     ; 調用函數名
26         NULL,/                      ; 父窗口句柄
27         offset szText,/           ; 文字
28         offset szCaption,/      ; 標題
29         MB_OK                    ; 按鈕類型
30        
31     invoke ExitProcess, NULL
32 end start
復制代碼
代碼中,“/masm32/include/”及“/masm32/lib/”分別限定了Quick Editor所能識別的包含文件及庫文件的路徑。這樣,即使我們沒有在操作系統的環境變量中設置相應的路徑,Quick Editor也能找到這些文件。
 
下面是匯編、連接及運行程序的方法。
Quick Editor的菜單Project->Assemble ASM file,可匯編源碼,並生成HelloWorld.obj文件。Project->Link OBJ File連接obj文件,並生成HelloWorld.exe文件。Project->Assemble & Link則是上面兩步的組合。Project->Console Assemble & Link是在控制台下進行匯編及連接。其結果是,在運行程序時,先打開一個控制台,再由控制台來負責裝載及運行程序。也就是說,控制台是程序運行的平台。如果關閉控制台,則程序也被自動地關閉了。
這里選擇Assemble & Link,生成可執行文件。然后點擊工具欄上的“Run Program”圖標,彈出“Run Program or Help File”窗口,選擇生成的HelloWorld.exe文件,點擊“打開”按鈕,將彈出一個窗口,顯示“Hello, World!”。這就是我們的第一個Win32匯編程序!
 
Visual C++下的一個類似於此的Win32應用,其.exe文件約150KB。而我們這個HelloWorld.exe有多大?2.50KB,是前者的1/60。
 
 
 
1.3  Visual C++環境
 
 
下面,我們不使用Quick Editor,而是使用Visual C++6的IDE來編寫這個匯編程序。
 
在VC6中新建一個Project,類型為Makefile,項目名稱為“VCHelloWolrd”。在接下來的Wizard窗口中,均點擊”Next”或”Finish”按鈕,接受默認設置。
為此項目新增一個VCHelloWorld.asm文件,內容如下:
復制代碼
 1 ; VCHelloWorld.asm
 2  
 3 comment * ---------------------------------------------
 4                 The First Assemble Application
 5                 --------------------------------------------- *
 6  
 7     .386
 8     .model flat, stdcall
 9     option casemap:none
10  
11 include windows.inc
12 include user32.inc
13 include kernel32.inc
14  
15 includelib user32.lib
16 includelib kernel32.lib
17  
18     .data
19 szCaption   db 'System Information', 0
20 szText      db 'Hello World in Visual C++!', 0
21  
22     .code
23 start:
24     invoke MessageBox,/     ; 調用函數名
25         NULL,/              ; 父窗口句柄
26         offset szText,/     ; 文字
27         offset szCaption,/ ; 標題
28         MB_OK               ; 按鈕類型
29        
30     invoke ExitProcess, NULL
31 end start
復制代碼
共有2個地方與上例不同,均已用加粗字體標出。一是include及includelib指令語句沒有了路徑,只留下具體的文件名(下面將在VC中為其指定具體的路徑)。二是szText的內容改為”Hello, World in Visual C++!”。
 
再為此項目新增一個名為“VCHelloWorld.mak”的文件,內容如下:
 
 
復制代碼
 1 OUTDIR=./Debug
 2  
 3 all : VCHelloWorld.exe
 4  
 5 VCHelloWorld.exe : VCHelloWorld.obj
 6     link /nologo /DEBUG /incremental:no /subsystem:windows
 7           /out:$(OUTDIR)/VCHelloWorld.exe $(OUTDIR)/VCHelloWorld.obj
 8  
 9 VCHelloWorld.obj : VCHelloWorld.asm
10     ml /nologo /coff /c /Fo $(OUTDIR)/VCHelloWorld.obj VCHelloWorld.asm
復制代碼
VC的NMAKE調用此文件來生成VCHelloWorld.obj及VCHelloWorld.exe文件。首先定義了名為Debug的輸出路徑。其次,all是一個默認的target名,其依賴於名為VCHelloWorld.obj的target。link任務負責將Debug路徑下的VCHelloWord.obj連接成該路徑下的VCHelloWorld.exe。接下來,定義了VCHelloWorld.exe的target,其依賴於VCHelloWorld.asm文件。下面的ml任務,負責在Debug路徑中生成VCHelloWorld.obj文件。
 
下面在VC中設置所需的頭文件及庫文件所在的路徑。單擊菜單Tools->Options,在彈出的窗口中選擇Directories標簽,在Show directories for的下拉列表框中分別選擇Executable files, Include files及Library files,分別為它們增加F:/MASM32/bin,F:/MASM32/INCLUDE, F:/MASM32/LIB的路徑。這樣,即使代碼中沒有指定具體的路徑,VC也知道如何找到它們。
 
最后,告訴VC,當我們按下Build按鈕(F7)時,將.exe文件存放在何路徑下。單擊菜單Project->Settings, 在彈出的窗口中,選Win32 Debug,選Debug標簽,選General Category,在Executable for debug session的文本框中輸入具體的路徑,如“F:/CodeTest/ASM/VCHelloWorld/Debug/VCHelloWorld.exe”。
 
執行完上面的步驟后,按Build按鈕(F7),再按Execute Program(Ctrl+F5),Hello World in Visual C++!的消息窗口出來了。此時,VCHelloWorld.exe的大小為16.0KB,依舊遠遠小於150KB。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM