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

Практическая работа №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. В области памяти, выделяемой программе, имеется три основных сегмента:

  1. Сегмент кода содержит машинные команды, которые будут выполняться. Первая выполняемая команда находится в начале кодового сегмента и операционная система для выполнения программы передает управление по адресу данного сегмента.

  2. Сегмент данных содержит данные и рабочие области, необходимые программе.

  3. Сегмент стека содержит адреса для возврата в операционную систему и для возврата из программ в главную программу.

Особенность регистров общего назначения заключается в том, что возможна их адресация как в целом (т.е. одним словом), так и каждой однобайтовой части (например, 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 , предназначенных для работы с файлами и дисками. Процедуры Паскаля, использующие все эти низкоуровневые операции, дают гораздо более удобные и безопасные способы их выполнения.

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