Ассемблер и программирование для IBM PC



       

ГЛАВА 16. Дисковая память II: Функции базовой версиии DOS - часть 3


Ассемблер для IBM PC. Глава 16. 3

блока и записи. Ввиду ограничения на максимальный размер файла (1.073.741.824 байтов), файл с короткими записями может содержать больше записей и иметь больший относительный номер записи. Если размер записи больше 64, то байт 36 всегда содер жит 00.

Помните, что числовые значения в словах и двойных словах записываются в обратной последовательности байтов. Блоку FCB предшествует необязательное семибайтовое расши рение, которое можно использовать для обработки файлов со специальными атрибутами. Для использования расширения необхо димо закодировать в первом байте шест.FF, во втором - атри бут файла, а в остальных пяти байтах шесь.нули.

ИСПОЛЬЗОВАНИЕ БЛОКА FCB ДЛЯ СОЗДАНИЯ ФАЙЛА НА ДИСКЕ ------------------------------------------------------------ Для ссылки на каждый дисковый файл программа должна содер жать правильно составленный блок управления файлом. Операции ввода-вывода на диск требуют установки адреса блока FCB в регистре DX. Доступ к полям блока FCB осуществляются по этому адресу с помощью регистровой пары DS:DX. Для создания нового файла программа использует функцию шест.16 в прерыва нии DOS INT 21H следующим образом:

MOV AH,16H ; Создание LEA DX,FCBname ; дискового файла INT 21H ; Вызов DOS

DOS осуществляет поиск имени файла и тип файла, взятого из соответствующих полей FCB, в оглавлении. Если элемент оглавления, содержащий необходимое имя (и тип), будет найдено, то DOS очищает найденный элемент для нового исполь зования, если такой элемент не будет найден, то DOS ищет свободный элемент. Затем операция устанавливает размер файла в 0 и "открывает" файл. На этапе открытия происходит проверка доступного дискового пространства, результат такой проверки устанавливается в регистре AL:

00 На диске есть свободное пространство FF На диске нет свободного пространства.

При открытии также устанавливается в блок FCB номер текущего блока - 0 и размер записей (по умолчанию) - 128 (шест.80) байтов. Прежде, чем начать запись файла, можно заменить это значение по умолчанию на требуемый размер записей. Для определения выводной записи необходимо прежде обеспе чить начальный адрес этой записи в область передачи данных (DTA - disk trausfer area). Так как блок FCB содержит размер записей, то в DTA не требуется устанавливать ограничитель конца записи. Затем с помощью функции шест.1A необходимо




Содержание  Назад  Вперед