Assembly &引用;“未找到路径”;使用中断INT 21h、3Dh时

Assembly &引用;“未找到路径”;使用中断INT 21h、3Dh时,assembly,x86,Assembly,X86,在我的程序中使用中断INT 21h,3Dh时,设置了CF,这意味着试图打开我的文件时出错。AX寄存器中的错误代码为3:“未找到路径” 我不知道如何修正这个错误。我的文件名正确地写入了DATASEG(以零字节结尾),该文件与我的程序位于同一文件夹中,并且寄存器(据我所知)填充了正确的数据 我的文件处理代码片段: CODESEG ... mov ah, 3Dh lea dx, [mapfile] mov al, 0 int 21h mov [handle], ax ; A

在我的程序中使用中断
INT 21h,3Dh
时,设置了
CF
,这意味着试图打开我的文件时出错。
AX
寄存器中的错误代码为
3
:“
未找到路径”

我不知道如何修正这个错误。我的文件名正确地写入了
DATASEG
(以零字节结尾),该文件与我的程序位于同一文件夹中,并且寄存器(据我所知)填充了正确的数据

我的文件处理代码片段:

CODESEG

...

  mov ah, 3Dh
  lea dx, [mapfile]
  mov al, 0
  int 21h

  mov [handle], ax  ; AX currently doesn't contain the handle, but the error code

...

DATASEG
  mapfile db "map.txt", 0
  handle dw ?
  buffer db ?

知道为什么会发生此错误(以及如何修复它)吗?

这可能失败的一些原因:

  • 您的程序中是否设置了DS
  • 文件是否在当前目录中?您似乎没有使用完整的路径规范。文件与程序位于同一目录中的事实并不意味着这一点。尝试编写完整的路径规范
  • 如果您使用的是DOSBox之类的仿真器,请确保预先装入了包含此文件的目录。不太可能,因为它与程序位于同一目录中

确保DS寄存器正确。这可能是不匹配的。