2013-10-23 62 views
3

我在Windows XP SP3機器上安裝了masm32。我下載MASM32從這裏:masm32鏈接器不會創建可執行文件

http://www.masm32.com/masmdl.htm

安裝它。我將路徑C:\ masm32 \ bin添加到PATH環境變量中。現在,我正試圖組裝和鏈接一個示例程序。它創建目標文件但不創建可執行文件。

樣本程序:

include \masm32\include\masm32rt.inc 

.data 
MyTitle db "ASM!",0 
MyText db "Some Text!",0 

.code 
start: 
push 0 
push offset MyTitle 
push offset MyText 
push 0 
call MessageBoxA 
call ExitProcess 
end start 

此外,請注意,這是目前在c默認LINK.EXE文件:\ MASM32 \而連接,如下所示bin目錄被扔一個錯誤:

Assembling: sample.asm 

*********** 
ASCII build 
*********** 

Microsoft (R) Incremental Linker Version 5.12.8078 
Copyright (C) Microsoft Corp 1992-1998. All rights reserved. 

/z2 
"sample.obj+" 
"sample.obj" 
"sample.exe" 
NUL 
LINK : warning LNK4044: unrecognized option "z2"; ignored 
LINK : fatal error LNK1181: cannot open input file "sample.obj+" 

我從這裏LINK.EXE的另一個版本:

http://download.microsoft.com/download/vc15/Update/1/WIN98/EN-US/Lnk563.exe

當我組裝和使用下面的命令鏈接:

ml.exe sample.asm sample.obj 

它給人的錯誤:

Assembling: sample.asm 

*********** 
ASCII build 
*********** 


Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994 
Copyright (C) Microsoft Corp 1984-1993. All rights reserved. 

Object Modules [.obj]: sample.obj+ 
Object Modules [.obj]: "sample.obj" 
Run File [sample.exe]: "sample.exe" 
List File [nul.map]: NUL 
Libraries [.lib]: 
Definitions File [nul.def]: 
LINK : fatal error L1104: \masm32\lib\masm32.lib : not valid library 

回答

5

好了,你肯定不希望使用分段連接,這是16位代碼。繼續使用Incremental Linker Version 5.12.8078

那麼,你得到一個obj文件?這就是ML.exe所做的。它是MASM彙編程序,它將把你的代碼組裝成一個obj文件,並傳遞給你選擇的鏈接器來創建exe文件。我說你選擇的鏈接器,因爲有幾個鏈接器可以使用所有的優點和缺點。

要創建一個對象文件:ml /c /coff /Cp sample.asm

/c選項告訴毫升只組裝,而不是試圖鏈接

/Cp選項告訴毫升保留所有標識符

/coff創建的情況下,通用對象文件格式中的obj文件,這是我們在Windows上用於x86的文件。

現在,您需要將OBJ文件鏈接到exe:link /subsystem:windows sample.obj

/subsystem:windows創建GUI的Windows exe文件。更改爲console創建基於控制檯應用程序(同一個DOS應用程序)

enter image description here

+0

感謝。我已經理解了:) –