我正在使用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