Глава 1. Системные ресурсы.

Раздел 2. Управление прерываниями.

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

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

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


<~-1.1.7 Ревизия количества памяти.
Содержание
1.2.1 Программирование контроллера прерываний 8259.-~>

Сайт управляется системой uCoz