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

如何用MASM32的ml.exe将asm转exe?遇重定位错误求助

解决MASM32 ml.exe编译16位DOS程序的重定位错误问题

你的代码是16位DOS程序,但MASM32的ml.exe默认编译32位PE格式程序,这是导致重定位错误的核心原因。以下是正确的编译链接步骤:

1. 编译为16位兼容的目标文件

在MASM32内置终端中切换到汇编文件所在目录,执行命令:

ml /c /omf hello.asm
  • /c:仅编译不链接,生成目标文件(hello.obj)
  • /omf:生成16位程序兼容的OMF格式目标文件(默认是32位COFF格式,不适配DOS程序)

2. 链接为DOS可执行文件

使用MASM32自带的link16.exe链接目标文件,命令:

link16 hello.obj;
  • 末尾的分号;是关键,它告诉链接器直接使用默认设置(输出文件名同目标文件、无需额外库文件),跳过交互提示。

关键说明

  • MASM32工具包确实没有masm.exe(老式16位汇编器),但ml.exe配合link16.exe完全可以生成16位DOS程序。
  • 你的汇编代码本身无问题,适配DOS的small内存模型和int 21h中断调用,生成的hello.exe需在DOSBox或32位Windows环境下运行(64位Windows不原生支持16位程序)。

内容的提问来源于stack exchange,提问作者Σταύρος Κομοπουλος

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:15:57