图解命令行手动编译构建一个win32汇编程序
首先安裝masm32 V11.0;安裝完后出現(xiàn)下列對(duì)話框;
圖沒截好;下面圖的 k. 是 link. ;ktopPath是DesktopPath;
此段代碼的含義是用WScript創(chuàng)建了一個(gè)快捷方式,指向剛安裝的masm32的編輯器;快捷方式位于桌面;
?
下面來手動(dòng)編譯一個(gè)win32 匯編程序;
先建立環(huán)境變量如下;
新建;
新建;
還有個(gè)lib變量也是新建;忘了截圖;見后面代碼;
Path中添加如下內(nèi)容;
?
未構(gòu)建之前,有四個(gè)文件;一個(gè)圖標(biāo),一個(gè)makefile,一個(gè)asm文件,一個(gè)rc文件;
手動(dòng)命令行構(gòu)建不需要makefile;
?
首先打下圖命令編譯;編譯之后看到obj出來了;
?
打下圖命令編譯資源;成功后看到rc編譯后的res文件出來了;
?
再打下圖命令;鏈接;成功后看到exe出來了;這就是手動(dòng)編譯構(gòu)建的全過程;
?
上述相關(guān)代碼來自羅云琳書中代碼;
var.bat;
?
@echo off rem 請(qǐng)根據(jù) Masm32 軟件包的安裝目錄修改下面的 Masm32Dir 環(huán)境變量! set Masm32Dir=C:\Masm32 set include=%Masm32Dir%\Include;%include% set lib=%Masm32Dir%\lib;%lib% set path=%Masm32Dir%\Bin;%Masm32Dir%;%PATH% set Masm32Dir= echo on
Test.asm
?
?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Sample code for < Win32ASM Programming > ; by 羅云彬, http://asm.yeah.net ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Test.asm ; 編程環(huán)境測(cè)試代碼 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 使用 nmake 或下列命令進(jìn)行編譯和鏈接: ; ml /c /coff Test.asm ; rc Test.rc ; Link /subsystem:windows Test.obj Test.res ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.386.model flat,stdcalloption casemap:none ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Include 文件定義 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> include windows.inc includeINCLUDE2.inc includelINCLUDE32.lib include kernel32.inc includINCLUDErnel32.lib ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 數(shù)據(jù)段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.dataszCaption db '恭喜',0 szText db '當(dāng)您看到這個(gè)信息的DB,您已經(jīng)可以編譯Win32匯編程序了!DB0;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 代碼段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.code start:invoke MessageBox,NULL,offset szText,offset szCaption,MB_OKinvoke ExitProcess,NUOFFSET>>>>>>>>OFFSET>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end start END
Test.rc
?
1?? ??? ?icon?? ?"Main.ico"
?
Makefile
?
EXE = Test.exe #指定輸出文件 OBJS = Test.obj #需要的目標(biāo)文件 RES = Test.res #需要的資源文件LINK_FLAG = /subsystem:windows #連接選項(xiàng) ML_FLAG = /c /coff #編譯選項(xiàng)$(EXE): $(OBJS) $(RES)Link $(LINK_FLAG) $(OBJS) $(RES).asm.obj:ml $(ML_FLAG) $< .rc.res:rc $<clean:del *.objdel *.res
看下Makefile,makefile執(zhí)行完后,會(huì)刪除obj和res文件;而前面手動(dòng)構(gòu)建的情況,這兩個(gè)文件還在;
?
?
總結(jié)
以上是生活随笔為你收集整理的图解命令行手动编译构建一个win32汇编程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软Entity Framework安装
- 下一篇: 图解SQL子查询实例