| 
| 
 | Вопрос # 6 287/ вопрос закрыт / | 
 |  Приветствую, уважаемые эксперты! С недавних пор вплотную занялся изучением асма (пока еще под 8086-80286 процы) и столкнулся со следующей темой–обработчик прерываний. Ну что такое прерывания я знаю, ну вот что такое обработчик? Очень рассчитываю на вашу помощь!Заранее спасибо
 
|  |   Вопрос задал: Phantom (статус: Посетитель)Вопрос отправлен: 19 октября 2012, 10:51
 Состояние вопроса: закрыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Phantom!Когда срабатывает прерывание, процессору нужно его обработать. Но как ему знать, как прерывание обрабатывать? Для этого в первом килобайте памяти (256 по 4 байта) лежат адреса обработчиков прерываний. Каждый такой обработчик - самая обычная процедура. То есть, пришло прерывание, процессор проверил, что его нужно обработать (прерывания можно маскировать и процессор будет их игнорировать). После этого сохраняется в стеке содержимое регистра адреса и некоторых других (регистры общего назначения кажется не сохраняются, нужно проверять по документации). Потом делает обычный CALL [номер прерывания*4] (тут опять нужно подсмотреть в документацию, может быть (номер прерываения -1) * 4 ). После исполнения процедуры обработки прерывания происходит возврат с помощью ret (на некоторый процессорах есть специальный iret) и выполнение будет продолжатся с следующей инструкции.
 
 Если уже ведется обработка прерывания, то новое прерывание может стать в очередь, быть проигнорированным или текущее обрабатываемое может быть поставленно на "паузу" (это выполняется аналогично вышеприведенному).
 
 Перехват прерываний - это тоже не сложно. Код подменяет в таблице прерываний адрес на свой. А вот вызывать ли оригинальный обработчик - это уже другое дело.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 19 октября 2012, 16:14
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо за развернутый ответ! Как раз буквально только что занялся перехватом, так что отдельное спасибо за общую информацию механизма прерываний :) |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 19 октября 2012, 15:02; участников в обсуждении: 2. 
|   | Phantom (статус: Посетитель), 19 октября 2012, 15:02 [#2]:ну как всегда. стоит только спросить, как тут же к Википедии отсылают  А на своих словах кто объяснить может?
 |  26 ноября 2012, 17:16: Вопрос закрыт (решение принял DNK): Давно это было... Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |