Я новичок в программировании сборки, и мне было интересно, как я могу проверить, существует ли файл, когда я пытаюсь его создать. В этой программе я ожидал, что она вернет ошибку, если файл с тем же именем существует в той же папке. Однако он просто игнорирует его и создает файл независимо от того, существует он или нет. Может кто-нибудь просветить меня, почему это так? О, и я использую TASM для компиляции.Проверьте, существует ли файл перед его созданием на языке сборки
.model tiny
.stack 0100h
.data
org 01000h
file db 65,?,64 dup(?)
crstr1 db 'Enter file name to be created:$'
crstr2 db 'File successfuly created!'
db 'Press any key to continue . . .$'
crstr3 db 'File already exists or invalid name!$'
.code
main: jmp begin
begin:
mov ax, @data
mov ds, ax
CLEAR
GOTOXY 2,4
DISP crstr1
INP file
;file check
mov cx, 3fh
mov dx, offset file
mov ah, 4eh
int 21h
je error
mov ah, 3ch
mov dx, offset file
mov cx, 0
int 21h
;no error
CLEAR
GOTOXY 2,4
DISP crstr2
mov ah, 08
int 21h
jmp exit
error:
mov ah,02h
mov dh,6
mov dl,4
int 10h
mov ah, 09h
mov dx, offset crstr3
int 21h
exit:
int 20h
end main
end
Вы можете использовать 'int 21h/ah = 3dh' сначала, чтобы открыть файл, если он существует, и создать его только в случае сбоя. Или вы можете попробовать использовать 'int 21h/ax = 4300h', чтобы получить атрибуты файла, которые я ожидал бы сбой, если файл не существует. – Michael
@ Майкл или даже использовать ah = 6ch. –