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