Работа с дисками, каталогами и организация поиска файлов
Получить полный путь
Вход: АН = 7160h; CL = 0; СН – содержимое результата (СН = 80 – получить имя диска; СН = 0 – получить полный путь);
DS:SI – адрес ASCIIZ-строки с именем файла или каталога, для которых необходимо получить полный путь. Допускаются оба типа имен – длинные и короткие;
ES:DI – адрес строки, в которую необходимо записать полный путь. Размер буфера должен быть достаточным для размещения пути максимальной длины (функция 71a0h).
Выход: CF = 0 – успешное выполнение функции, в результате чего полный путь от корневого каталога в виде ASCIZ-строки записывается в буфер, адрес которого указан в ES:DI;
CF = 1 – АХ = код ошибки.
;prg07_24.asm – программа демонстрации применения функции 7160h (CL=0) ;прерывания 21h для получения полного пути. .data filename db 'my_file with long name.txt'.O point_fname dd filename PathFull db 260 dup (0) point Path dd PalhFull .code Ids si.pointfname:формируем указатель на имя файла les di,point_Path Нормируем указатель на буфер для полного пути mcvax.7l60h;номер функции DOS movch,80h:CH=80h – получить имя: диска; СН=0 – получить полный путь movCL.O;получить полный путь int 21h jc exit
Данная функция работает очень примитивно – при указании имени файла или относительного пути (с символами *"." и "..") она не проверяет его существование, а лишь добавляет к нему имя текущего диска и каталога. Поэтому при использовании этой функции требуются другие средства, позволяющие контролировать реальное наличие файла или шути на диске.
Получить полный путь с краткими именами (в формате 8.3)
Вход: АН = 7160h; CL = 1; СН – содержимое результата (СН = 80 – получить имя диска; СН = 0 – получить полный путь);
DS:SI – адрес ASCIIZ-строки с именем файла или каталога, для которых необходимо получить путь в короткой форме. Допускаются оба типа имен – длинные и короткие;
ES:DI – адрес строки, в которую необходимо записать полный путь. Размер буфера должен быть достаточным длят размещения пути максимальной длины (функция 71a0h).
Выход: CF = 0 – успешное выполнение функции, в результате чего полный путь от корневого каталога в виде /ASCIZ-строки записывается в буфер, адрес которого указан в ES: DI;
CF = 1 – АХ = код ошибки.
:prg07_25.asm – программа демонстрации применения функции 7160h (CL=1) ;прерывания 21h для получения полного путии с краткими именами (в формате 8.3) filename db 'my_file with lorg name.:.txt'.0 point_fname dd filename PathFUll db 260 аир (О) pointjath dd PathFull * Ids si.pointjfname формирует указатель на имя файла lesdi.point_Path ;сформируем учазатель на буфер для полного пути movax.7160h:номер функции DOS movch.80h;CH"80h – получить имя диска; СН=0 – получить полный путь movCL.l:получить полный путь с краткими именами
На выходе функция формирует строку, содержащую полный путь, причем все длинные компоненты этого пути заменяются их краткими псевдонимами, удовлетворяющими схеме 8.3. Данный вариант функции (при CL = 1) в отличие от ее предыдущего варианта, производит проверку наличия файла или пути.