2013-03-20 4 views
2

Я пытался написать простую программу командной строки в сборке с использованием 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 
+1

Вы пробовали отлаживать? Что ты нашел? – tenfour

+1

Параметры, которые вы передаете 'WriteConsole', неверны. Первыми параметрами должны быть дескриптор выходного буфера консоли, а четвертый должен быть указателем на количество написанных символов (вы передаете значение). – user786653

+0

Я изменяю эту строку, чтобы 'invoke WriteConsole, STD_OUTPUT_HANDLE, addr szMsg, nNumToWrite, addr numwritten, NULL', но до сих пор не радует. – mring

ответ

1

Вы связываете ее как консольную программу или программу GUI? Это свойство исполняемого файла в Win32.

+0

Я использую WinAsm. У меня был проект как стандартный EXE при создании проекта. Я попытался создать новый проект в WinAsm и выбрать Console Application в качестве типа проекта и создать его с тем же кодом, с тем же результатом. – mring

Смежные вопросы