You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10中SASM IDE运行NASM代码崩溃问题求助

解决Windows 10下SASM运行NASM代码崩溃的问题

嘿,我一眼就揪出问题啦!你写的这段NASM代码是专门针对Linux系统的,但你在Windows 10环境下运行,肯定会直接崩溃,核心原因是系统调用机制完全不兼容:

问题根源

  • 系统调用不匹配:Linux用int 0x80触发系统调用,比如mov eax,4对应输出字符串的sys_write,mov eax,1对应退出进程的sys_exit,这些都是Linux特有的规则。Windows的系统调用逻辑完全不同,它不识别int 0x80这类指令,执行后会直接触发内存错误导致程序崩溃。
  • 可执行格式不兼容:你的代码是按照Linux的ELF格式编写的入口点和链接规则,但Windows下SASM默认生成PE格式的可执行文件,两者的程序结构、入口要求都不一样。

两种解决方案

方案1:改用Windows兼容的代码(用SASM自带工具)

你已经引入了io.inc,这个头文件是SASM提供的,内置了跨平台的输入输出宏,直接用它就能避免系统调用的问题,修改后的代码如下:

%include "io.inc"
section .data
    msg db 'Hello, world!',10 ; 带换行符的字符串
section .text
    global main ; SASM的Windows入口要求
main:
    PRINT_STRING msg ; 用io.inc的宏输出字符串
    xor eax, eax ; 返回0表示正常退出
    ret

这段代码直接调用SASM封装好的输出宏,不需要自己处理底层系统调用,在Windows下的SASM里就能正常运行。

方案2:在WSL中运行原Linux代码

如果你想保留原来的Linux风格代码,可以在Windows上安装WSL(Windows子系统Linux),然后在WSL环境里用NASM和ld编译运行:

  1. 安装WSL并启动Linux终端
  2. 编译代码:nasm -f elf32 hello.asm -o hello.o
  3. 链接生成可执行文件:ld -m elf_i386 hello.o -o hello
  4. 运行:./hello
    这样就能完美执行你原来的Linux系统调用代码了。

内容的提问来源于stack exchange,提问作者Katido 622

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:34:36