Это аппаратно генерируемое прерывание (IRQ 0) вызывается по каждому тику часов реального времени. На большинстве компьютеров часы тикают каждые 55мс, или около 18.2 раз в секунду. Код BIOS для этого прерывания обновляет значение часов на 0.046 сек. Этот код также выключает двигатели гибких дисков по истечении заданного времени (см. INT 1Eh) без операций ввода/вывода.
Если вы хотите использовать это прерывание для обработки событий, зависящих от времени, вы должны предусмотреть код, сообщающий системе, когда прерывание закончено. Магическая последовательность такова:
большинство программ используют для этого BIOS. Например, вначале программа пользователя сохраняет вектор BIOS в переменной с именем cs:[saved_int8]. затем по каждому прерыванию INT 08H выполняется следующий код:
| pushf ;имитировать INT
| call dword ptr cs:[saved_int8] ;выполнить нормальную обработку
| cmp cs:my_var,test_value ;теперь сделать свои черные дела
| ... и т.д. ...
| iret ;возврат в прерванную программу