Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Механизм прерываний




Лекция 8

Таблица векторов прерываний

Совокупность всех векторов прерываний образует т.н. таблицу векторов прерываний. Таблицы векторов указанных выше МПК относятся к двум разным типам таблиц векторов.

Для таблицы векторов прерываний IBM PC (МПК на основе Intel 80x86, К1810ВМ86) характерно, что каждый вектор представляет собой полный адрес соответствующей ему программы обработки прерываний. Указанная таблица содержит 256 векторов (в т.ч. до 15 аппаратных). Примерный вид таблицы векторов представлен в таблице 4. Область векторов 20h-FFh называется пользовательской, т.е. предназначена для размещения векторов, обслуживающих прерывания от различных дополнительных периферийных устройств. Каждый вектор прерывания состоит из 2-х слов. Первое слово (младший адрес) содержит смещение IP, второе слово (старший адрес) – кодовый сегмент CS адреса программы обработки прерываний. Вектора из таблицы 3 являются частью таблицы 4 векторов для IBM PC.

Таблица 4

Адрес вектора Номер вектора прерываний Источник прерываний Компоненты адреса программы обработки прерывания
0000h 00h   Ошибка деления на 0 IP
CS
0004h 01h   Пошаговый режим IP
CS
0008h 02h   Прерывание от NMI IP
CS
000Ch 03h   Контрольная точка IP
CS
0010h 04h   Переполнение IP
CS
…. …. …. ….. …. …. …. ….
0080h 20h   Пользовательский IP
CS
…. ….. …. …. …. …. …. ….
03FCh FFh   Пользовательский IP
CS

 

Для таблицы векторов прерываний микроконтроллера Siemens SAB C167 характерно, что каждый вектор представляет собой два слова памяти, содержимое которых не регламентировано. Обычно здесь размещают инструкцию безусловного перехода на программу обработки прерывания, предназначенную для обслуживания соответствующего вектора. Таблица векторов для микроконтроллера Siemens SAB C167 содержит 56 векторов, а ее примерный вид представлен в таблице 5.

Таблица 5

Тип прерывания Адрес вектора Номер вектора Прерываний   Источник прерываний
Аппаратный 0000h 00h   Аппаратный перезапуск Программный перезапуск Сторожевой таймер  
0008h 02h   Немаскируемые прерывания
0010h 04h   Переполнение стека (Stack Overflow)  
0012h 08h   Переполнение стека (Stack Underflow)  
0028h 0Ah   Неизвестный код
0040h …. …. …. …. 011Ch 10h ….. ….. ….. ….. 47h Прерывания от внутренних устройств микроконтроллера: таймеров, портов, регистров ввода/вывода  
Программный 00000h …. 01FCh 00h …. 7Fh Команда Trap x, x-номер вектора прерываний

 

В каждой таблице прерываний адрес расположения вектора прерывания связан с его номером соотношением:

Адрес вектора = Номер вектора * Шаг таблицы векторов. В обеих таблицах 4 и 5 шаг таблицы векторов равен 4 (байта).

Механизм прерываний рассмотрим на примере МПК Intel 80x86. На рис. 9 представлена схема взаимодействия процессора, таблицы векторов прерываний и стека.

Стеком называется специально выделяемая при инициализации МПК область ОЗУ, в которой хранятся временные данные по принципу «первый вошел - последний вышел».

Процесс прерывания работы процессора реализован аппаратно и может быть представлен в виде трех шагов.

Шаг 1. В момент прерывания выполнение текущей программы останавливается и в стеке запоминается вектор прерванного процесса. Вектор прерванного процесса – это совокупность содержимого регистра флагов FLAGS и адреса возврата к прерванной точке программы. Адрес возврата равен содержимому счетчика команд IP и регистра кодового сегмента CS на момент прерывания.

Шаг 2. В счетчик команд IP и в регистр кодового сегмента CS заносится содержимое ячеек памяти вектора прерываний, соответствующего номеру возникшего прерывания. В соответствии с новым содержимым регистров IP и CS происходит переход на программу обработки прерывания и начинается ее выполнение.

Шаг 3. По достижении последней команды программы обработки прерываний, которой должна быть команда IRET, происходит перенос вектора прерванного процесса из стека в соответствующие регистры процессора. В результате восстанавливается состояние процессора на момент прерывания и продолжается выполнение прерванной программы.

Следует заметить, что изменение содержимого регистров общего назначения AX, BX,CX,DX в процессе прерывания аппаратно не контролируется. Контроль за сохранностью их содержимого возлагается на программиста и должен осуществляться в ПОП.

 




Поделиться с друзьями:


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


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



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




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