Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функция 3AH. Функция 47H. Функция 3BH. 9.4 Поиск файлов по шаблону. Функция 4EH. Функция 4FH




Функция 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

 

Функция 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

Функция 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

 

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

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

 

Функция 4EH

Назначение: поиск первого файла по шаблону. Для выполнения этой функции в регистровой паре DS: DX необходимо указать адрес ASCIIZ-строки, содержащей шаблон, а в регистре CX – атрибут, с которым будут искаться файлы (табл. 12). Также для выполнения функции 4EH нужно установить адрес так называемой области передачи данных. Применительно к функции 4EH эта область содержит значения, необходимые для дальнейшего поиска файлов. Для того чтобы установить адрес области передачи данных необходимо в регистровую пару DS: DX занести требуемый адрес, и вызвать функцию 1AH прерывания DOS 21H. В качестве области передачи данных можно использовать область памяти, отведенную под командную строку (она начинается по смещению 0080H от начала префикса программного сегмента). Таким образом, для установки адреса области передачи данных в регистр DS можно занести сегмент префикса программного сегмента, а в регистр DX – смещение 0080H, а затем вызвать функцию 1AH прерывания DOS 21H.

Если файл по указанному шаблону не найден, функция 4EH устанавливает флаг CF и записывает в регистр AX значение кода ошибки 18 (нет больше файлов). Если файл найден, то область передачи данных заполняется структурой, значения полей которой представлены в табл. 13.

Поля этой структуры можно использовать для получения информации о найденном файле. Для проведения аналогии, можно отметить, что функция 4EH выполняет такие же действия, что и процедура FindFirst библиотеки DOS языка Паскаль. Функция 4EH обычно всегда используется совместно с функцией 4FH, как будет рассмотрено далее.

 

Таблица 13

Поля структуры области передачи данных

Смещение (десятичное) Размер поля (в байтах) Описание
Зарезервировано DOS для последующего поиска
Атрибут файла
Время файла
Дата файла
Размер файла
Имя и расширение в виде ASCIIZ-строки

 

Пример использования функции 4EH (для программы типа COM):

Template DB ‘c: \games\*. *’, 0; шаблон для поиска

. . .         

MOV AX, CS           ; настройка DS

MOV DS, AX           ; на префикс программного сегмента

MOV DX, 0080H   ; настройка DX на

                             ; область передачи данных

INT 1AH                   ; установка текущей

                             ; области передачи данных

MOV AH, 4EH    ; функция поиска первого файла

MOV DX, OFFSET Template

MOV CX, 0        ; нормальный атрибут

INT 21H

Функция 4FH

Назначение: поиск следующего файла по шаблону. Для выполнения этой функции регистровая пара DS: DX должна содержать адрес области передачи данных, заполненной функцией 4EH. Если следующий файл по шаблону не найден, функция 4FH устанавливает флаг CF и записывает в регистр AX значение кода ошибки 18 (нет больше файлов). Если файл найден, то область передачи данных заполняется новыми данными о найденном файле.

Пример использования функции 4FH (для программы типа COM):

MOV AX, CS           ; настройка DS

MOV DS, AX           ; на префикс программного сегмента

MOV DX, 0080H   ; настройка DX на

                            ; область передачи данных

MOV AH, 4FH         ; поиск следующего файла по шаблону

INT 21H

Функция 4FH выполняет такие же действия, что и процедура FindNext библиотеки DOS языка Паскаль.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...