0

我有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它应该在的位置。当我在 MASM 中编译它时dosbox,它可以正常工作。我不知道问题可能出在哪里。有人可以帮我吗?

4

1 回答 1

0

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

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

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

来源

于 2016-05-29T18:18:04.523 回答