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 –