2013-10-23 11 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 디렉토리가 오류를 던지고 : \

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

:
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의 다른 버전을 가지고

내가 조립 및 링크 다음 명령을 사용하여이 :

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 어셈블러이며 exe를 만들기 위해 선택한 링커에 전달하는 obj 파일로 코드를 어셈블합니다. 나는 여러분이 선택한 링커를 말합니다. 왜냐하면 여러분은 자신의 장단점을 모두 사용할 수있는 몇 가지 링커가 있기 때문입니다.

는 오브젝트 파일 만들려면 : ml /c /coff /Cp sample.asm

/c 옵션은 조립하고 연결을 시도하지 ml의 지시를

/Cp 옵션은

/coff가 생성하는 모든 식별자의 경우를 보존하기 위해 ml를 알려줍니다 Common Object File Format의 obj 파일은 Windows에서 x86 용으로 사용됩니다.

/subsystem:windowslink /subsystem:windows sample.obj는 GUI 윈도우 EXE를 만듭니다

지금, 당신은 EXE로 OBJ 파일을 연결해야합니다. console로 변경 콘솔 기반 응용 프로그램 (하지 도스 응용 프로그램과 같은)

enter image description here

+0

감사를 만들 수 있습니다. 나는 그것을 이해했다 :) –