assem / Ответы по пунктам / 037
.docx-
Метод дескриптора файла.
Про файл тоже, что и в 36.
Дескриптор файла - это номер (число), который система присваивает файлу при работе с ним функций прерывания int 21h.
Рассмотрим основные функции работы с файлами:
1. AH = 3ch - создаёт новый файл с указанной спецификацией. Если указанный файл существует, он усекается до нулевой длины.
DS:DX = адрес строки с именем файла в виде ASCIIZ,
в СХ - атрибут файла;
при возврате: АХ = дескриптор
при ошибке: CF = 1; АХ = код ошибки.
После создания файла в него можно писать информацию. Если файл был создан предварительно, то его можно открыть для чтения, записи или добавление в него информации.
2. АН = 3dh - открывает файл с указанной спецификацией. При вызове в AL помещается режим доступа: 0 - для чтения; 1 - для записи; 2 - для записи и чтения (дополнения), в СХ - атрибут файла, в DS:DX - адрес строки с именем файла. Возвращает дескриптор файла и устанавливает указатель файла на начало файла для режимов 0 и 1, и на конец файла для режима 2.
При возврате в ax=дескриптор;
При ошибке: CF = 1; АХ = код ошибки.
При открытии файла DOS назначает ему очередной свободный элемент (блок описания файла) в специальной системной таблице открытых файлов SFT (System File Table), расположенной среди системных областей данных. Объём этой таблицы определяет максимальное число открытых файлов, с которыми можно работать одновременно, оно задаётся на этапе конфигурирования DOS директивой FILES файла CONFIG.SYS. Важным элементом блока описания файла является ячейка, размером в DD, в которой хранится указатель файла - номер байта относительно начала файла, с которого начнётся очередная операция записи или чтения. Наличие указателя позволяет организовать прямой доступ к файлу, т. е. чтение или запись, начиная с любого места файла. Ссылку на номер выделенного файлу блока описания файла в SFT DOS возвращает в программу в виде дескриптора, который необходимо сохранять в выделенной для этой цели переменной, обычно называемой handle. Если этого не сделать — дескриптор потеряется.
3. AH = 3eh - закрывает файл. Сбрасывает на диск внутренние буферы файла. Если файл был модифицирован, в записи каталога устанавливаются новые значения длины файла, а также дата и время создания файла, освобождается блок описания файла в SFT вместе с закреплённым за ним дескриптором:
При вызове: ВХ=дискриптор;
При ошибке: CF=1; AX=код ошибки.