Win32 API를 사용하여 어셈블리에서 간단한 명령 행 프로그램을 작성하려고했습니다. 다음 코드를 작성하고, 오류 또는 경고가 발생하지 않도록 컴파일하고 링크하고 명령 행에서 시작했지만 명령 프롬프트에는 아무 것도 나타나지 않습니다. 누구나 무엇이 잘못되었거나 "Hello World!"라고 말할 수 있습니까? 커맨드 라인에서? 프로그램 :Win32 ASM 프로그램이 명령 행에 아무것도 인쇄하지 않습니다.
; Block 1
.386
.model flat,stdcall
option casemap:none
; Block 2
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
; Block 3
.data
szMsg db "Hello World!",0
nNumToWrite dd 12
; Block 4
.data?
numwritten dd ?
CommandLine LPSTR ?
; Block 5
.code
start:
invoke GetCommandLine
mov CommandLine,eax
invoke WriteConsole,CommandLine,addr szMsg,nNumToWrite,numwritten,NULL
xor eax,eax
invoke ExitProcess,eax
end start
디버깅을 시도 했습니까? 뭘 찾았 니? – tenfour
'WriteConsole'에 넘겨주는 매개 변수가 잘못되었습니다. 첫 번째 매개 변수는 콘솔 출력 버퍼의 핸들이어야하며 네 번째 매개 변수는 쓰여진 문자 수 (값을 전달하는)에 대한 포인터 여야합니다. – user786653
이 행을'WriteConsole, STD_OUTPUT_HANDLE, addr szMsg, nNumToWrite, addr numwritten, NULL '이라고 바꾸지 만 기쁨은 없습니다. – mring