Меню сайта

Урок 16. Прерывания

Механизм прерываний — существенная частьлюбой вычислительной сис-
— — — темы. -Как мы увидим, он важен и для IBM PC. -Структура прерываний
— — — предоставляет эффективное средство длясвязи устройств вводоа-выво-
— — — да с процессором. — Нам прерывания интересны потому, чтоуправление
— — — прерываниями — прерогативапрограммирования на языке ассемблера. — В
— — — языках высокого уровня отсутствуютсредства для работы с
— — — прерываниями на машинном уровне.

— — — — — Прерывания обычно вызываются внешнимиустройствами. — Прерывание
— — — сигнализирует процесору о необходимостипрервать текущие действия и
— — — ответить внешнему устройству. — В IBM PC клавиатура посылает сигнал
— — — прерывания всякий раз при нажатии любойклавиши. — Прерывание
— — — клавиатуры заставляет процессор прекратитьтекущую деятельность и
— — — считать набранный на клавиатуре символ.

— — — — — Легко понять, за что прерывания получилисвое название. — Преры-
— — — вание сигнализирует о необходимости»прервать» текущее действие
— — — процессора. — Прерывания хороши тем, что избавляют процессор
— — — постоянного контроля за внешнимиустройствами. — Если бы, например,
— — — клавиатура пользователя не вызывалапрерываний, то процессор был бы
— — — вынужден непрерывно проверять клавиатуру,чтобы обнаружить нажатие
— — — клавиши. -Каждая написанная для компьютера программа была бы
— — — вынуждена делать одно и то же, и импришлось бы очень часто
— — — тестировать клавиатуру. — Но наличие прерываний снимают это
— — — требование, и программа может выполнятьсябез постоянного
— — — тестирования клавиатуры. — Каждый раз, как клавиатура получает
— — — какую-либо информацию, она сигнализируетоб этом процессору. — После
— — — того, как микропроцессор удовлетворитзапрос клавиатуры, он может
— — — возобновить нормальный ход выполненияпрограммы.

— — — — — Работа 8088 с прерываниями во многомнапоминает его обращение с
— — — процедурами. — Прерывание не может прекратить работу процессора во
— — — время выполнения команды. — Сначала 8088 закончит выполнение текущей
— — — команды, но следующую ужепроигнорирует. — Вместо ее выполненияпро-
— — — цессор действует так, как будто следующаякоманда была вызовом про-
— — — цедуры. -Он сохраняет адрес очередной команды в стеке и переходит в
— — — специальную процедуру, которую называютпрограммой обработки
— — — прерываний. — Эта процедура содержит команды для работы с вызвавшим
— — — прерывание устройством. — В случае с клавиатурой программа обработки
— — — прерывания считывает символ и сохраняетего для дальнейшего
— — — использования. — После того как она закончит работу с устройством,
— — — происходит возврат в точкупрерывания. — Процессор извлекает из
— — — стека адрес возврата и продолжаетвыполнение программы как будто
— — — ничего не случилось.

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

— — — — — В ходе прерывания 8088 автоматическисохраняет некоторые уста-
— — — новленные программой значения в стек. — В свою очередь, программа
— — — обработки прерываний отвечает засохранение любых других данных,
— — — которые она может изменить во время своеговыполнения. — Эти данные
— — — обычно сохраняются в стеке. — Затем, перед возвращением управления в
— — — прерванную программу, программа обработкипрерывания должна вернуть
— — — измененным данным те значения, которые ониимели в момент
— — — прерывания. — Факт возникновения прерывания должен остаться
— — — «невидимым» для выполняемойпрограммы.

— — — — — Поскольку сигнал прерывания
могут посылатьпроцессору многие
— — — устройстваэ, 8088 имеет механизмориентации прерываний. — Это озна-
— — — чет, что 8088 определяет, какое устройствовызвало прерывание и пе-
— — — редает управление программе обработкипрерывания, соответствующей
— — — этому устройству. — Процессор атоматически управляетветоризацией
— — — зап росов на прерывания. — Программе обработки прерывания не
— — — требуется перед обработкой прерыванияопределять, какое устройство
— — — его вызвало. — Это сокращает время реакции на прерывание и упрощает
— — — программирование прерываний.

— — — — — В программамах встречаются такие участки,выполнение которых не
— — — может быть прервано. — Например, это может быть кусок программы,
— — — который должен выполняться очень быстро,чтобы закончить выполнение
— — — специфической задачи, или момент работы сданными, которые могут
— — — быть изменены программой обработкипрерывания. — В обоих случаях
— — — программа должна иметь возможностьзадержать или предотвратить
— — — прерывания, т.е. — программа должна уметь не допускать возникновения
— — — прерываний во время выполнения такихкритических участков. — — — После
— — — прохождения этих участков программа должнавосстановить способность
— — — системы прерываний вызыватьпрерывания. — Программа не может
— — — отключать прерывания на слишком долгоевремя, иначе с устройством,
— — — запросившим прерывание, может произойтикакая-нибудь неприятность.
— — — Если прерывание клавиатуры не считаетсимвол до того как оператор
— — — нажмет другую клавишу, второй симол можетбыть потерян. — В 8088
— — — имеется возможность блокировать всевнешние прерывания. — IBM PC
— — — имеет более развитую возможность выбирать,каким из устройств можно
— — — вызывать прерывание, а каким нет. — Программа может использовать эту
— — — возможность для выбора наиболее важныхустройств, которым можно
— — — разрешить прерывания, а менее критическимзапретить. — Способы
— — — отключения прерываний мы обсудим вследующих главах.

Категория: Программирование на Ассемблере | Дата: 27.02.13

Меню раздела
Блок