【发布时间】:2014-05-19 06:39:43
【问题描述】:
我正在开发一个 16b 程序集的程序,它只是创建一个文件名,文件名是我在运行时自己键入的,然后关闭它。问题是 - 没有创建文件。这是我的代码:
org 100h
mov ah, 9
mov dx, prompt
int 21h
mov ah, 0ah
mov dx, filename
int 21h
mov ah, 3ch
mov cx, 0000h
mov dx, filename+2
int 21h
mov word [filehandle], ax
mov bx, [filehandle]
mov ah, 3eh
int 21h
mov ah, 4ch
int 21h
prompt db "Filename:",10,13,"$"
filename db 10
db 0
times 11 db "$"
filehandle dw 0
如您所见,我正在使用缓冲输入来读取文件名。不幸的是,该文件未创建。如果我硬编码文件名,效果很好,如下所示:
...
mov ah, 3ch
mov dx, filename
int 21h
...
filename db "test.txt"
但这不是我想要实现的。这段代码不起作用的原因是什么?我正在使用 NASM。
编辑: 问题解决了,@rkhb 的解决方案奏效了。
【问题讨论】:
-
尝试以零结尾的文件名。
-
@FrankKotler 您的意思是将 11 db "$" 时间更改为 11 db 0 时间?
-
您必须在 8.3 文件名之后放置一个零字节。文件名 db 10, db 0, times 11 db "$", db 0, filehandle dw 0