перехват прерывания

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Arpy
Сообщения: 10
Зарегистрирован: 27 фев 2007, 21:21

Не подскажите, как сделать, чтоб резидентная программа хватала прерывание "09H (клавиатура)" и по ctrl+d уходила бы по метке?
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

В двух словах.
1. Перехватываешь 9-й инт.
- читаешь адрес текущего 9-го инта,
- сохраняешь его,
- запрещаешь прерывания и записываешь адрес своего обработчика,
- оставляешь резидентный код в памяти, разрешаешь прерывания.
2. Обработчик 9-го инта
- сохраняешь ВСЕ!!! (хотябы регистры)
- читаешь скан-код,
- если это "ctrl-d" - делаешь свои темные дела,
- восстанавливаешь ВСЕ,
- кладешь в стек сохраненный адрес родного обработчика,
- делаешь iret - передаешь ему управление.

Вот примерно так. Может что и забыл.
Arpy
Сообщения: 10
Зарегистрирован: 27 фев 2007, 21:21

а можно какойнить пример посмотреть?
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

Вот пособие по резидентам и не только ;)
http://www.ishodniki.ru/base/ASM/virus.zip
Просьба не увлекаться.
Arpy
Сообщения: 10
Зарегистрирован: 27 фев 2007, 21:21

хехе))
пасиба, интересно поглядеть
Ответить