CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
Функции BIOS -
Зто аппаратно генерируемое прерывание (IRQ 0) вызывается по каждому тику часов реального времени PC. Часы тикают каждые 55мс, или около 18.2 раз в секунду. Код ROM-BIOS для этого прерывания обновляет значение часов на 0:046 сек. этот код также выключает двигатели гибких дисков по истечении примерно двух секунд без операций ввода/вывода.
Если вы хотите использовать это прерывание для обработки событий, зависящих от времени, вы должны предусмотреть код, сообщающий системе, когда прерывание закончено. Магическая последовательность такова:
mov al,20H ;послать сигнал конец-прерывания out 20H,al ; контроллеру прерываний 8259
большинство программ используют для этого ROM-BIOS. например, вначале программа пользователя сохраняет вектор ROM-BIOS в переменной с именем cs:[saved_int8]. затем по каждому прерыванию INT 08H выполняется следующий код:
pushf ;имитировать INT call dword ptr cs:[saved_int8] ;выполнить нормальную обработку cmp cs:my_var,test_value ;теперь сделать свои черные дела ... и т.д. ... iret ;возврат в прерванную прикладную программу "переднего плана"