
Практическая работа №2 Тема: Обработка и генерация прерываний.
Цель: студент должен уметь:
-
пользоваться инструментальными средствами операционной системы;
знать:
-
принципы построения, типы и функции операционных систем;
-
операционное окружение;
-
машинно-независимые свойства операционных систем.
Теоретическая часть
Операционная система управляет программами, периферийными устройствами, словом, всем. Важную роль здесь играют прерывания. Прерывание представляет собой сигнал процессору, вырабатываемый программой, каким-либо устройством или самим процессором. Этот сигнал приостанавливает выполнение программы и запускает соответствующую функцию операционной системы для выполнения необходимых системных действий. Необходимость прерываний вызвана двумя причинами – специальными запросами на выполнение системных действий, например по вводу и выводу данных, а также возникновением ошибок при выполнении программ. Прерываниям присваиваются номера, например $10. Прерывания от $1F включительно зарезервированы для BIOS, а начиная с $20 до $62 - для операций MS-DOS. Прерывания хранятся в специальной таблице прерываний. В таблице 1 приведен перечень некоторых прерываний.
Таблица 1.
Прерывание |
Владелец |
Назначение |
$00 |
BIOS |
Прерывание из-за ошибки деления на нуль |
$04 |
BIOS |
Прерывания из-за переполнения при умножении |
$05 |
BIOS |
Функция печати копии экрана |
$06 |
BIOS |
Исключительная ситуация «неопределенный код операции» |
$07 |
BIOS |
Исключительная ситуация «код операции ESC» |
$10 |
BIOS |
Обслуживание видеокарты |
$11 |
BIOS |
Список установленного оборудования |
$12 |
BIOS |
Размер памяти |
$13 |
BIOS |
Обслуживание дискового ввода- вывода |
$14 |
BIOS |
Обслуживание последовательного ввода вывода |
$16 |
BIOS |
Обслуживание ввода- вывода с клавиатуры |
$17 |
BIOS |
Обслуживание принтера |
$19 |
BIOS |
Программа начальной загрузки системы |
$1A |
BIOS |
Обслуживание системного таймера и часов |
$1B |
BIOS |
Клавиши Control-Break |
$1C |
BIOS |
Часы таймера пользователя |
$21 |
MS-DOS |
Вызов функции MS-DOS |
$22 |
MS-DOS |
Адрес завершения программы |
$23 |
MS-DOS |
Адрес выхода Control-C |
$24 |
MS-DOS |
Адрес аварийного завершения из-за фатальной ошибки |
$25 |
MS-DOS |
Функция чтения по абсолютному адресу на диске |
$26 |
MS-DOS |
Функция записи по абсолютному адресу на диске |
$27 |
MS-DOS |
Функция «завершить и оставить резидентной» |
В Паскале есть две процедуры для прямого обращения к функциям MS-DOS и BIOS -MSDos и Intr. Прерывания зависят от состояния регистров центрального процессора и заносят в эти регистры результат своей работы. Регистр – это внутреннее запоминающее устройство процессора для временного хранения обрабатываемой или управляющей информации. В модуле System имеется специальный тип Registers, который описывается следующим образом:
type
Registers = record
сase Integer of
0: (AX, BX, CX, BP, SI, DI, DS, ES, Flags: Word);
1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);
end;
тип Registers представляет собой запись, состоящую только из вариативной части. В табл. Дан список регистров процессора 80х86.
Таблица 2.
Регистры общего назначения |
|
Регистры данных (16-битные = 8 + 8 бит) |
|
Регистр |
Назначение |
AX = AH AL |
Сумматор |
BX = BH BL |
Базовый (индексный) регистр |
CX = CH CL |
Счетный регистр |
DX = DH DL |
Регистр данных |
Индексные регистры и регистровые указатели (16 бит) |
|
Регистр |
Назначение |
SP |
Указатель стека |
BP |
Указатель базы регистра |
SI |
Регистр- индекс источника |
DI |
Регистр- индекс назначения |
Сегментные регистры (16 бит) |
|
Регистр |
Назначение |
CS |
Сегмент кода |
DS |
Сегмент данных |
SS |
Сегмент стека |
ES |
Дополнительный сегмент |
Регистр командного указателя (16 бит) |
|
IP |
|
Флаговый регистр |
Сегментом называется область памяти размером 64 Кбайт, которая начинается по любому адресу, кратному 16. В области памяти, выделяемой программе, имеется три основных сегмента:
-
Сегмент кода содержит машинные команды, которые будут выполняться. Первая выполняемая команда находится в начале кодового сегмента и операционная система для выполнения программы передает управление по адресу данного сегмента.
-
Сегмент данных содержит данные и рабочие области, необходимые программе.
-
Сегмент стека содержит адреса для возврата в операционную систему и для возврата из программ в главную программу.
Особенность регистров общего назначения заключается в том, что возможна их адресация как в целом (т.е. одним словом), так и каждой однобайтовой части (например, AL- младшая половина, а AH – старшая половина). Регистр AX является сумматором и применяется для всех операций ввода – вывода, некоторых арифметических и строковых операций. Регистр BX может использоваться для расширенной адресации и вычислений. Регистр CX необходим для управления числом повторений циклов и операций сдвига. Регистр DX применяется для некоторых операций ввода- вывода и тех арифметических операций над большими числами, которые используют два регистра DX:AX. Регистровые указатели SP и BP обеспечивают системе доступ к данным в сегменте стека, реже они используются для вычислений. Индексные регистры SI (индекс источника) и DI (индекс назначений) могут применяться для расширенной адресации и операций сложения и вычитания. Регистр командного указателя содержит смещение указателя на команду, которая должна быть выполнена.
Флагом называют признак, установленный программно с целью указания особенностей выполнения стандартных операций,- это одноразрядный индикатор, отражающий выполнение или невыполнение определенного условия.
Процедуры, предназначенные для работы с регистрами процессора и прерывания MSDos и Intr модуля DOS:
Procedure MSDos (var regs: Registers);
Procedure Intr (number : Byte ; var regs: Registers);
Процедура Intr предназначена для обращения к прерыванию с указанным номером (первый параметр). Перед выполнением прерывания процедура загружает регистры процессора значением соответствующих полей записи regs. После выполнения прерывания содержимое этих регистров вновь записывается в соответствующую переменную. Процедура MSDos эквивалентна вызову процедуры Intr для прерывания $21.
Для прерывания $21 имеется несколько сотен функций MS-DOS , предназначенных для работы с файлами и дисками. Процедуры Паскаля, использующие все эти низкоуровневые операции, дают гораздо более удобные и безопасные способы их выполнения.
К работе с прерываниями следует прибегать, если в этом действительно есть необходимость. Это потенциально опасно, так как функции напрямую обращаются к операционной системе и выполняют системные операции. Неаккуратное обращение с ними может привести к потере части информации на дисках, и другим неприятным последствиям.