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


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


Функции метода дескрипторов следующие:

0x3C- создать файл (если файл уже существует, он создается заново);
0x5B- создать новый файл (если файл уже существует, он не создается заново);
0x5A- создать временный файл с оригинальным именем (этой функции передается ASCIIZ-строка, содержащая только путь, без имени, а функция добавляет в эту строку имя созданного файла);
0x6C- расширенная функция создания/открытия - в DOS 4.0 и выше (особенности обращения к этой функции здесь не рассматриваются);
0x3D- открыть файл;
0x3E- закрыть файл;
0x42- установить указатель чтения/записи; на входе: двойное слово CX:DX - размер перемещения указателя, AL - способ отсчета (0 - от начала, 1 - от текущего, 2 - от конца); на выходе: DX:AX - новая позиция указателя;
0x3F- читать из файла;
0x40- писать в файл;
0x45- дублировать файловый дескриптор - возврашает в AX альтернативный дескриптор для того же файла;
0x46- перенаправить ввод-вывод - после выполнения этой функции все операции, адресованные файлу, дескриптор которого был задан функции 0x46 в регистре CX, будут переадресовываться файлу, дескриптор которого был задан в BX.

При использовании метода FCB адрес FCB файла, с которым оперирует программа передается функциям DOS в регистрах DS:DX. Выходом функций является содержимое регистра AL - нулевое при отсутствии ошибок, ненулевое в противном случае. Функции метода FCB следующие:

0x29- сформировать FCB (DS:SI - адрес ASCIIZ строки, содеpжащей имя файла в общепринятом формате, ES:DI - адрес буфера, в котором система формирует неоткрытый FCB);
0x16- создать файл (если файл уже существует, он создается заново);
0x0F - открыть файл;
0x10 - закрыть файл;
0x14- читать последовательный файл;
0x15- писать в последовательный файл;
0x21- читать запись с произвольным доступом;
0x22- писать запись с произвольным доступом;
0x27- читать несколько записей с произвольным доступом (CX - количество записей);
0x28- писать несколько записей с произвольным доступом;
0x24- установить номер записи для произвольного доступа;
0x1A- установить адрес текущей DTA (задается в DS:DX);
0x2F- получить адрес текущей DTA (получается в ES:BX).




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