Функция 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 Поля структуры области передачи данных
Пример использования функции 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|