我正在尝试在程序集中创建我的第一个可执行文件,我遇到了一个问题,即应用程序永远不会退出(我必须手动终止它)。 代码:
[bits 32]
extern _puts
section .data
testString:
db "Test"
section .text
_WinMain@16:
push testString
call _puts
add esp,4
xor eax,eax
ret
我使用NASM 2.13.01和ld.exe 2.28(在Windows 10上)编译它
nasm -f Win32 -p first_exe.obj first_exe.asm
ld first_exe.obj -o first_exe.exe c:\Windows\System32\msvcrt.dll
我的朋友告诉我它可以在他的电脑上使用相同的NASM版本,但是ld 2.24(Windows 8)
ld,Windows 10或我的代码是否有问题?除了调用exit函数之外,还有其他解决方法吗?
感谢您的帮助
答案 0 :(得分:1)
从WinMain
返回并不会终止您的申请。 documentation很明显,你需要自己做。还有另一个错误:C字符串必须以NUL字节终止,因此testString
应该像这样定义:
testString:
db "Test",0