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


          

ГЛАВА 17. Дисковая память III: Расширенные функции DOS - часть 10


Ассемблер для IBM PC. Глава 17. 10

выполнения операция помещает в область памяти имя текущей директории (без номера дисковода), например, в следующем виде: ASSEMBLE\EXAMPLES

Нулевой байт (шест.00) идентифицирует конец составного имени пути доступа. Для корневой директории возвращаемое значение состоит только из одного байта - шест.00. Таким образом можно получить текущее имя пути доступа для любого файла в подоглавлении. Пример на рис.17.5 демонстрирует использование данной функции.

Поиск файлов по шаблону: шест.4E и шест.4F Данные функции аналогичны функциям шест. 11 и 12 базовой версии DOS. Функция 4E используется для начала поиска в ог лавлении, а функция 4F - для продолжения. Для начала поиска в регистр DX необходимо загрузить адрес ASCIIZ-строки, содер жащей имя пути доступа и шаблон поиска. Шаблон поиска может включать в себя символы ? и *. В регистре CX должно быть значение атрибута в любой комбинации битов (нормальный, оглавление, спрятанный или системный).

MOV AH,4EH ; Запрос на начало поиска MOV CX,00H ; Нормальный атрибут LEA DX,PATHNM1 ; ASCIIZ-строка INT 21H ; Вызов DOS

Если операция находит файл, удовлетворяющий шаблону поиска, то в текущий буфер DTA в FCB заполняется следующей информацией:

00 - резервировано DOS для последующего поиска 21 - атрибут файла 22 - время файла 24 - дата файла 26 - размер файла: младшее слово, затем старшее слово 30 - имя и тип в виде 13-байтовой ASCIIZ строки, завершаемой шест.00.

В случае ошибки в регистре AX возвращается код 02 (не найдено) или 18 (нет больше файлов). Для продолжения поиска файлов (после функции шест.4E) используется функция 4F. Между этими функциями не следует нарушать содержимое DTA.

MOV AH,4FH ; Запрос на продолжение поиска INT 21H ; Вызов DOS

Единственно возможный код в регистре AX - 18 (нет больше файлов). Обе рассмотренные функции не меняют состояние флага CF.

Переименование файла: шест. 56

Ассемблер для IBM PC. Глава 17. 11

Для переименования файла используется функция шест.56. При этом в регистр DX должен быть загружен адрес ASCIIZ- строки, содержащей старые значения дисковода, пути доступа, имени и типа файла, а в регистр DI (в действительности ES:DI) - адрес ASCIIZ-строки, содержащей новые значения дисковода, пути доступа, имени и типа файла. Если указыва ется номер дисковода, то он должен быть одинаков в обоих строках. Путь доступа может быть различным, поэтому данная операция может не только переименовывать файл, но и перено сить его в другое подоглавление.




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