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

Error message

Notice: Undefined index: add term path in hansel_get_breadcrumbs() (line 524 of /data/sites/msdosworld.ru/www/sites/all/modules/hansel/hansel.module).

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

Вы находитесь в разделе: 

Добавить коментарий