3

пожалуйста, я знаю, что когда вы, например, делите на ноль, флаг апроптиата устанавливается в регистре флага процессора. Но сегодня я прочитал, что есть специальные векторы прерываний (я думаю, первые 16 в IVT), которые используются для таких условий, как деление на ноль. Итак, что я хочу спросить, так это то, что любая ситуация, которая вызывает изменение флага сома, также вызывает соответствующее прерывание? Так как в школе мы использовали условные переходы, которые проверяют, был ли установлен флаг переноса или нет, и я не помню, чтобы было какое-то прерывание, вызванное этим. Так что я сейчас в замешательстве.

1 ответ1

3

Есть два типа прерываний.

Первый тип - это прерывания для сигнализации аппаратных событий, например, истек таймер аппаратного обеспечения или контроллер жесткого диска завершил передачу данных в память.

Второй тип - это прерывания для сигнализации о каком-то непредвиденном состоянии. Вот некоторые примеры: доступ к недопустимой памяти, деление на ноль (на самом деле это "переполнение деления", которое происходит не только при делении на ноль, но даже при делении очень большого значения на очень маленькое значение), инструкция точки останова, аппаратная точка останова и т. д. Этот тип исключений выдается процессором, когда он не может выполнить текущую инструкцию и обычно приводит к завершению текущего процесса или к отладчику. Они на самом деле не связаны с флагами процессора, которые содержат результаты последней инструкции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .