то процессор выполняет ту же процедуру прерывания, используя в качестве номера вектора операнд команды int.
!!! Важно подчеркнуть, что описанные действия процессора выполняются совершенно одинаково для всех видов прерываний - внутренних, аппаратных и программных, хотя причины, возбуждающие процедуру прерывания, имеют принципиально разную природу.
Большая часть векторов прерываний зарезервирована для выполнения определенных действий; часть из них автоматически заполняется адресами системных программ при загрузке системы.
Таблица векторов прерываний.
внутреннее прерывание, деление на 0; | |
0lh | внутреннее прерывание, пошаговое выполнение (при TF=1); |
02h | немаскируемое прерывание (вывод NMI процессора); |
08h | аппаратное прерывание от системного таймера; |
09h | аппаратное прерывание от клавиатуры; |
0Eh | аппаратное прерывание от гибкого диска; |
10h | программное прерывание, программы BIOS управления видеосистемой; |
13h | программное прерывание, программы BIOS управления дисками; |
16h | программное прерывание, программы BIOS управления клавиатурой; |
IDh | не вектор, адрес таблицы видеопараметров, используемой BIOS |
lEh | не вектор, адрес таблицы параметров дискеты, используемой BIOS |
21h | программное прерывание, диспетчер функций DOS |
22h | программное прерывание, адрес перехода при завершении процесса, используемый DOS |
23h | программное прерывание, обработчик прерываний по <Ctrl>/C, используемый DOS; |
25h | программное прерывание, абсолютное чтение диска (функция DOS); |
26h | программное прерывание, абсолютная запись на диск (функция DOS); |
60h...66h | зарезервировано для программных прерываний пользователя; |
68h...6Fh | программные прерывания, свободные векторы; |
70h | аппаратное прерывание от часов реального времени (с питанием от аккумулятора); |
76h | аппаратное прерывание от жесткого диска; |
Как видно из таблицы, векторы прерываний можно условно разбить на следующие группы:
|
|
· векторы внутренних прерываний процессора (0lh, 02h и др.);
· векторы аппаратных прерываний (08h...0Fh и 70h...77h);
· программы BIOS обслуживания аппаратуры компьютера (10h, 13h, 16h и др.);
· программы DOS (21h, 22h, 23h и др.);
· адреса системных таблиц BIOS (IDh, lEh и др.).
Таблица прерываний в реальном режиме состоит из 256 элементов, каждый из которых имеет длину в 4 байта и представляет собой дальний адрес (CS:IP) процедуры обработки прерываний.
Таблица прерываний реального режима всегда находится в фиксированном месте физической памяти — с начального адреса 00000 по адрес 003FF.
В защищенном режиме таблица прерываний носит название IDT (Interrupt Descriptor Table) и может располагаться в любом месте физической памяти. Ее начало (32-разрядный физический адрес) и размер (16 бит) можно найти в регистре системных адресов IDTR. Каждый из 256 элементов таблицы прерываний представляет собой 8-байтный дескриптор. В таблице прерываний могут находиться только дескрипторы определенного типа — дескрипторы шлюзов прерываний, шлюзов ловушек и шлюзов задач.
|
|