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

macOS下DOSBox使用MASM汇编出现ExitProcess相关A2105错误如何解决

错误根本原因

你当前的报错核心是代码与运行环境完全不匹配:
你编写的是32位Windows平台的Win32汇编代码,依赖Windows系统API、32位保护模式语法,但DOSBox搭载的是16位实模式的DOS环境,内置的MASM是面向8086的16位版本,不支持.386平展内存模型、stdcall调用约定、ExitProcess Win32 API、INVOKE伪指令这些语法,汇编时识别不出对应伪指令就会抛出A2105错误。

解决方案

方案1:修改代码适配DOSBox环境(推荐,符合你当前的教程定位)

将代码改为16位DOS兼容的汇编语法,用DOS系统中断替换Win32 API即可,修改后代码如下:

; AddTwo.asm - 16位DOS环境下两数相加示例
.8086
.model small
.stack 4096

.code
main PROC
    mov ax, 5
    add ax, 6 ; 相加结果存储在AX寄存器中

    ; 调用DOS中断退出程序,替代Win32的ExitProcess
    mov ah, 4Ch
    int 21h
main ENDP
END main

修改后执行以下命令汇编运行即可:

  • 汇编:masm AddTwo.asm; 末尾分号可跳过后续参数询问
  • 链接:link AddTwo.obj;
  • 直接运行生成的AddTwo.exe即可,如需查看计算结果可额外添加DOS中断输出AX寄存器值到屏幕的代码。

方案2:保留原32位代码,更换运行环境

如果你需要运行原版32位汇编代码,无需使用DOSBox,可在mac上直接更换工具链:

  • 安装Homebrew后,安装nasm汇编器、wine运行环境,用nasm汇编为Win32格式目标文件后,用MinGW链接成可执行文件,再通过Wine运行即可
  • 也可以直接调整语法为macOS支持的Mach-O格式32位汇编,用clang或gcc直接编译运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:57:03