Глава 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 Получение/установка времени и даты последнего доступа к файлу.-~>