1. Соответствующий бит регистра устанавливается в 1 всегда, когда выполнилось условие прерывания. Независимо от того, разрешено или запрещено прерывание.
2. Этот бит остаётся 1 до тех пор, пока программа не уйдёт на обработчик прерывания. Как только начнётся обработка прерывания, бит будет сброшен в 0. Т.е. если даже обработка прерывания ещё не закончилась, этот бит уже будет установлен в 0.
3. Если прерывание запрещено, неважно как - глобально или по маске, то бит сохраняет значение 1 сколь угодно долго.
4. Этот бит можно принудительно установить в 0, если записать в регистр флагов на его место 1 (а вовсе не ноль, как казалось! попытка записать туда 0 ничего не даёт - бит остаётся равным 1). Тогда, если прерывание разрешено, оно обработано не будет.
5. Но если условие прерывания вдруг выполнится опять, бит будет снова установлен в 1.
Я ничего не напутал? Что скажут специалисты?



