Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Л7 Прерывания в ЭВМ

.pdf
Скачиваний:
20
Добавлен:
29.03.2015
Размер:
337.4 Кб
Скачать

ЛЕКЦИЯ 7. ПРЕРЫВАНИЯ В ЭВМ

Новые понятия: прерывание, система прерываний; источники запросов на прерывания, вектор прерываний; код прерываний; команда прерываний; обработчик прерываний; контроллер прерываний

Основные вопросы: 1. Общая характеристика системы прерываний

2.Программные прерывания.

3. Аппаратные прерывания

7.1. Общая характеристика системы прерываний

Прерывание текущей (выполняемой) в процессоре программы – это особая ситуация во время выполнения текущей программы для быстрого перехода к выполнению некоторой срочной программы с возможностью последующего продолжения прерванной программы. К срочным относятся программы, невыполнение которых приведет к потере информации или к фатальным ошибкам в ЭВМ. Список таких ситуаций в ЭВМ известен, но моменты их возникновения относительно текущей программы заранее непредсказуемы. Комплекс программно-аппаратных средств реализации прерываний называют системой прерываний. Параметры и характеристики системы прерываний:

1)Тип прерываний программный или аппаратный. Аппаратные прерывания вызываются внешними по отношению к процессору сигналами запросов на прерывания, которые формируются в схемах устройств ЭВМ при возникновении определенных событий. При программных прерываниях эти события возникают в процессоре в ходе выполнения команд.

2)Момент прерываний – этап работы процессора, после выполнения которого обрабатывается и обслуживается запрос на прерывание. Для ПЭВМ – это, как правило, команда.

3)Глубина прерываний – число программ, которые могут последовательно прервать друг друга. Для ПЭВМ – одна программа.

4)Время реакции – это интервал времени между моментом появления

запроса на прерывание

и началом выполнения прерывающей

программы.

 

5)Система приоритетов между источниками аппаратных прерываний – это правила выбора одного источника сигнала запрос на прерывание из всех источников, одновременно подавших такие сигналы.

7.2. Программные прерывания

Программные прерывания чаще всего вызываются специальными командами, которые программист ставит в нужных точках программы. Их используют для упрощения обращений к периферийным устройствам через порты, контроллеры, адаптеры. Программные прерывания обслуживаются операционной системой и имеют формат: INT <вектор прерываний >. Целью команды, как указывалось выше, является вызов определенной

1

программы, обслуживающей запрос от известного системе источника. Программу называют обработчиком прерываний. Выполнение команды прерываний и состоит в следующем:

-сохранении содержимого нескольких регистров процессора, прежде всего, счетчика команд, на время выполнения программы-обработчика прерываний;

-формировании адреса обработчика прерываний и загрузки его в

счетчик команд;

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

Основные команды прерываний приведены в табл. 7.1.

Таблица 7.1.

Команды прерываний

Формат команды

Назначение команды

INT <код_прерывания>

Выполнить прерывание

IRET

Вернуться из прерывания

В команде INT код > позволяет найти в ОЗУ полный указатель на обработчик прерываний, т.е. на ячейку, хранящую 2 слова, а именно: адрес сегмента и адрес смещения обработчика прерываний. Всего номеров 257. Хранения полных указателей всех возможных обработчиков прерываний требует ОЗУ размером 256 x 4 байт = 1024 байт, где 4 байта – размер полного указателя. Часть памяти ОЗУ, хранящая адреса всех обработчиков прерываний, называется таблицей векторов прерываний.

При исполнении команды INT сначала содержимое регистров CS, IP и F сохраняется в стеке, а в разряды флагов I и F заносится 0, так как система прерываний МП одноуровневая. Из кода прерывания, содержащегося в команде в Ргком МП, формируется адрес смещения в нулевом сегменте памяти. Этот адрес будет загружен в регистры CS и IP. В результате этого процессор начинает исполнять прерывающую программу. Любая прерывающая программа должна закончиться командой IRET, по которой из стека возвращаются CS и IP, а также регистр флагов. В результате этого МП возвращается на прерванную программу.

Схема исполнения команды INT приведена на рис. 7.2.

С помощью команд INT программист легко обращается к любым аппаратным средствам ЭВМ, вместо того, чтобы писать сложные программы обращения к ПУ.

Вся область прерываний составляет 256 номеров и делится на 2 части:

1.От 0.до.20h - для BIOS IBM PC.

2.От 21h…и далее – для MS DOS.

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

2

выбирает программист. Номер этой функции надо программным путем

загрузить в регистр МП с именем АН.

Это обеспечивается включением

в текст программы до команды INT команды

MOV AH, <код функции>.

 

ОЗУ

ОЗУ

 

 

Рис. 7.1.- Схема выполнения команды INT

В

табл. 7.2

приведены

примеры

прерываний

для управления

клавиатурой и экраном.

 

 

 

 

 

 

 

Таблица 7.2

 

Примеры прерываний

 

 

 

 

 

 

 

Код

Код

Выполняемое

действие

Входные

 

Выходные

прерыва

функции

подпрограммы

 

 

регистры

 

регистры

ния

 

 

 

 

 

 

 

 

INT 16h

00

Чтение

символа

с

-

 

AL - ASCII

 

 

клавиатуры

 

 

 

 

 

код

 

 

 

 

 

 

 

 

AH - scan код

INT 21 h

0A

Чтение строки

символов

с

DS:DX

 

-

 

 

клавиатуры

 

 

 

 

 

 

 

00

Установка видеорежима

 

AL - режим;

 

INT 10h

02

Установка позиции курсора

DX-координаты

 

 

 

 

 

 

 

позиции

 

 

INT 21h

02

Вывод символа на экран

 

AL - код ASCII

 

 

 

 

 

 

 

символа

 

 

INT 21h

09

Вывод строки

 

 

DS:DX -

адрес

 

 

 

 

 

 

 

строки

 

 

 

 

 

 

 

 

 

 

 

Пример использования команды прерывания во фрагменте программы на языке Assembler МП IBM PC для вывода на экран строки символов приведен ниже. В результате исполнения трех последних команд строка символов: Введите элементы массива, описанная в сегменте данных по правилам языка Assembler, будет выведена на экран.

3

;сегмент данных

Dat segment

string ‘Введите элементы массива’, ’$’

Dat ends

; сегмент кода lea dx, string mov ah, 09h int 21h

7.3. Аппаратные прерывания.

Источниками аппаратных прерываний являются как порты,

контроллеры и адаптеры, сообщающие о готовности принять/передать машинное слово или о завершении обмена массивом слов, так и другие устройства, требующие выполнения срочной программы, например, таймер, контроллеры памяти и др. Например, таким сигналом НЖМД (винчестер) сообщает процессору об успешном завершении обмена с ОЗУ ЭВМ. Еще пример. Контроллер клавиатуры запрашивает ввод в буфер клавиатуры (часть ОЗУ) кода нажатой клавиши.

В организации аппаратных прерываний важнейшей задачей является определение (идентификация) устройства, выставившего запрос. Возможны 3 метода идентификации аппаратных прерываний:

Множественные линии прерываний, когда каждый запрос от своего источника прерываний (устройства) передается в процессор по своей линии ШУ.

Программная идентификация, при которой каждый запрос от своего источника прерываний (устройства) передается в составе т.н. слова (байта) состояния устройства в процессор по ШД. Процессор программным путем, т.е. поочередно считывая и анализируя слова состояний, выявляет источник прерывания.

Векторное прерывание, при котором устройство - источник прерываний выставляет для процессора на ШД специальное слово, называемое вектором кодом прерываний, который указывает на вектор - адрес программы – обработчика прерываний.

В ПЭВМ наиболее часто использую векторные прерывания. Прием запросов от устройств ЭВМ, выбор приоритетного запроса и выдача вектора прерываний выполняется в специальном контроллере, называемом

контроллер приоритетных прерываний (Кпр). Кпр построен с учетом некоторой системы приоритетов. По этой системе каждому входу запрос назначается номер приоритета в обслуживании. Процессор не может одновременно обслуживать более одного запроса. Поэтому из множества поступивших на его входы запросов из портов (контроллеров, адаптеров ПУ) Кпр выбирает наиболее приоритетный и инициирует работу процессора

4

подачей на его вход сигнала INTR (Запрос на прерывание).

Структуа ЭВМ

с Кпр приведена на рис. 7.2. Сигнал проверяется

в УУ процессора по

завершению

исполнения

очередной

команды.

Если

прерывание в

процессоре

не было запрещено специальной командой, то процессор будет

обслуживать

прерывание. Готовность

к

обслуживанию прерывания

процессор указывает

Кпр сигналом INTA (подтверждения

прерываний).

Кпр,

получив сигнал

INTA, выставляет на ШД в процессор

вектор

прерывания, указывающий на адрес

прерывающей программы в ОЗУ.

После

принятия

процессором вектора прерываний происходят

те же

действия, что и по команде прерываний.

По одному сигналу INT прерывающая программа вызывается один раз, в ходе которой выполняется обмен одним машинным словом.

Рис. 7.2-Контроллер прерываний в структуре ЭВМ

Список рекомендуемой литературы.

1.Цилькер Б.Я. , Орлов С.А. Организация ЭВМ и систем.-Спб.: Питер,

2004.-668 с. Гл. 3, с.144-146, гл. 8, с. 402-403.

2.Архитектура и программирование реального режима микропроцессоров фирмы Intel: Уч. пособие /Сост. Т. К. Щемелева; Перм. техн. ун-т.

Пермь,2001. 96 c. § 7.7.

1)Какая ситуация в ЭВМ называется прерыванием.

2)Что понимается под системой прерываний.

3)Назовите устройства – источники прерываний.

4)Что общего между аппаратными и программными прерываниями.

5)В чем отличия аппаратных и программных прерываний.

6)Что такое вектор прерываний, код прерываний, код функции.

7)Определите, сколько бит содержит код прерываний.

8) Составьте блочную схему

алгоритма выполнения команды

прерываний.

 

9)Составьте блочную схему алгоритма выполнения аппаратного прерывания в ЭВМ.

5