在 NASM 中为 Windows 设置退出状态
Setting Exit Status in NASM for Windows
我目前正在尝试学习一些基本的 x86 程序集,运行 遇到一些困难 运行 它在 Windows 上。我要做的就是设置退出状态。如果我在 Linux:
,我知道该怎么做
global _start
_start:
mov eax,1
mov ebx, 52
int 0x80
显然这将给出退出状态 52。我如何在 Windows 上执行此操作?我找遍了也没有找到明确的答案。
How do I do this on Windows? I looked all over but couldn't find a clear answer.
这就是问题所在:没有明确的答案。 Windoze 是一团糟。使用 Linux 并快乐。 :−)
如前所述,没有通用方法与OS交互。
例如,在 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
你可能想做的是,正如 已经指出的那样,使用 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 $?
我目前正在尝试学习一些基本的 x86 程序集,运行 遇到一些困难 运行 它在 Windows 上。我要做的就是设置退出状态。如果我在 Linux:
,我知道该怎么做global _start
_start:
mov eax,1
mov ebx, 52
int 0x80
显然这将给出退出状态 52。我如何在 Windows 上执行此操作?我找遍了也没有找到明确的答案。
How do I do this on Windows? I looked all over but couldn't find a clear answer.
这就是问题所在:没有明确的答案。 Windoze 是一团糟。使用 Linux 并快乐。 :−)
如前所述,没有通用方法与OS交互。
例如,在 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
你可能想做的是,正如 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 $?