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

DOSBox环境下汇编程序读取textfile.txt文件的路径疑问

问题解答:DOSBox下汇编程序读取textfile.txt的正确目录

首先得理清DOSBox虚拟磁盘和Windows实际目录的映射关系,这就是你程序没反应的核心原因,咱们一步步说:

正确的文件放置位置

你需要把textfile.txt放在DOSBox虚拟C盘对应的Windows实际目录里,同时调整代码里的文件路径:

  • 假设你在DOSBox里用mount c c:\TASM命令把Windows的C:\TASM挂载成了虚拟C盘,那么:
    1. 直接把textfile.txt放到Windows的C:\TASM目录下;
    2. 把代码里的file db "C:\TASM\textfile.txt",0改成file db "textfile.txt",0或者file db "C:\textfile.txt",0。
  • 原因很简单:挂载后,DOSBox的虚拟C盘根目录就对应Windows的C:\TASM,你原来写的C:\TASM\textfile.txt会让程序去虚拟C盘的TASM子目录找文件(也就是实际路径C:\TASM\TASM\textfile.txt),自然找不到。

为什么EMU8086能正常运行?

EMU8086的C:\EMU8086\vdrive\C本身就是它模拟的DOS系统C盘,你把文件放这里,代码里写对应路径自然能找到,和DOSBox的挂载逻辑不一样。

额外的代码优化建议

你的输出逻辑有个小问题:用CMP BYTE PTR [SI], 0判断结束是不可靠的,因为文本文件内容末尾不一定是0字节。应该用3fh功能调用返回的读取字节数(存在AX里)来控制输出循环,比如:

mov cx, 99
mov dx, offset buf
mov ah, 3fh
int 21h
jz terminate
mov cx, ax ; 将读取到的字节数作为循环次数
mov si, offset buf
print:
mov al, [si]
mov ah, 0eh
int 10h
inc si
loop print

这样能准确输出所有读取到的内容,不会提前终止或输出多余内容。

内容的提问来源于stack exchange,提问作者Fried

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:55:25