TASM/TLINK:未初始化的 FARDATA 中的数据?段被写入可执行文件

问题描述

因为我需要一个缓冲区来临时存储我的程序,而且我不希望它的字节写入 .exe 文件,所以我想我只需将声明从 .DATA 移动到 .FARDATA? 部分。它自己的缓冲区几乎需要整个段,所以我选择了 FARDATA?而不是 DATA? - 因为许多其他未初始化的数据必须去那里。 好吧,在查看生成的 .exe 文件后,似乎字节已写入其中!

这样一个最小的例子:

.MODEL COMPACT
.STACK 100h

.DATA 
array         DB 1,2,3,4,5,6

.DATA?
otherData   DW ?

.FARDATA?
buffer     DB  64000 dup (?)

.CODE
Main:
    MOV     AH,0
    INT     16H

    MOV     AH,4ch  
    INT     21h

END Main

占用大约 64KB。

当然,我怀疑这是段写入 .exe 文件的顺序。使用 DOSSEG 指令看起来是一个很有希望的修复,但 TASM 只是忽略了它。

我的逻辑谬误在哪里?

更新

显然,上面使用 MASM 而不是 TASM 组装的代码给出了预期的结果。所以肯定是TASM的MASM模式的缺陷。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)