Консультация № 74001
04.02.2007, 02:28
0.00 руб.
0 3 3
Интересует вопрос, как в ассемблере задать имя текущей директории. Будет ли таким имя последней директории, к которой было последнее обращение.

Обсуждение

Неизвестный
04.02.2007, 11:18
общий
это ответ
Здравствуйте, Сиренко Макс!

ОС какая? DOS? Тогда
MOV AH, 3Bh
LEA DX, ASCIIZ-строка с именем каталога в сегменте DS
INT 21h
сменит каталог на указанный.

Узнать, какой каталог текущий:
MOV AH,47h
MOV DL, 0;Номер диска - 0 для текущего, 1 для A, 2 для B и т.д.
LEA SI, буфер, куда будет записано имя текущего каталога
INT 21h

Удачи!
Неизвестный
04.02.2007, 20:08
общий
это ответ
Здравствуйте, Сиренко Макс!

Все зависит от операционной системы. Например, в ДОСе для каждого диска существует своя директория по умолчанию (default directory). Установить ее можно с помощью функции 3bh. Кроме того, можно установить диск по умолчанию (функция 0eh). См. приложение.

В Windows есть функция SetCurrentDirectory. Ей передается один параметр - директория.

Приложение:
; DOSmov ah, 3bhmov dx, mydir ; директорияint 21hmov ah, 0ehmov dl, 2 ; диск 0=A, 1=B, 2=C, ...int 21h ...mydir db ‘c:\test1‘,0
давно
Старший Модератор
31795
6196
06.02.2007, 12:32
общий
это ответ
Здравствуйте, Сиренко Макс!
Текущая директория соответствует той из которой запущена программа.
из уже перечисленных DOS-фунций можно дабавить еще одну 19h
которая позволяет получить номер текущего диска нумерация как в 0eh
47h возвращаемое описание пути не содержит индентификатор диска
и символа "", заканчивается байтом 00h, если текущий каталог корневой то первый байт в буфере будет 00h.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа