首先要整的無疑就是學(xué)習(xí)的開發(fā)環(huán)境了。masm32這個(gè)東西,比較輕量級(jí),有庫(kù),有匯編器,有連接器,外加一個(gè)記事本,基本上就能寫代碼編譯成exe了。書上沒指定固定的開發(fā)環(huán)境和編輯器,編譯匯編代碼的編譯模式都是用的make文件,然后用VS的nmake進(jìn)行編譯。先說編輯器,編輯器,記事本就行了,不過系統(tǒng)自帶的記事本比較簡(jiǎn)陋,所以就選擇了Notepad++來作為代碼編輯的工具,選他最主要的就是功能足夠(支持多語(yǔ)法高亮,支持各種插件)。代碼寫好了,要編譯生成可執(zhí)行文件。這個(gè)可以用寫批處理或者自己在命令行下根據(jù)ml,link等命令來生成對(duì)應(yīng)的文件。這里就有我選擇notepad++的一個(gè)最主要的原因了,因?yàn)镹otePad++有一個(gè)插件叫做NppExec,使用這個(gè)插件寫上相關(guān)的腳本,就可以設(shè)置快捷鍵,然后用快捷鍵自動(dòng)來編譯生成需要的東西了,相當(dāng)方便。先來按照書上的說,制作make文件,然后用nmake的方式來生成我們需要的可執(zhí)行文件,且讓我們看看這個(gè)設(shè)置的腳本 cd $(CURRENT_DIRECTORY)
首先進(jìn)入當(dāng)前代碼文件所在的目錄,然后設(shè)置匯編器和連接器以及nmake.exe的exe目錄,我這里是D:\Develop_Tools\Masm32\bin 然后調(diào)用nmake make.mak就可以通過make.mak來生成一個(gè)exe文件了,至于make文件大致是 EXE=hello.exe objs=hello.obj ML_FLAG=/c /coff /I D:\Develop_Tools\Masm32\include Link_FLAG=/LIBPATH:D:\Develop_Tools\Masm32\lib /subsystem:windows hello.exe: hello.obj link $(Link_FLAG) $(objs) .asm.obj: ml $(ML_FLAG) $< clean: del *.obj 使用這種方式,自然是最好的,不過由于俺是學(xué)習(xí),每寫一個(gè)代碼文件就要寫一個(gè)make文件,如此一來到顯得十分麻煩,所以為了方便,就不必每個(gè)文件都搞一個(gè)make文件了。而是直接通過腳本命令來調(diào)用一批命令來直接生成我們需要的文件就可 比如,要將本代碼文件生成一個(gè)exe文件,編輯腳本命令為 cd $(CURRENT_DIRECTORY) ENV_SET PATH = D:\Develop_Tools\Masm32\bin; D:\Develop_Tools\Masm32\include; D:\Develop_Tools\Masm32\lib ml /c /coff /I D:\Develop_Tools\Masm32\include $(NAME_PART).asm link /LIBPATH:D:\Develop_Tools\Masm32\lib /subsystem:windows $(NAME_PART).obj /out:$(NAME_PART).exe NPP_RUN $(NAME_PART).exe 至于ml,link等命令的參數(shù),請(qǐng)參考相應(yīng)的參數(shù)選項(xiàng) 這個(gè)編譯生成了對(duì)應(yīng)的exe之后,最后會(huì)調(diào)用這個(gè)生成的exe程序 將文件編譯成lib庫(kù)的腳本 cd $(CURRENT_DIRECTORY) ENV_SET PATH = D:\Develop_Tools\Masm32\bin; D:\Develop_Tools\Masm32\include; D:\Develop_Tools\Masm32\lib ml /c /coff /I D:\Develop_Tools\Masm32\include $(NAME_PART).asm link -lib *.obj /out:$(NAME_PART).lib 比如這里,就通過Lib腳本生成了一個(gè)DxApplication.Lib文件 這里調(diào)用ExeCompile之后,就可以生成Test.exe文件,最后運(yùn)行Test.exe了。
另外有一點(diǎn),就是用NotePad++寫的代碼,他內(nèi)部默認(rèn)使用的是Utf8編碼,而masm32默認(rèn)是采用的Ansi的API函數(shù),所以,此時(shí)在NotePad++中顯示正常的中文文字,如果編譯成exe之后,在exe中顯示的就是亂碼了,有兩種方法,一種是代碼前面加上UNICODE equ 1,表示使用Unicode的API寬函數(shù),還有一種方法就是將NotePad++的編輯器,默認(rèn)修改成ANsi的GB2312的編碼,設(shè)置在首選項(xiàng)中如下 選中紅色線框位置,然后選擇GB2312就行了! 另外,就是代碼自動(dòng)完成了,這個(gè)可以用QuickText這個(gè)插件,這里不再多說,因?yàn)榘呈菍W(xué)習(xí),所以不用這個(gè)插件,代碼全部手輸入,以加深記憶了! 我的配置: Notepad++配置masm32匯編環(huán)境 =========================== 0.準(zhǔn)備工作: 安裝NotePad++、插件NppExec、TopMost等 1.配置NppExec腳本 比如,要將asm匯編文件生成一個(gè)exe文件,編輯腳本命令為: ----------------------------------------------------- cd $(CURRENT_DIRECTORY) ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib ml /c /coff /I D:\Masm32\include $(NAME_PART).asm link /LIBPATH:D:\Masm32\lib /subsystem:windows $(NAME_PART).obj /out:$(NAME_PART).exe NPP_RUN $(NAME_PART).exe 至于ml,link等命令的參數(shù),請(qǐng)參考相應(yīng)的參數(shù)選項(xiàng) 這個(gè)編譯生成了對(duì)應(yīng)的exe之后,最后會(huì)調(diào)用這個(gè)生成的exe程序 將文件編譯成lib庫(kù)的腳本 ----------------------- cd $(CURRENT_DIRECTORY) ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib ml /c /coff /I D:\Masm32\include $(NAME_PART).asm link -lib *.obj /out:$(NAME_PART).lib 編譯C(最好是安裝好MinGW配置好PATH環(huán)境變量): --------------------------------------------- ENV_SET PATH = C:\msys\1.0\mingw\bin cmd /c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe $(FULL_CURRENT_PATH) " $(CURRENT_DIRECTORY)\$(NAME_PART).exe 編譯C++(最好是安裝好MinGW配置好PATH環(huán)境變量): --------------------------------------------- ENV_SET PATH = C:\msys\1.0\mingw\bin cmd /c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe $(FULL_CURRENT_PATH) " $(CURRENT_DIRECTORY)\$(NAME_PART).exe 2.將這些腳本添加到【宏】菜單,并分配快捷鍵: Notepad++中,【插件】-->【NppExec】-->【Advanced Options...】 勾選"Place to the Macros submenu" 在下面的Associate script下拉列表里面選擇并添加即可 分配快捷鍵: 【宏】-->【管理快捷鍵】-->選擇“Plugin commands” 依次找到剛才設(shè)定的幾個(gè)腳本,分配快捷鍵即可! |
|