С вероятностью 99% вы испытали явление, называемое тройной недостаток.Согласно архитектуре IA-32, в случае возникновения исключительной ситуации CPU автоматически пытается выполнить соответствующий обработчик исключений.Если эта попытка приводит к другому исключению (эта ситуация называется двойной ошибкой), тогда CPU пытается выполнить обработчик исключений двойной ошибки (0x08 в IDT).Если во время этой попытки сработает еще одно исключение, тогда CPU переходит в состояние тройного сбоя.Процессор отвечает на него циклом выключения, это обычно приводит к тому, что оборудование материнской платы инициирует сброс процессора, что, в свою очередь, приводит к перезагрузке всего компьютера.
В вашем случае вы выполняете следующую последовательность действий:
interrupt from some device -> exception -> exception -> reset
normal execution -> fault -> double fault -> triple fault
Убедитесь, что вы правильно инициализировали IDT со всеми 256 установленными дескрипторами, каждый из которых указывает на правильный обработчик.Заметка!Вам разрешено загружать IDT с таблицей произвольного размера.Но это не означает, что процессор просто перестает получать прерывания и исключения с векторами, выходящими за пределы таблицы!Фактически каждое из этих прерываний приведет к общему исключению защиты!