Тип исключения - Fault (ошибка).
Описание
Означает, что процессор обнаружил не выравненный операнд при включённой проверке выравнивания (например, слово, начинающееся по нечётному адресу). Это исключение относится только к сегментам данных и стека (не кода или системных сегментам). В таблице 1 приведены границы выравнивания типов данных:
Таблица 1. Границы выравнивания типов данных
Тип данных | Адрес должен делиться на |
Слово (word) | 2 |
Двойное слово (dowbleword) | 4 |
Вещественное число одинарной точности (32-бита) | 4 |
Вещественное число двойной точности (64-бита) | 8 |
Вещественное число расширенной точности (80-бит) | 8 |
Quadword | 8 |
Double quadword | 16 |
Селектор сегмента | 2 |
32-разрядный дальний указатель (Far Pointer) | 2 |
48-разрядный дальний указатель (Far Pointer) | 4 |
32-разрядный указатель | 4 |
Содержимое регистров GDTR, IDTR, LDTR или TR | 4 |
Область сохранения FSTENV/FLDENV | 4 или 2, в зависимости от размера операнда |
Область сохранения FSAVE/FRSTOR | 4 или 2, в зависимости от размера операнда |
Строка битов | 2 или 4, в зависимости от атрибута размера операнда |
Для данных, выравниваемых на 16 байтную границу, генерируется исключение общей защиты.
Условия контроля выравнивания:
Установлен флаг AM в CR0.
| Установлен флаг AC в EFLAGS.
| CPL = 3 (защищённый режим или режим виртуального-8086).
| |
Вопросы? Замечания? Пишите: sasm@narod.ru |
Copyright © Александр Семенко. |