Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

Int 21h ;Вызов dos

Если операция находит файл, удовлетворяющий шаблону поиска, то в

текущий буфер DTA в FCB заполняется следующей информацией:

00 - резервировано DOS для последующего поиска

21 - атрибут файла

22 - время файла

24 - дата файла

26 - размер файла: младшее слово, затем старшее слово

30 - имя и тип в виде 13-байтовой ASCIIZ строки, завершаемой шест.00.

В случае ошибки в регистре AX возвращается код 02 (не найдено) или 18

(нет больше файлов). Для продолжения поиска файлов (после функции шест.4E)

используется функция 4F. Между этими функциями не следует нарушать

содержимое DTA.

MOV AH,4FH ;Запрос на продолжение поиска

Int 21h ;Вызов dos

Единственно возможный код в регистре AX - 18 (нет больше файлов). Обе

рассмотренные функции не меняют состояние флага CF.

Переименование файла: шест.56

-------------------------------

Для переименования файла используется функция шест.56. При этом в

регистр DX должен быть загружен адрес ASCIIZ-строки, содержащей старые

значения дисковода, пути доступа, имени и типа файла, а в регистр DI (в

действительности ES:DI) - адрес ASCIIZ-строки, содержащей новые значения

дисковода, пути доступа, имени и типа файла. Если указывается номер

дисковода, то он должен быть одинаков в обоих строках. Путь доступа может

быть различным, поэтому данная операция может не только переименовывать

файл, но и переносить его в другое подоглавление.

MOV AH,56H ;Запрос на переименование файла

LEA DX,oldstring ;DS:DX

LEA DI,newstring ;ES:DI

Int 21h ;Вызов dos

В случае ошибки регистр AX возвращает коды 03 (путь доступа не

найден), 05 (нет доступа?) и 17 (разные дисководы).

Другие функции DOS, имеющие отношение к дисковым файлам, включают

создание подоглавления (шест.39), удаление элемента оглавления (шест.3A),

изменение текущего оглавления (шест. 3B), управление вводом-выводом для

устройств (шест.44), дублирование файлового номера (шест.45),

принудительное дублирование файлового номера (шест.46), получение

состояния проверки ? (шест.54).

ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ

________________________________________________________________

- Многие функции расширенной версии DOS оперируют с ASCIIZ-строками,

которые содержат путь доступа и завершаются байтом, содержащим шест.00.

- Функции создания и открытия возвращают значение файлового номера,

который используется для последующего доступа к файлу.

- В случае ошибок многие функции устанавливают флаг CF и помещают код

ошибки в регистр AX.

- Как правило, функция создания используется для записи файла, а

открытия - для чтения.

- После того, как файл записан на диск, его необходимо закрыть для

того, чтобы в оглавление были внесены соответствующие изменения.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ

________________________________________________________________

17.1. Какие значения кодов возврата для ситуаций "файл не найден" и

"ошибка файлового номера" ?

17.2. Определите ASCIIZ-строку по имени PATH1 для файла CUST.LST на

дисководе C.

17.3. Для предыдущего файла (п.17.2) напишите команды а) определения

элемента по имени CUSTHAN для файлового номера, б) создание файла, в)

записи файла из области CUSTOUT (128 байт) и г) закрытия файла. Обеспечьте

проверку на ошибки.

17.4. Для файла (п.17.3) напишите команды а) открытия файла и б)

чтения файла в область CUSTIN. Обеспечьте контроль ошибок.

17.5. В каких случаях необходимо закрывать файл, который был открыт

только для чтения ?

17.6. Измените программу на рис.17.4 так, чтобы пользователь мог

вводить с клавиатуры имя файла, который необходимо выдать на экран.

Обеспечьте возможность любого числа запросов и завершение программы только

по пустому запросу, т.е. простому нажатию клавиши Return.