Assembler - язык неограниченных возможностей


Создание и открытие файлов - часть 2


Ввод: AX = 5Bh
СХ = атрибут файла
DS:DX = адрес ASCIZ-строки с полным именем файла
Вывод: CF = 0 и АХ = идентификатор файла, открытого для чтения/записи в режиме совместимости, если не произошла ошибка
CF = 1 и АХ = код ошибки (03h — путь не найден, 04h — слишком много открытых файлов, 05h — доступ запрещен, 50h — файл уже существует)


Функция DOS 5Ah — Создать и открыть временный файл

Ввод: AX = 5Ah
СХ = атрибут файла
DS:DX = адрес ASCIZ-строки с путем, оканчивающимся символом «\», и тринадцатью нулевыми байтами в конце
Вывод: CF = 0 и АХ = идентификатор файла, открытого для чтения/записи в режиме совместимости, если не произошла ошибка (в строку по адресу DS:DX дописывается имя файла)
CF = 1 и АХ = код ошибки (03h — путь не найден, 04h — слишком много открытых файлов, 05h — доступ запрещен)


Функция 5Ah создает файл с уникальным именем, который не является на самом деле временным, его следует специально удалять, для чего его имя и записывается в строку в DS:DX.

Во всех случаях строка с полным именем файла имеет вид типа

filespec db 'с:\data\filename.ext',0

причем, если диск или путь опущены, используются их текущие значения.

Для работы с длинными именами файлов в DOS 7.0 (Windows 95) и старше используется еще один дополнительный набор функций, которые вызываются как функция DOS 71h.


Функция LFN 6Ch — Создать или открыть файл с длинным именем

Ввод: AX = 716Сh
ВХ = режим доступа Windows 95

    биты 2 – 0: доступ

    000 — только для чтения

    001 — только для записи

    010 — для чтения и записи

    100 — только для чтения, не изменять время последнего обращения к файлу

биты 6 – 4: доступ для других процессов (см. функцию 3Dh)

бит 7: файл не наследуется порождаемыми процессами

бит 8: данные не буферизуются

бит 9: не архивировать файл, если используется архивирование файловой системы (DoubleSpace)

бит 10: использовать число в DI для записи в конец короткого имени файла

бит 13: не вызывать прерывание 24h при критических ошибках

бит 14: сбрасывать буфера на диск после каждой записи в файл

СХ = атрибут файла

DX = действие

    бит 0: открыть файл (ошибка, если файл не существует)

    бит 1: заменить файл (ошибка, если файл не существует)

    бит 4: создать файл (ошибка, если файл существует)

DS:SI = адрес ASCIZ-строки с именем файла

DI = число, которое будет записано в конце короткого варианта имени файла

Вывод: CF = 0
АХ = идентификатор файла
СХ = 1, если файл открыт
СХ = 2, если файл создан
СХ = 3, если файл заменен
CF = 1, если произошла ошибка
АХ = код ошибки (7100h, если функция не поддерживается)
<


Начало  Назад  Вперед