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

Вопросы по теме

В чём суть концепции прерывания?

Как работает система прерывания по вектору?

В чём отличие команд retиiret?

Какие способы получения/изменения вектора прерывания Вы знаете?

Как вызвать программное прерывание?

Какие существуют способы передачи параметров в подпрограмму обработки прерываний и возврата параметров из неё?

Какие действия производит процессор при получения запроса на прерывание?

В чём отличие команд callиint?

Лабораторная работа № 2.

Управление файловой и каталоговой системами в DOS.

Основные сведения.

Программные прерывания и системные вызовы.

В данной работе будут описаны функции прерывания DOS 21H и прерывания 25h, 26h, относящиеся к работе с дисками. Хендлом (handle) или логическим номером файла называется 16 – битовый номер, возвращаемый DOS при открытии файла. При дальнейших действиях система пользуется для идентификации только этим хендлом. В ранних версиях DOS при работе с файловой системой может встретиться понятие управляющего блока файла (fcb), который представляет собой буфер, для записи основных данных о файле при его открытии. Этот буфер, находился в программе, которая открывала файл. Хендл полностью заменяет fcb и требует для хранения всего одно слово. Каждому файлу ставится в соответствие набор атрибутов, определяющих поведение функции.

Атрибуты файла.

Код

Описание

00h

Нормальный, можно читать и записывать без ограничений.

01h

Только для чтения, не может быть открыт для записи.

02h

Скрытый, не может найден поиском в каталоге.

04h

Системный, не может быть найден поиском в каталоге.

10h

Подкаталог.

20h

Архив, устанавливается сразу после изменения файла.

Описание функции работы с дисками прерывания DOS 21H.

Для вызова функции прерывания DOS 21H необходимо проделать следующие действия:

  • выбрать функцию, выполняющую требуемые действия;

  • занести номер функции в регистр АН;

  • подготовить другие регистры (если это необходимо);

  • написать команду INT 21H;

  • прочесть результаты или состояние из регистров, указанных в описании данной функции.

Ниже следует описание функции 21H.

Функция 0ен

Выбор текущего дисковода.

*Вход:

АН=0ЕН

DL – номер логического дисковода (0 – А, 1 – В и т.д.)

*Выход:

AL – Количество логических дисководов

*Примечание.

Эта функция используется для смены логического диска. Заданный логический диск становится текущим. Функция применяется перед функцией смены текущей директории, если она расположена на другом диске. Необходимо помнить, DOS для каждого диска хранит текущий каталог и при переходе на данный диск устанавливается его текущая директория.

Функция 1АН

Устанавливает буфер обмена с диском (DTA).

*Вход:

АН=1АН

DS:DX – адрес DTA

*Выход: -

*Примечание.

DX содержит адрес начала буфера для обмена с диском. Эта функция применяется для создания буфера, так как некоторые функции работы с диском предполагают наличие такого буфера. Узнать наличие такого буфера можно функцией 2Fh.

Структура DTA.

Функция 2FH

Получает адрес буфера обмена с диском (DTA)

*Вход:

АН=2FH

*Выход:

ES:BX– адресDTA

Функция 36Н

Определяет параметры диска

*Вход:

АН=36Н

DL – дисковод (0 – текущий, 1 – А и т.д.)

*Выход:

AX – 0FFFh, если несуществующий диск, иначе количество секторов в кластере

BX – число доступных кластеров

СХ – количество байт в секторе

DX – общее количество кластеров на диске

*Примечание.

Функция возвращает информацию, необходимую для подсчёта количества имеющихся байт на диске.

Функция 39Н

Создаёт каталог на диске.

*Вход:

АН=39Н

DS:DX – указатель на маршрут

*Выход:

Флаг переноса установлен:

АХ=2 – файл не найден

=3 – маршрут не найден

=5 – нет доступа

Флаг переноса сброшен: нет ошибок

*Примечание.

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

path_1 db”a:\user1”,0.

Функция 3АН

Удаляет каталог с диска

*Вход

АН=3АН

DS: DX – указатель на маршрут

*Выход:

Флаг переноса установлен:

АХ=2 – файл не найден

=3 – маршрут не найден

=5 – нет доступа

=16 – текущий каталог

Флаг переноса сброшен: нет ошибок

*Примечание.

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

path_1 db”a:\user1”,0.

Функция 3ВН

Меняет текущий каталог на заданный

*Вход:

АН=3ВН

DS:DX – указатель на маршрут

*Выход:

Флаг переноса установлен:

АХ=2 – файл не найден

=3 – маршрут не найден

=5 – нет доступа

Флаг переноса сброшен: нет ошибок

*Примечание.

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

path_1 db”a:\user1”,0.

Функция 3СН

Создаёт хендл (новый файл) на диске

*Вход:

АН=3СН

DS:DX – указатель на маршрут

СХ – атрибут файла

*Выход:

Флаг переноса установлен:

АХ=2 – файл не найден

=3 – маршрут не найден

=4 – слишком много открытых файлов

=5 – нет доступа

Флаг переноса сброшен:

АХ – хендл

*Примечание.

DX должен содержать смещение строки, указывающей маршрут подкаталога. Маршрут представляет собой строковую переменную, задающую маршрут и имя файла и завершающий нуль, например,

path_1 db”a:\user1\lab0.txt”,0.

Если файл с таким именем существует то его длина сбрасывается в ноль. Если файл с таким именем не существует, то его функция создаёт его и присваивает ему атрибут.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]