【问题标题】:Assembly: compile a COM program汇编:编译一个 COM 程序
【发布时间】:2010-04-21 17:09:07
【问题描述】:

COM 程序可以是 32 位的吗?

如何编译 COM 程序? 我有 TLINK32 和 TASM32。

tasm32 \t alex_7.asm
pause
tlink32 alex_7.obj 
pause
td32 main.exe

我收到以下错误:

Fatal: 16 bit segments not supported in module alex_7.asm

我有 DOSBOX,并且正在运行 Windows 7 x64

当我尝试在 DOSBOX 中编译我的程序时,我得到了同样的结果

【问题讨论】:

    标签: assembly tasm


    【解决方案1】:

    不,.com files 是小型(最大 64kb)DOS/16 位时代的可执行文件,具有分段内存模型。在 MASM 中,您将使用 .MODEL TINYORG 100h 并将所有内容放入代码段中。据我所知,没有 32 位 .com 文件。

    【讨论】:

      【解决方案2】:

      COM 对象绝对可以是 32 位的,您遇到的问题是您在 64 位系统上使用 16 位代码。您只能在 64 位系统下运行 32 位和 64 位程序(但在大多数情况下您不能将它们混合在一起)。

      【讨论】:

      • 哦。哎呀。我认为 COM 文件只能是 16 位。
      • 我尝试使用 tasm 和 tlink(16 位)编译我的程序。 tlink 说no stack
      • @Fantomas:那么您要查找的术语是 PE-Executable。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 2018-12-05
      • 2011-03-19
      相关资源
      最近更新 更多