Emu8086 - 无法打开文件

Posted

技术标签:

【中文标题】Emu8086 - 无法打开文件【英文标题】:Emu8086 - cannot open file 【发布时间】:2016-05-29 14:39:11 【问题描述】:

emu8086 有问题。我想打开一个文件,但是当我尝试模拟它时,它显示一个错误。

data1 segment
       in_file   db 'input.txt',0
       handle    dw ?
       warn      db "Error$"
data1 ends
code1 segment
    start1:
        mov ax,seg w_stosu
        mov ss,ax
        mov sp,offset w_stosu

        mov ax,seg in_file
        mov ds,ax
        mov dx,offset in_file
        mov ax,3d00h  
        int 21h
        jb  error   
        mov ds:[handle],ax
        mov ax,04c00h  
        int 21h
error:  
        mov dx,offset warn
        call    print_dx
        mov ax,04c00h  
        int 21h
print_dx:
        mov ax,seg data1
        mov ds,ax
        mov ah,9h  
        int 21h
ret
code1 ends

stack1 segment stack
                dw  255 dup(?)
      w_stosu   dw  ?
stack1 ends

end start1

错误出现在这部分:

    mov ax,3d00h  
    int 21h

文件不存在 C:\emu8086\MyBuild\input.txt 中断错误:21h/3Dh:无法打开文件。

我的输入文件 (input.txt) 在应该在的C:\emu8086\vdrive\C 中。当我在dosbox 的 MASM 中编译它时,它可以正常工作。我不知道问题可能出在哪里。有人可以帮我吗?

【问题讨论】:

【参考方案1】:

正如您收到的错误消息提示,模拟器正在C:\emu8086\MyBuild 中查找文件,因为您没有指定包含驱动器号的绝对路径。

DOS文件系统模拟在C:\emu8086\vdrive\x(x为盘符)

如果未指定盘符且未设置当前目录,则 C:\emu8086\MyBuild\ 默认使用路径。

(source)

【讨论】:

我在 C:\emu8086\MyBuild\ 中也有那个文件,它显示了同样的错误。

以上是关于Emu8086 - 无法打开文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用库 emu8086.inc 打印除法的其余部分

emu8086 调用LED面板的方法

EMU8086 将 32 位数除以 16 位数给出意外的 0 余数

如何使用库emu8086.inc打印除法的剩余部分

EMU 8086 在寄存器中存储错误的数组元素值

认识emu8086仿真内存