Глава 5. Дисковые накопители.

Раздел 2. Работа с каталогами диска.

5.2.4 Получение/установка текущего каталога.

Текущий каталог это каталог, в котором DOS ищет файл, для которого не указан путь. Если не установлено противного, то текущий каталог является корневым каталогом.

Средний уровень.

Функция 3BH прерывания 21H устанавливает текущий каталог. DS:DX должны указывать на путь к каталогу в стандартном виде и эта строка должна завершаться байтом ASCII 0. Hапример, B:BIRDS\PARROTS\POLLY делает POLLY текущим каталогом. B: может быть опущено, если это текущий накопитель по умолчанию {5.3.1}. Чтобы сделать текущим корневой каталог накопителя A: напишите A:\. В примере текущим каталогом устанавливается POLLY:
;---в сегменте данных
PATH DB 'B:BIRDS\PARROTS\POLLY',0
;---делаем POLLY текущим каталогом
MOV AH,3BH ;номер функции
LEA DX,PATH ;DS:DX должны указывать на путь
INT 21H ;устанавливаем текущий каталог

Чтобы определить какой каталог является текущим надо использовать функцию 47H прерывания 21H. DS:SI должны указывать на область данных размером 64 байта, в которую будет записан путь. В DL указывается накопитель, причем 0 = "по умолчанию", 1 = A, 2 = B и т.д. При возврате функция возвращает строку без имени накопителя. Если был указан несуществующий накопитель, то в AL возвращается код ошибки 15. Строка начинается с имени первого подкаталога цепочки, а не с обратной косой черты. Байт ASCII 0 сигнализирует о конце строки. В данном примере имя текущего каталога присваивается переменной "CURRENT_DIR":
;---в сегменте данных
CURRENT_DIR DB 64 DUP(?)
;---получить текущий каталог
MOV AH,47H ;номер функции
LEA SI,CURRENT_DIR ;указываем на область данных
MOV DL,1 ;накопитель A
INT 21H ;помещает строку по адресу DS:SI


<~-5.2.3 Чтение/изменение подкаталога.
Содержание
5.2.5 Получение/установка времени и даты последнего доступа к файлу.-~>

Сайт управляется системой uCoz