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

Глава 17 Дисковая память III: Расширенные функции dos

__________________________________________________________________________

Ц е л ь: Ознакомить с расширенными функциями DOS, начиная с версии

2.0 Для обработки дисковых файлов.

ВВЕДЕНИЕ

________________________________________________________________

Функции базовой версии DOS для обработки файлов, показанные в главе

16, Действительны для всех последующих версий dos. В данной главе показаны

ряд расширенных функций, введенных в версиях DOS 2.0 и 3.0 и не

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

операции из данной главы, следует убедиться в наличии необходимой версии

DOS.

Многие из расширенных функций проще своих аналогов в базовой версии

DOS. В руководствах по DOS рекомендуется использовать новые функции,

которые более естественны для систем типа UNIX. Некоторые операции

включают использование строк в формате ASCIIZ для начальной установки

дисковода, пути доступа и имени файла; номера файла для последовательного

доступа к файлу; специальных кодов возврата.

ДАННЫЕ В ФОРМАТЕ ASCIIZ

________________________________________________________________

При использовании многих расширенных функций для дисковых операций

необходимо сообщить DOS адрес строки в формате ASCIIZ, содержащей

идентификацию файла в виде номера дисковода, пути доступа и имени файла

(все параметры необязательные) и строка должна завершаться

шестнадцатеричным нулем, например:

PATHNM1 DB 'B:\TEST.ASM',0

PATHNM2 DB 'C:\UTILITY\NU.EXE',0

Обратная косая (или прямая косая) используются в качестве

разделителя. Нулевой байт (zero) завершает строку (отсюда название ASCIIZ

формата). Для прерываний, использующих в качестве параметра ASCIIZ строку,

адрес этой строки загружается в регистр DX, например, командой LEA

DX,PATHNM1.

ФАЙЛОВЫЙ НОМЕР И КОДЫ ВОЗВРАТА

________________________________________________________________

Операции создания и открытия файла требуют загрузки в регистр AX

двухбайтового числа, представляющего собой файловый номер. В главе 8

показано, что стандартные устройства не нуждаются в операции открытия и

могут использовать непосредственно файловые номера: 0 - ввод, 1 - вывод, 2

- вывод сообщений об ошибках, 3 - внешнее устройство, 4 - принтер.

Для доступа к диску при создании или открытии файла используется

ASCIIZ строка и функции DOS шест.3C или 3D. Успешная операция

устанавливает флаг CF в 0 и помещает файловый номер в регистр AX. Этот

номер необходимо сохранить в элементе данных DW и использовать его для

всех последующих операций над дисковым файлом. При неуспешной операции

флаг CF устанавливается в 1, а в регистр AX помещается код ошибки,

зависящий от операции (см.табл.17.1).

__________________________________________________________________________

01 Ошибка номера функции

02 Файл не найден

03 Путь доступа не найден

04 Открыто слишком много файлов

05 Нет доступа (Операция отвергнута)

06 Ошибка файлового номера

07 Блок управления памятью разрушен

08 Недостаточно памяти

09 Ошибка адреса блока памяти

10 Ошибка оборудования

11 Ошибка формата

12 Ошибка кода доступа

13 Ошибка данных

15 Ошибка дисковода

16 Попытка удалить оглавление

17 Другое устройство ?

18 Нет больше файлов

__________________________________________________________________________

Таб.17.1. Коды ошибок

СОЗДАНИЕ ДИСКОВОГО ФАЙЛА

________________________________________________________________

В последующих разделах раскрыты требования к созданию, записи и

закрытию дисковых файлов для расширенной версии DOS.

Создание файла: Шест.3C

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

Для создания нового файла или переписывания старого файла

используется функция шест.3C. При этом регистр DX должен содержать адрес

ASCIIZ-строки, а регистр CX - необходимый атрибут. Байт атрибут был

рассмотрен в главе 15; для обычного файла значение атрибута - 0.

Рассмотрим пример создания обычного файла:

MOV AH,3CH ;Запрос на создание

MOV CX,00 ; обычного файла

LEA DX,PATHNM1 ;ASCIIZ строка