Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы СПО / Мет6.doc
Скачиваний:
34
Добавлен:
12.04.2015
Размер:
406.02 Кб
Скачать

4.6. Работа с каталогами

Функции определения текущего каталога возвращают строку с путем в формате ASCIIZ. Строка не содержит имени диска и символов «\» в начале и в конце пути.

Определить текущий каталог

Вход: AH = 47h

DL = номер диска (00h – текущий, 01h – A: и т.д.)

DS:SI = буфер для текущего пути (64 байта)

Выход: CF = 1, если ошибка, код в AX (0Fh – неверный номер диска)

Определить текущий каталог с длинным именем

Вход: AX = 7147h

DL = номер диска (00h – текущий, 01h – A:,

DS:SI = буфер для пути (обычно 260 байт)

Выход: CF = 1, если ошибка, код в AX (0Fh – неверный номер диска)

Определить текущий диск

Вход: AH = 19h

Выход: AL=номер диска (0=A, 1=B, 2=C и т.д.)

Для преобразования номера диска в символ прибавить ‘A’ (65h).

Функции смены текущего каталога получают имя нового каталога в ASCIIZ строке, адрес которой передается в DS:DX. Если имя диска отсутствует, то принимается текущий диск. Для перехода на один уровень вверх вместо имени каталога указывается «..».

Установить текущий каталог

Вход: AH = 3Bh

DS:DX = строка с путем, который должен стать текущим

Выход: CF=0 – текущий каталог изменен

CF = 1, если ошибка, код в AX (03h – путь не найден)

Установить текущий каталог с длинным именем

Вход: AX = 713Bh

DS:DX = строка с путем, который должен стать текущим

Выход: CF=0 – текущий каталог изменен

CF = 1, если ошибка, код в AX (03h – путь не найден)

Установить текущий диск

Вход: AH = 0Eh

DL = номер диска (0=A, 1=B, 2=C и т.д.)

Выход: AL=общее количество дисков в системе (фактически установленных и потенциально возможных, как диск В:

в системе с одним FDD)

Если в DL указан диск, к которому нет доступа (например, не вставлена дискета или CD-ROM, вызывается критическая ошибка INT 24h).

Функции создания, перемещения и удаления файлов не применимы к каталогам. Для подобных операций над каталогами существуют специальные функции.

Создать каталог DOS

Вход: AH = 39h

DS:DX = адрес ASCIIZ строки с путем (до 64 байт)

Путь должен содержать имя диска (или первым символом обозначение корневого каталога «\»), уже существующие каталоги и оканчиваться именем каталога, который требуется создать (символ «\» в конце пути не нужен). Если диск не указан, путь отсчитывается от текущего каталога.

Выход: CF=0, если каталог создан;

CF=1, если ошибка, код в AX (03h – путь не найден,

05h – доступ запрещен)

Ошибка с кодом 05h возвращается, если каталог с указанным именем уже существует.

Создать каталог с длинным именем

Вход: AX = 7139h

DS:DX = адрес ASCIIZ строки с путем (до 260 байт)

Выход: CF=0, если каталог создан;

CF=1, если ошибка, код в AX (03h – путь не найден,

05h – доступ запрещен/каталог уже существует)

Функции удаления каталогов удаляют только пустые каталоги. В противном случае они возвращают ошибку с кодом 05h (доступ запрещен).

Удалить каталог DOS

Вход: AH = 3Ah

DS:DX = адрес ASCIIZ строки с путем (до 64 байт)

Последний каталог из пути будет удален (символ «\» в конце пути не указывается).

Выход: CF=0, если каталог удален;

CF=1, если ошибка, код в AX (03h – путь не найден,

05h – доступ запрещен, 10h – попытка удалить текущий каталог)

Удалить каталог с длинным именем

Вход: AX = 713Ah

DS:DX = адрес ASCIIZ строки с путем.

Последний каталог из пути будет удален (символ «\» в конце пути не указывается).

Выход: CF=0, если каталог удален;

CF=1, если ошибка, код в AX (03h – путь не найден,

05h – доступ запрещен, 10h – попытка удалить текущий каталог)

Соседние файлы в папке Лабы СПО