Справочник программиста на персональном компьютере фирмы IBM. Дисковые накопители - Получение/установка текущего каталога
ОГЛАВЛЕНИЕ
5.2.4 Получение/установка текущего каталога.
Текущий каталог это каталог, в котором DOS ищет файл, для
которого не указан путь. Если не установлено противного, то теку-
щий каталог является корневым каталогом.
Высокий уровень.
Бейсик устанавливает текущий каталог с помощью команды CHDIR.
За командой должна следовать строка, указывающая путь к каталогу,
на который надо перейти. Строка может содержать до 63-х символов,
включая имя накопителя, и должна быть заключена в кавычки. CHDIR
"C:MAMMALS\PRIMATES\GIBBONS" делает подкталог GIBBONS текущим
каталогом. Чтобы перейти в корневой каталог напишите CHDIR "\"
или CHDIR "B:\".
Бейсик версии 3.0 может сообщать путь к текущему каталогу, как
это делает команда DOS PATH. Просто введите PRINT ENVI-
RON$("PATH").
Средний уровень.
Функция 3BH прерывания 21H устанавливает текущий каталог.
DS:DX должны указывать на путь к каталогу в стандартном виде и
эта строка должна завершаться байтом ASCII 0. Например, 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