您好我是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文件的同一文件夹中。请帮忙,我是这里的新手。
答案 0 :(得分:3)
关于你的计划的3个观察结果:
正如Dirk Wolfgang Glomp所说,DOS使用8.3文件名,因此名称限制为8个字符。您的字符串" highscore.txt" 对名称部分使用的字符数太多。
当您跳转到错误开放时,您已经在句柄变量中移动了AX寄存器。此时AX有错误代码,不是句柄。尽管如此,您在显示消息后使用它来关闭文件。
您最好还检查DOS ReadFile函数提供的CF.添加另一个例程错误读取,在其中关闭文件将是一件明智的事情。