|
Вопрос # 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): Давно это было...
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|