Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка1.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

6.2.5. Функции для работы с каталогами

Функции для работы с каталогами выполняют такие операции, как создание и удаление каталогов, а также получение и установка текущего каталога.

6.2.5.1. Функция 39h

Назначение: создание каталога. Действие функции аналогично команде DOS «MKDIR». Для выполнения функции в регистровую пару DS:DX необходимо занести адрес ASCIIZ-строки с именем создаваемого каталога. ASCIIZ-строка может включать существующий путь. Функцией 39H можно создать каталог только в уже существующем каталоге, т. е. эта функция не может создать сразу дерево несуществующих каталогов. ASCIIZ-строка для функции 39H может иметь максимум 64 символа (не включая признак конца строки). Если в пути не указана буква диска, то каталог создается на текущем диске. То же относится и к пути каталога.

Пример использования функции 39H:

DirName DB ‘c:\games’,0 ; имя создаваемого каталога

. . .

MOV AH, 39H

MOV DX, OFFSET DirName ; ASCIIZ-строка

INT 21H

6.2.5.2. Функция 3ah

Назначение: удаление пустого каталога. Действие функции аналогично команде DOS «RMDIR». Для выполнения функции в регистровую пару DS:DX необходимо занести адрес ASCIIZ-строки с именем удаляемого каталога. ASCIIZ-строка для функции 3AH может иметь максимум 64 символа (не включая признак конца строки). Удаляемый каталог также не должен быть текущим и для него не должны быть активными такие программы DOS как JOIN и SUBST.

Пример использования функции 3AH:

DirName DB ‘c:\games’,0 ; имя удаляемого каталога

. . .

MOV AH, 3AH

MOV DX, OFFSET DirName ; ASCIIZ-строка

INT 21H

6.2.5.3. Функция 47h

Назначение: получение текущего каталога для указанного или текущего диска. Для выполнения функции регистровая пара DS:SI должна содержать адрес области памяти, куда функция 47H занесет значение текущего каталога в формате ASCIIZ. Регистр DL должен содержать номер диска: 0 – текущий, 1 – A, 2 – B и т. д. Область памяти, куда заносится имя текущего каталога, должна быть достаточно большой, чтобы содержать пути максимальной длины.

Пример использования функции 47H:

CurDir DB 256 DUP (?) ; область памяти

. . .

MOV AH, 47H

MOV DL, 3 ; диск ‘C:’

MOV SI, OFFSET DirName ; адрес области памяти

INT 21H

6.2.5.4. Функция 3bh

Назначение: установка текущего каталога. Действие функции аналогично команде DOS «CHDIR». Для выполнения функции регистровая пара DS:SI должна содержать адрес ASCIIZ-строки, определяющей значение текущего каталога. ASCIIZ-строка также может содержать букву диска, для которого устанавливается текущий каталог. Если буква диска не указана, используется текущий диск. Максимальный размер ASCIIZ-строки – 64 символа, не включая признак конца строки.

Пример использования функции 3BH:

CurDir DB ‘c:\games’,0 ; значение текущего каталога

. . .

MOV AH, 3BH

MOV DX, OFFSET DirName ; ASCIIZ-строка

INT 21H

6.2.6. Поиск файлов по шаблону

DOS включает две функции, с помощью которых можно искать файлы по заданному шаблону. Шаблон представляет собой ASCIIZ-строку, которая может содержать букву диска, путь и шаблон имени файла. Шаблон имени файла – такой же, как и для команды DOS «DIR».