Системное программное обеспечение персональных ЭВМ


Пример 11 - часть 3


Понятия "последовательный" и "с произвольным доступом" относятся не к файлу, а к способу его обработки - один и тот же файл можно обрабатывать как последовательно, так и с произвольным доступом. При использовании функций последовательной обработки поля FCB, задаюшие номер записи (curblk, currec, randrec) модифицируются системой после каждой операции. При операциях с произвольным доступом программист формирует поля curblk, currec, обращается к функции 0x24, которая формирует поле randrec, а затем вызывает одну из функций произвольного доступа. Программист может, однако, собственными средствами формировать поле randrec перед каждой операцией и пользоваться функциями 0x14/0x15 - чтение/запись будет оперировать именно с той записью, номер которой имеется в поле randrec.

10.4.3. Функции работы с файлами и каталогами

Рассмотренные выше функции работали с файлом "со стороны программы", обеспечивая операции по обмену данными между программой и внешней средой. Теперь рассмотрим функции, работающие с файлом "со стороны операционной системы", которая рассматривает файл как единицу хранения данных на внешней памяти. Поскольку нам уже известна структура каталогов в MS DOS, должно быть ясно, как эти функции выполняют свои задачи. Для некоторых из приведенных функций имеется два варианта - старый, использующий метод FCB, и новый, использующий метод дескрипторов:




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



0x13- удалить файл (FCB) - задается адрес (DS:DX) неоткрытого FCB;
0x41- удалить файл (дескрипторы) - задается адрес (DS:DX) ASCIIZ-строки, содержащей путь и имя файла;
0x17- переименовать файл (FCB) - задается (DS:DX) блок FCB, в котором поля drive, fname, fext заполнены для старого имени, а со смещением 17 (0x11) от начала записаны новое имя и расширение;
0x56- переименовать (дескрипторы) - задается: DS:DX - адрес ASCIIZ-строки - старое имя, ES:DI - адрес ASCIIZ-строки - новое имя;
0x43- изменить (AL=1) /прочитать (AL=0) атрибуты файла в каталоге (дескрипторы); DS:DX - строка-имя, CX - атрибуты;