
- •Обработка прерываний
- •Обработка прерывания
- •Изменение вектора прерывания
- •Функция 35h
- •Дополнительные сведения о структуре doSиBios Прямое обращение к видеопамяти
- •Буфер клавиатуры
- •Пример выполнения работы
- •Варианты заданий
- •Вопросы по теме
- •Лабораторная работа № 2.
- •Функция 0ен
- •Функция 3dн Открывает хендл (открывает файл) на диске
- •Функция 3ен
- •Функция 3fh
- •Функция 40н
- •Функция 41н
- •Функция 42н
- •Функция 43h
- •Функция 47н
- •Функция 4ен
- •Функция 4fh
- •Функция 56н
- •Функция 57н
- •Функция 5ан
- •Прерывание 25н
- •Прерывание 26н
- •Пример выполнения работы Создать новую директорию new_dir на диске а:, сделать ее текущей, записать туда файл newfile.Txt и в него записать сообщение - "Это вновь созданный файл".
- •Порядок выполнения работы
- •Вопросы по теме работы
- •Лабораторная работа № 3
- •Основные сведения
- •Функция Назначение
- •Функция 00н
- •Функция 01h
- •Функция 02h
- •Функция 03h
- •Пример выполнение работы
- •Контрольные вопросы
- •Лабораторная работа № 4 Таймер и генерация звука.
- •Форматы управляющих команд таймера.
- •Использование каналов в ibm pc.
- •Генерация звука.
- •Частоты нот для второй октавы
- •Варианты заданий.
- •Вопросы по теме работы.
Вопросы по теме
В чём суть концепции прерывания?
Как работает система прерывания по вектору?
В чём отличие команд 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.
Если файл с таким именем существует то его длина сбрасывается в ноль. Если файл с таким именем не существует, то его функция создаёт его и присваивает ему атрибут.