Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
V_ostavsheysya_chasti_etoy_glavy_opisyvaetsya_organizatsia_pamyati_i_adresnogo_prostranstva.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
44.3 Кб
Скачать

3.4.2.1 Регистры сегментов в 64-битном режиме

3.4.3.1 Флаги состояния

Флаги состояния (бит 0, 2, 4, 6, 7 и 11) регистра EFLAGS указывают результаты арифметических команд, таких как инструкции ADD, SUB, MUL и DIV. Функции флага статуса:

CF (бит 0) Флаг переноса - установить, если арифметическая операция генерирует перенос или заимствование из самого важного бита результата; очищается в противном случае. Этот флаг указывает условие переполнения для арифметики без знака. Он также используется в арифметике с несколькими точками.

PF (бит 2) Флаг четности - задайте, если младший байт результата содержит четное число из 1 бита; очищается в противном случае.

AF (бит 4) Флаг вспомогательной несущей - устанавливается, если арифметическая операция генерирует перенос или заимствование из бит 3 результата; очищается в противном случае. Этот флаг используется в двоично-кодированной десятичной (BCD) арифметике.

ZF (бит 6) Флаг нуля - установить, если результат равен нулю; очищается в противном случае.

SF (бит 7) Флаг знака - устанавливается равным самому значащему биту результата, который является битом знака целого числа со знаком. (0 указывает положительное значение, а 1 указывает отрицательное значение.)

OF (бит 11) Флаг переполнения - задайте, если целочисленный результат является слишком большим положительным числом или слишком маленьким отрицательным числом (исключая знаковый бит) для размещения в операнде назначения; очищается в противном случае. Этот флаг указывает условие переполнения для арифметики с подписью-целым числом (два дополнения).

Из этих флагов статуса только флаг CF может быть изменен напрямую, используя инструкции STC, CLC и CMC. Также битовые инструкции (BT, BTS, BTR и BTC) копируют указанный бит в флаг CF.

Флаги состояния позволяют одной арифметической операции создавать результаты для трех разных типов данных: целые числа без знака, целые числа со знаком и целые числа BCD. Если результат арифметической операции рассматривается как целое без знака, флаг CF указывает условие вне диапазона (перенос или заимствование); если обрабатывается как целое число со знаком (номер дополнения 2), флаг OF указывает перенос или заимствование; и если он рассматривается как цифра BCD, флаг AF указывает на перенос или заимствование. Флаг SF указывает знак целого числа со знаком. Флаг ZF указывает либо ноль с подписью или без знака.

При выполнении арифметики с высокой точностью для целых чисел флаг CF используется совместно с инструкцией add with carry (ADC) и вычитанием с помощью заимствования (SBB) для распространения переноса или заимствования из одного вычисления в другое.

Инструкции по условию Jcc (переход на код условия cc), SETcc (байт, установленный в коде условия cc), LOOPcc и CMOVcc (условное перемещение) используют один или несколько флажков состояния в качестве кодов условий и проверяют их для ветви, setbyte или условия конечного цикла.

3.4.3.2 Флаг df

Флаг направления (DF, расположенный в бите 10 регистра EFLAGS) управляет строковыми инструкциями (MOVS, CMPS, SCAS, LODS и STOS). Установка флага DF приводит к автоматическому декременту строковых инструкций (для обработки строк с высоких адресов на низкие адреса). Очистка флага DF приводит к тому, что строковые инструкции автоматически увеличиваются (строки процесса от низких адресов до высоких адресов).

Инструкции STD и CLD устанавливают и очищают флаг DF, соответственно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]