Тип исключения - Fault (ошибка).
Описание
Означает, что сброшен флаг присутствия P в дескрипторе сегмента или шлюза. Это исключение генерируется в следующих случаях:
При загрузке регистров CS, DS, ES, FS или GS (для SS генерируется другое исключение - ошибка стека (#SS). Это исключение может возникнуть при переключении задач.
| При загрузке LDTR командой LLDT.
| При выполнении команды LTR для TSS, отмеченном как неприсутствующий.
| При попытке использовать дескриптор шлюза или TSS, отмеченный как неприсутствующий.
| |
Код ошибки: содержит селектор дескриптора, вызвавшего исключение. Если флаг EXT установлен, то это значит, что исключение возникло из-за внешнего события (NMI или INTR), вызвавшего прерывание, которое в свою очередь сослалось на неприсутствующий сегмент. Флаг IDT устанавливается, если код ошибки относится к элементу IDT (т.е. ссылка на неприсутствующий шлюз).
Указатель кода: сохранённые значения CS:EIP обычно указывают на команду, сгенерировавшую исключение. Если исключение произошло при загрузке нового TSS, то CS:EIP будет указывать на текущую команду в новой задаче.
Изменение состояния программы: не меняется, если исключение возникло в результате загрузки регистра (CS, DS, SS, ES, FS, GS или LDTR), т.к. регистр не будет загружен новым значением. Не меняется так же при попытке обращения к неприсутствующему шлюзу, т.к. переход не производится.
Вопросы? Замечания? Пишите: sasm@narod.ru |
Copyright © Александр Семенко. |