文件未打开

时间:2015-12-04 14:17:32

标签: assembly x86 dos file-handling masm32

您好我是masm的新手,目标是打开一个文件,但我的代码无效

我有这段代码:

.data
filename db "highscore.txt", 0 
handle dw ?
buffer db 100 dup(?)

.code
...
mov dx, offset filename
mov al, 2
mov ah, 3dh
int 21h

mov handle, ax
jc erroropening

mov dx, offset buffer
mov bx, handle
mov cx, 100
mov ah, 3fh
int 21h

mov counter_files, ax

mov bx, handle
mov ah, 3Eh
int 21h
...
erroropening:
    mov dx, offset newline
    mov ah, 09h
    int 21h
    mov dx, offset errormsg
    mov ah, 09h
    int 21h
    mov bx, handle
    mov ah, 3Eh
    int 21h
...

但不知何故该文件未打开,即使它位于我的asm文件的同一文件夹中。请帮忙,我是这里的新手。

1 个答案:

答案 0 :(得分:3)

关于你的计划的3个观察结果:

  • 正如Dirk Wolfgang Glomp所说,DOS使用8.3文件名,因此名称限制为8个字符。您的字符串" highscore.txt" 对名称部分使用的字符数太多。

  • 当您跳转到错误开放时,您已经在句柄变量中移动了AX寄存器。此时AX有错误代码,不是句柄。尽管如此,您在显示消息后使用它来关闭文件。

  • 您最好还检查DOS ReadFile函数提供的CF.添加另一个例程错误读取,在其中关闭文件将是一件明智的事情。