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

SASM中运行NASM程序瞬间关闭问题(Windows 10)

解决SASM中NASM程序运行窗口瞬间关闭的问题

嗨,我明白你在SASM里写NASM汇编时遇到的窗口瞬间关闭的问题——这其实是个挺常见的小麻烦,原因很简单:你的程序执行完ret指令后就立刻退出了,操作系统会直接回收控制台窗口,根本没给你时间查看运行结果。下面给你几个实用的解决办法:

方法1:修改代码添加暂停逻辑

利用SASM自带的io64.inc库函数,在程序退出前添加等待用户输入的逻辑,这样窗口会保持到你按下任意键才关闭。修改后的代码如下:

%include "io64.inc"

section .text
global CMAIN
CMAIN:
    mov eax,4  ; 你原有的业务代码
    ; 添加暂停相关代码
    PRINT_STRING exit_prompt  ; 输出提示信息
    GET_CHAR                  ; 等待用户按下任意键
    xor rax, rax
    ret

section .data
    exit_prompt db "按任意键退出...", 0xA, 0  ; 0xA是换行符

解释一下:

  • PRINT_STRING是io64.inc提供的字符串输出函数,用来提示用户操作
  • GET_CHAR会暂停程序,直到用户输入一个字符,这样窗口就不会立刻关闭了

方法2:使用SASM内置的运行设置

如果你不想修改代码,也可以直接通过SASM的设置让程序结束后保持窗口打开:

  • 打开SASM,点击顶部菜单栏的Options(选项)
  • 选择Settings(设置),在弹出的窗口中找到Run(运行)相关选项
  • 勾选Pause after execution(执行后暂停),保存设置即可
    这样不管你的代码有没有暂停逻辑,程序运行结束后都会保持控制台窗口打开,直到你手动关闭它。

方法3:调用标准库函数暂停(进阶)

如果你不想依赖io64.inc,也可以直接调用C标准库的getchar函数,代码示例如下:

extern getchar  ; 声明外部函数

section .text
global CMAIN
CMAIN:
    mov eax,4  ; 你原有的业务代码
    call getchar  ; 等待用户输入,暂停程序
    xor rax, rax
    ret

不过这种方式需要确保SASM已经正确配置了C标准库的链接,通常默认是支持的。

内容的提问来源于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 10:31:22