Л7 Прерывания в ЭВМ
.pdfЛЕКЦИЯ 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