我目前正在学习一些基本的x86汇编,在Windows上运行时遇到了一些困难。我所要做的就是设置退出状态。如果我在Linux上,我知道如何做到这一点:
global _start
_start:
mov eax,1
mov ebx, 52
int 0x80
显然,这将给出退出状态52。如何在Windows上执行此操作?我到处找,但找不到一个明确的答案。
如何在Windows上执行此操作?我到处找,但找不到一个明确的答案。
这就是问题所在:没有明确的答案。Windoze一团糟。使用Linux并快乐。:−(
正如已经提到的,没有通用方法与操作系统接口。例如,在WinD0S上,它应该是int 21h
:
segment code
start:
mov ah, 0x4C ; function `exit – terminate with return code`
mov al, 52 ; return code
int 0x21 ; DOS kernel interrupt
正如David Wohlferd已经指出的那样,你可能想做的是使用ExitProcess
:
global start
extern _ExitProcess@4
section .text
start:
push 52
call _ExitProcess@4
在安装了wine(1)
的GNU/Linux Debian(类似(系统上,步骤如下:
nasm -f win32 -o exitdemo.obj exitdemo.asm
i686-w64-mingw32-ld exitdemo.obj -lkernel32 -o exitdemo.exe
wine ./exitdemo.exe; echo $?