軟件:
Windows7-32bit
visual c++6.0
Masm32 sdk 11
安裝:
0x00 || 下載Masm sdk 11並安裝,下載路徑:http://www.masm32.com/
0x01 || 安裝visual c++,自行百度,最好是英文版
配置:
0x02 || 將E:\Visual C++ 6.0\VC6\VC98\Bin目錄下的NMAKE.exe拷貝放到E:\masm32\目錄下,我們后面要用到這個
0x03 || 添加var.bat文件到E:\masm32\目錄,因為我們以后會用visual c++來建立一些資源文件,所以include里面的內容還包括VC安裝路徑include和MFC\include
1 @echo off 2 rem 請根據 Masm32 軟件包的安裝目錄修改下面的 Masm32Dir 環境變量! 3 set include=E:\masm32\Include;E:\Visual C++ 6.0\VC6\VC98\Include;E:\Visual C++ 6.0\VC6\VC98\MFC\Include
4 set lib=E:\masm32\lib 5 set path=E:\masm32\Bin;%path%
6 echo on
實踐:
0x04 || 按shift,鼠標右鍵打開cmd,切換到E:\masm32\目錄下,運行var.bat文件,如下圖
0x05 || 在該目錄下新建一個工程目錄source,以后可以在里面寫一些win32項目
0x06 || 切換到source,新建一個Test文件夾,這樣就可以寫我們的win32代碼,win32項目各文件如下
0x07 || 在cmd中執行nmake命令
0x08 || 第一個由匯編代碼寫的程序完成,雙擊Test.exe,彈出一個消息框
代碼:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Sample code for < Win32ASM Programming 3rd Edition> ; by 羅雲彬, http://www.win32asm.com.cn ; Change by 大老黑, http://geekfz.cn ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Test.asm ; 編程環境測試代碼 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 使用 nmake 或下列命令進行編譯和鏈接: ; ml /c /coff Test.asm ; rc Test.rc ; Link /subsystem:windows Test.obj Test.res ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .386 .model flat,stdcall option casemap:none ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Include 文件定義 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 數據段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .const szCaption db '極客改變世界', 0 szText db '來吧,和極客方舟一起成長',0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 代碼段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .code start: invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK invoke ExitProcess,NULL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end start

EXE = Test.exe #指定輸出文件 OBJS = Test.obj #需要的目標文件 RES = geek.res #需要的資源文件 LINK_FLAG = /subsystem:windows #連接選項 ML_FLAG = /c /coff #編譯選項 $(EXE): $(OBJS) $(RES) Link $(LINK_FLAG) $(OBJS) $(RES) .asm.obj: ml $(ML_FLAG) $< .rc.res: rc $< clean: del *.obj del *.res
總結:
0x09 || 這個程序雖小但卻五官俱全,包括源代碼.asm、資源文件.res、以及我們看不到的一些.lib
0x0A || 小技巧:制作資源文件時候可以導入圖標后直接保存為.RES文件,這樣nmake命令就不用再去調用.rc文件生成資源文件
0x0B || nmake和Makefile用法及格式可以參考以下書籍
參考書籍:Windows環境下32位匯編語言程序設計(典藏版).pdf
(百度雲盤:https://pan.baidu.com/s/1ZAgw0Wpn2quL4bC-YKhSZg uh97)