Тип исключения - 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 © Александр Семенко. |
|
|