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의 솔루션이 작동했습니다.
파일 이름을 0으로 종료하십시오. –
@FrankKotler 변경 의미 번 11 db "$" ~ 번 11 db 0 ? – Tomek
8.3 파일 이름 뒤에 0 바이트를 추가해야합니다. filename db 10, db 0, times 11 db "$", db 0, 파일 핸들 dw 0 –