Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек СРВ от Анн.doc
Скачиваний:
11
Добавлен:
09.11.2019
Размер:
2.26 Mб
Скачать

Лекция 15 Управление прерываниями.

План лекции:

  1. Вектора прерываний

  2. Программирование контроллера прерываний 8259.

  3. Запрет/разрешение отдельных аппаратных прерываний

  1. Вектора прерываний

Прерывания - это готовые процедуры, которые компьютер вызы­вает для выполнения определенной задачи. Существуют аппаратные и программные прерывания. Аппаратные прерывания инициируются аппа­ратурой, либо с системной платы, либо с карты расширения. Они мо­гут быть вызваны сигналом микросхемы таймера, сигналом от принте­ра, нажатием клавиши на клавиатуре и множеством других причин. Аппаратные прерывания не координируются с работой программного обеспечения. Когда вызывается прерывание, процессор оставляет свою работу, выполняет прерывание, а затем возвращается на преж­нее место. Для того, чтобы иметь возможность вернуться точно в нужное место программы, адрес этого места (CS:IP) запоминается в стеке вместе с регистром флагов. Затем в CS-.IP загружается адрес программы обработки прерывания и ей передается управление. Прог­раммы обработки прерываний иногда называют драйверами прерываний. Они всегда заканчиваются инструкцией IRET (возврат из прерыва­ния), которая завершает процесс, начатый прерыванием, возвращая старые значения CS:IP и регистра флагов, давая тем самым програм­ме возможность продолжить выполнение из того же состояния.

С другой стороны, программные прерывания на самом деле ниче­го не прерывают. Это обычные процедуры, которые вызываются нашими программами для выполнения рутинной работы. Однако эти подпрог­раммы содержатся не внутри нашей программы, а в операционной сис­теме, и механизм прерываний дает возможность обратиться к ним. Программные прерывания могут вызываться друг из друга. Например, все прерывания обработки ввода с клавиатуры DOS используют прерывания обработки ввода с клавиатуры BIOS для получения символа из буфера клавиатуры. Необходимо отметить, что аппаратное прерывание может получить управление при выполнении программного прерывания. При этом не возникает конфликтов, т.к. каждая подпрограмма обра­ботки прерывания сохраняет значения всех используемых ею регист­ров и затем восстанавливает их при выходе, тем самым не оставляя следов того, что она занимала процессор.

Адреса программ прерываний называют векторами. Каждый вектор имеет длину 4 байта. В первом слове хранится значение IP (указа­тель команд), а во втором - CS (сегмент команд). Младшие 1024 байта памяти содержат вектора прерываний, т.о., есть место для 256 векторов. Вместе взятые они называются таблицей векторов. Вектор для прерывания 0 начинается с ячейки 0000:0000, для преры­вания 1 - с ячейки 0000:0004 и т. д. Если посмотреть на 4 байта, начиная с адреса 0000:0020, в которых содержится вектор прерыва­ния 8Н (прерывание вектора суток), то можно обнаружить там A5FEOOFO. Имеется в виду, что младший байт слова расположен сна­чала и что порядок - IP:CS, это 4-байтовое значение переводится в FOOO:FEA5. Это стартовый адрес программы ПЗУ, выполняющий преры­вание 8Н.