Аппаратные запросы прерываний к процессору контролируются контроллером Р1С.
Его необходимо инициализировать до того, как в системе будет разрешено какое-либо прерывание. В файле BIOS vd30728.bin контроллеры PIC инициализируются кодом блока начальной загрузки.
Отслеживание инициализации контроллера PIC в дизассемблированном листинге BIOS позволяет найти процедуру инициализации прерываний, которая ссылается на конкретные элементы таблицы векторов прерываний. Каждый вектор прерывания содержит 32-битный указатель на обработчик соответствующего прерывания. Какая связь между инициализацией контроллера PIC и инициализацией прерываний? До завершения инициализации контроллера PIC все прерывания запрещены. Установив местонахождение процедуры обработчика прерываний, ее можно модифицировать с помощью различных методов, таких как, например, наложение заплатки для создания обхода. Инициализация контроллера PIC кодом начальной загрузки, показанная в листинге 12.11, представляет собой нормальную процедуру инициализации контроллера PIC с помощью команд Icwi-icw4. После завершения инициализации контроллер переводится в операционный режим, в котором он воспринимает команды ocwi-ocw3. Процедура инициализации контроллера PIC, представленная в листинге Анализ кода, представленного позволяет сделать вывод о том, что на данном этапе процессор не обслуживает никаких прерываний потому что на ведущий и ведомый контроллеры PIC были направлены команды ocwi, временно отключившие все линии IRQ. Но немаскируемое прерывание соединено напрямую с процессором, и ничто не может помешать его возникновению.
Перейдем к рассмотрению следующего этапа инициализации механизма прерываний в текущем двоичном коде BIOS — инициализации 16-битных векторов прерываний. В рассматриваемой реализации BIOS соответствующий код находится в восьмом элементе таблицы переходов систем ной, BIOS. Соответствующий фрагмент дизассемблированного кода показан в листинге 12.12. Расшифровка сокращений, применяемых в листинге, приведена в сноске
Рубрика: Женский интерес