Пишем программу начальной загрузки компьютера
Структура второй программы для загрузочного сектора:

Техника замены стандартного обработчика прерывания рассмотрена на примере прерывания INT 1C - SYSTEM TIMER TICK. Этот обработчик вызывается из обработчика прерывания аппаратного таймера IRQ 0 каждые 55 мсек (примерно 18,2 раза в секунду).
Вектор прерывания по адресу 0:0070 (1Ch*4=70h) указывает на инструкцию IRET, то есть никакой обработки реально не выполняется. Заменив значение вектора указателем на свой обработчик мы сможем передать управление своей программе. Наша программа циклически меняет значение таймера от 9 до 0. Вывод значения таймера на экран выполняется вне этой процедуры. Возврат по инструкции IRET, то есть с восстановлением регистра флагов.

Обработка кода нажатой клавищи выполняется обычным способом без всяких хитростей.

Однако, размер нашей программы приблизился к 512 байт. Осталось неиспользованными всего 13 байт. Поэтому, если мы хотим написать более длинную программу, то надо выходить за пределы загрузочного сектора. В последующем мы рассмотрим разные методы для этого.


Текст программы st2.asm находиться здесь

[Назад] [↑]
Hosted by uCoz