Привет мир, используя насм в сборке Windows
Я используюNASM скомпилировать следующую сборку. Однако код падает в консоли под Windows.
C:\>nasm -f win32 test.asm -o test.o
C:\>ld test.o -o test.exe
section .data
msg db 'Hello world!', 0AH
len equ $-msg
section .text
global _WinMain@16
_WinMain@16:
mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 80h
mov ebx, 0
mov eax, 1
int 80h
Согласно этомусообщение,main
функция недоступна в Windows и должна быть замененаWinMain
.
Так что, если ваша точка входа_start
или жеmain
, это должно быть изменено на_WinMain@16
и изменитьret
в конце процедурыret 16
:
Мой рабочий пример:
section .text
global _WinMain@16
_WinMain@16:
mov eax, 0
ret 16