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

Получить полный путь



Получить полный путь

Вход: АН = 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

Данная функция работает очень принмитивно — при указании имени файла или относительного пути (с символами *«.» и «..») она не проверяет его существование, а лишь добавляет к нему имя тсекущего диска и каталога. Поэтому при использовании этой функции требуютсяя другие средства, позволяющие контролировать реальное наличие файла или шути на диске.



Содержание раздела