在NASM for Windows中设置退出状态



我目前正在学习一些基本的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 $?

相关内容

  • 没有找到相关文章

最新更新