0
我正在使用16b程序集中的程序工作,该程序只是使用在运行时输入自己的文件名创建文件,然后关闭它。问题是 - 文件没有被创建。这里是我的代码: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 ? – Tomek
您必须在8.3文件名后放置一个零字节。 filename db 10,db 0,times 11 db“$”,db 0,filehandle dw 0 –