Сборник по задачам и примерам Assembler



         

Получить номер заданного по умолчанию дисковода - часть 3


point_d_cur_name dd d_cur_name

.code

:.....изменим текущий каталог на каталог \tools ...........

Ids dx,point_dname;формируем указатель на строку с именем нового каталога

movah,3bh ;номер функции DOS

int 21h

jc exit :переход в случае ошибки

:----получим текущий каталог......-----.....

Ids si,point_d_cur_name ;формируем указатель на строку с именем нового каталога

mov ah.47h ;номер функции DOS

int 21h

jc exit :переход в случае ошибки

Возвращаемый путь не содержит имени диска и первого символа \.

Последняя проблема, на которой мы остановимся в этом разделе, — проблема поиска файлов. Для поиска в каталогах используется пара функций 4eh и 4fh. В имени искомого файла можно указывать символы шаблона * и ?. Совместное использование функций 4eh и 4fh подчинено следующему алгоритму. Первой вызывается функция 4eh. В качестве параметров ей передаются адрес ASCIZ-строки с путем к искомому файлу и комбинация его атрибутов. Имя файла может быть задано в виде шаблона. В случае успеха (cf=0), то есть при обнаружении первого подходящего шаблону файла, данная функция помещает его имя и расширение в область DTA со смещением leh от ее начала (см. таблицу ниже). Далее можно либо открыть файл, либо продолжить поиск, но уже функцией 4fh. При работе с шаблоном функцию 4fh можно вызывать циклически, до тех пор пока в процессе перебора не будут просмотрены имена всех подходящих файлов. Об этом можно узнать по состоянию флага cf, которое должно стать равным 1 в случае, когда файлов, удовлетворяющих шаблону, в данном каталоге больше нет.

Поиск первого соответствующего шаблону файла

Вход: АН = 4Eh; СХ = атрибуты файла (биты 0 и 5 игнорируются); DS:DX — ASCIZ-имя файла (возможно, с путем к нему и символами шаблона * и ?).

Выход: если CF - 0, то в DTA возвращается блок данных для первого найденно го файла (см. ниже). Если CF - 0, то в АХ - код ошибки: 2 — файл не най" ден; 3 — несуществующий путь; 12h — больше файлов в каталоге нет Область DTA (Data Transfer Area) располагается в префиксе программист




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