微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。