Создание файлов
Для создания файла предназначена функция 3Ch прерывания INT 21h. С помощью этой функции может быть создан файл как в текущем, так и в любом другом каталоге. Если файл с указанным именем уже существует, он обрезается до нулевой длины. Будьте осторожны при использовании этой функции - она может уничтожить файл.
Дополнительно функция 3Ch выполняет операцию открытия только что созданного файла, возвращая программе идентификатор файла. При создании файла программа может указать атрибуты файла.
Приведем параметры вызова функции создания файла:
На входе: | AH | 3Ch |
CX | Атрибуты создаваемого файла: 00h - обычный файл; 01h - только читаемый файл; 02h - скрытый файл; 04h - системный файл |
|
DS:DX | Адрес строки, содержащей путь к файлу | |
На выходе: | AX | Код ошибки, если был установлен флаг переноса CF; Идентификатор файла, если флаг переноса CF сброшен |
При выполнении этой функции возможно возникновение следующих ошибок:
Операционная система игнорирует попытки создания с помощью этой функции каталога или метки диска.
Для того чтобы при создании файла случайно не уничтожить содержимое уже существующего файла с таким же именем, программа может использовать функцию 5Bh. Эта функция проверяет заданный путь на предмет наличия указанного файла. Если такой файл уже существует, функция возвращает программе признак ошибки:
На входе: | AH | 5Bh |
CX | Атрибуты создаваемого файла: 00h - обычный файл; 01h - только читаемый файл; 02h - скрытый файл; 04h - системный файл |
|
DS:DX | Адрес строки, содержащей путь к файлу | |
На выходе: | AX | Код ошибки, если был установлен флаг переноса CF; Идентификатор файла, если флаг переноса CF сброшен |
Если вам требуется временный файл, вы можете создать его с помощью функции 5Ah:
На входе: | AH | 5Ah |
CX | Атрибуты создаваемого файла: 00h - обычный файл; 01h - только читаемый файл; 02h - скрытый файл; 04h - системный файл |
|
DS:DX | Адрес блока памяти, в который функция запишет путь созданного временного файла. Размер этого блока памяти должен быть по крайней мере 13 байт | |
На выходе: | AX | Код ошибки, если был установлен флаг переноса CF; Идентификатор файла, если флаг переноса CF сброшен |