Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Организация прерываний

 

Передача данных с прерыванием программы особенно удобна при работе с низкоскоростными ВУ (принтерами и т. п.), а также в ситуациях, когда момент передачи данных в ЭВМ непредсказуем, например при работе с каналами связи. Основной характерной чертой рассматриваемой передачи является то, что обмен данными между ЭВМ и ВУ инициируется сигналом с ВУ. Для реализации данного типа обмена необходимо заменить программный цикл ожидания готовности ВУ при асинхронной передаче (TSF, BR) аппаратной проверкой наличия внешнего прерывания, т. е. сигнала готовности по линии «Запрос прерывания» (см. рис. 1).

В этом случае ЭВМ может выполнять любую программу (будем называть ее основной), а когда с ВУ поступит запрос прерывания (запрос на передачу или прием данных), приостановить (прервать) выполнение этой программы на время осуществления обмена данными. Все действия по приостановке программы и переходу к подпрограмме обмена реализуются в базовой ЭВМ с помощью контроллера прерываний, входящего в состав устройства управления (см. рис. 1).

По командам «Разрешение прерывания» (Е1) или «Запрещение прерывания» (D1) контроллер прерываний переходит в одно из двух состояний, в которых он соответственно реагирует или не реагирует на сигналы готовности ВУ, передаваемые по линии «Запрос прерывания». Если контроллер установлен в состояние разрешения прерывания, то последовательность шагов по осуществлению рассматриваемой передачи данных обычно имеет такой вид.

Шаг 1. По завершении выполнения текущей команды основной программы управление передается контроллеру прерывания. Если в этот момент на линии «Запрос прерывания» нет сигнала о единичном состоянии флага какого-либо из ВУ, то начинаются выборка и исполнение следующей команды основной программы и данный шаг повторяется. При наличии запроса прерывания от ВУ выполняется второй шаг.

Шаг 2. Контроллер прерываний переходит в состояние запрещения прерывания, в ячейку памяти с адресом 0 заносится содержимое счетчика команд (адрес следующей команды основной программы, которая выполнялась бы в отсутствие прерывания), и управление передается команде, расположенной в ячейке 1.

Два последних действия имитируют выполнение команды «Обращение к подпрограмме» (JSR 0), которая, как бы вставлена между только что выполненной и следующей командами основной программы. Такую подпрограмму, текст которой должен написать сам пользователь, обычно называют подпрограммой обработки или обслуживания прерываний. Она всегда начинается в ячейке с адресом 1 (в ячейке 0 хранится адрес возврата из подпрограммы) и может иметь самый различный характер в зависимости от набора ВУ, подключенных к ЭВМ, и принципов построения основной программы. Чаще всего, однако, это подпрограмма требует использования аккумулятора, и поэтому одним из первых действий является запоминание содержимого аккумулятора и регистра переноса. Затем выясняется источник прерывания (путём опроса флагов определяется ВУ, флаг которого установлен в единичное состояние) и выполняется передача данных. Заканчивается подпрограмма восстановлением содержимого аккумулятора и регистра переноса, разрешением прерывания и выходом из подпрограммы на команду, адрес которой хранится в ячейке 0. Эти функции определяют содержание следующих шагов.

Шаг 3. Производится запоминание в памяти содержимого аккумулятора и регистра переноса. Для этого требуются минимум три команды: пересылка содержимого аккумулятора в специально отведенную буферную ячейку (MOV B1),циклический сдвиг (обычно влево) для того, чтобы содержимое регистра переноса попало в аккумулятор (ROL), и запись этого содержимого в другую буферную ячейку (MOV B2). Таким образом, необходимый минимум информации о прерванной задаче оказывается обеспеченным — в ячейке 0 хранится адрес продолжения задачи, а в буферных ячейках запасены состояния двух других основных регистров машины в момент прерывания.

Шаг 4. Осуществляется поиск источника прерывания. Для этого в любой (наиболее целесообразной) последовательности опрашиваются флаги всех ВУ (команда TSF). При обнаружении ВУ с установленным флагом (флаг=1) выполняется переход к тому участку подпрограммы, в котором описаны действия по обмену информацией между процессором и этим внешним устройством.

Шаг 5. Выполняются передача данных и их предварительная обработка (если это необходимо).

Шаг 6. Восстанавливается содержимое регистра переноса и аккумулятора. Для этого требуются минимум пять команд: очистка аккумулятора (CLA), вызов содержимого буферной ячейки В2 в очищенный аккумулятор (ADD B2), циклический сдвиг вправо для восстановления содержимого регистра переноса (ROR), очистка аккумулятора (CLA) и вызов содержимого буферной ячейки В1 в очищенный аккумулятор (ADD B1).

Шаг 7. Контроллер прерываний вновь переводится в состояние разрешения, и осуществляется возврат к выполнению прерванной (основной) программы. Для этого последовательно выполняются команды Е1 («Разрешение прерывания») и BR (0) — переход к команде с адресом, хранимым в ячейке 0 (см. параграф 2.4). Здесь следует отметить, что команда Е-1 должна обязательно располагаться непосредственно перед командой выхода из подпрограммы — BR (0). Это делается на случай очередного требования прерывания во время обработки рассматриваемого. Если между командами Е1 и BR (0) поместить хотя бы одну команду, то после ее выполнения может произойти переход к обработке прерывания, содержимое ячейки 0 заменится новым адресом возврата, и таким образом путь возвращения к прерванной (основной) программе будет разрушен.

В заключение напомним следующее.

1. С помощью команды D1 контроллер прерываний устанавливается в состояние запрещения прерывания, и ЭВМ не реагирует на запросы обмена от любых внешних устройств. В то же состояние переходит этот контроллер и после нажатия кнопки ПУСК, поэтому для обеспечения обмена по прерыванию программы в последней обязательно должна присутствовать команда Е1 («Разрешение прерывания»).

2. Прерывание программы наступает при наличии следующих условий: контроллер прерываний находится в состоянии разрешения прерывания, появился запрос на прерывание (флаг какого-либо ВУ установился в единичное состояние) и окончилось выполнение любой текущей команды, кроме команд D1 («Запрещение прерывания») и Е1. Если в момент запроса на прерывание исполнялась команда Е1, то состояние прерывания наступит после выполнения следующей за Е1 командой (см. шаг 7).

3. В зависимости от конкретных условий подпрограмма обработки прерываний может иметь любой вид, но она всегда должна начинаться с команды, расположенной в ячейке с адресом 1, и заканчиваться командами Е1 и BR (0), следующими друг за другом. Команда Е1 служит для восстановления состояния разрешения прерывания, которое было автоматически заменено на запрещение прерывания при входе в подпрограмму, для того чтобы во время обработки текущего прерывания ЭВМ не реагировала на последующие.

Пример 3. Составить программу, которая периодически (с периодом в три цикла команды) наращивает на единицу содержимое аккумулятора. Восемь младших разрядов последнего должны выводиться на ВУ-3 по запросу последнего (нажатие кнопки ВВОД N), а по запросу с ВУ-1 код, набранный на его тумблерах, должен помещаться в ячейку с адресом 25.

Основная программа решения такой задачи достаточно проста. Она может начаться с установки разрешения прерывания (Е1) и очистки аккумулятора (CLA). Затем должен быть организован цикл для наращивания на единицу содержимого аккумулятора. Этот цикл может содержать всего две команды: «Инкремент аккумулятора» (INC) и команду безусловного перехода (BR) для возврата к INC. Однако по заданию такой цикл должен состоять из трех команд, и поэтому между INC и BR можно поставить команду NOP («Нет операции»). Подобная программа приведена в табл. 6.

Если команды этой программы занести в память ЭВМ, установить в счетчик команд пусковой адрес 0020 и нажать кнопку ПУСК, то начнет выполняться бесконечный цикл наращивания содержимого аккумулятора. В этом цикле все время будут повторяться команды: INC, NOP, BR 22, INC, NOP, BR 22, INC и т. д. Когда же на пульте управления (см. рис. 3.1) будет нажата любая из трех кнопок (ГОТОВ, ГОТОВ или ВВОД N),то произойдет передача управления команде, расположенной в ячейке 1, а в ячейку 0 будет записан адрес той из вышеперечисленных команд, которая выполнялась бы при отсутствии запроса на прерывание. Так осуществляется переход к подпрограмме обработке прерываний, которая должна быть расположена начиная с ячейки 1.

Таблица 5.Основная программа решения задачи примера 3.


Таблица 6. Первый вариант подпрограммы обработки прерываний для примера 3.


В табл. 6 приведен один из возможных вариантов такой подпрограммы, построенной по стандартной схеме: запоминание содержимого основных регистров (шаг 3), отыскание источника прерывания (шаг 4), передача данных (шаг 5), восстановление содержимого основных регистров (шаг 6) и, наконец, организация выхода из подпрограммы (шаг 7). Подпрограмма предусматривает реакцию не только на запросы от ВУ-1 и ВУ-3, но и на запрос от ВУ-2, который может возникнуть от непреднамеренного нажатия на кнопку ГОТОВ около этого «устройства». В последнем случае производится очистка флага ВУ-2, что эквивалентно отмене непредусмотренного запроса.

Так как индексные ячейки 008—00F часто используются в циклических программах, то их нецелесообразно занимать под команды программы обработки прерываний. Поэтому в примере 3 основной текст такой подпрограммы размещен начиная с ячейки 30, а переход к ней осуществляется по команде BR 30, размещенной в ячейке 001.

Количество команд подпрограммы обработки прерываний может быть существенно сокращено, если учесть особенности решаемой задачи.

1. Накопленное в основной программе содержимое аккумулятора может быть испорчено (заменено на другое значение) лишь во время выполнения операции ввода данных с ВУ-1.

2. При любых (необходимых для решения задачи) взаимодействиях с ВУ-1, ВУ-2 или ВУ-3 содержимое регистра переноса не затрагивается.

Таблица 7. Второй вариант подпрограммы обработки прерываний для примера 3.


3. На ВУ-3 должно выводится накопленное в основной программе содержимое аккумулятора, и оно не может быть испорчено во время этого вывода.

Вариант подпрограммы обработки прерываний, составленный с учетом перечисленных особенностей, приведен в табл. 7. Он короче первого на 10 команд (более чем 30 %-ная экономия).

<== предыдущая лекция | следующая лекция ==>
Асинхронный обмен | Природні загрози (небезпеки). Характеристика небезпечних геологічних процесів і явищ
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 343; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.