Привет мир, используя насм в сборке 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 

Ответы на вопрос(2)

Ваш ответ на вопрос