
- •Флаги ЦП
- •Слово состояния FPU и флаги ЦП
- •Команды и изменение флагов
- •Флаги и условия
- •Условные команды
- •Условные команды и проверка флагов
- •Программирование нелинейных алгоритмов
- •Условие с операторами в одной ветви
- •Условие с операторами в двух ветвях
- •Цикл (сумма двоичных цифр x)
- •Обработка чисел с плавающей запятой
- •Сумма ряда

МИЭТ, СПИНТех, КАИ |
Передача управления (ветвления и циклы) |
1 / 13 |
Передача управления (ветвления и циклы)
Александра Игоревна Кононова
МИЭТ
15 декабря 2020 г. актуальную версию можно найти на https://gitlab.com/illinc/arch-cs
Флаги и условия |
Флаги ЦП |
Программирование нелинейных алгоритмов |
Слово состояния FPU и флаги ЦП |
Обработка чисел с плавающей запятой |
Команды и изменение флагов |

|
|
|
|
МИЭТ, СПИНТех, КАИ |
Передача управления (ветвления и циклы) |
|
2 / 13 |
|
|
||
|
Флаги ЦП |
|
|
|
|
|
|
||||
|
|
|
|
|
|
flags=eflags |
|
|
|
|
|
|
|
0 |
CF |
Carry Flag |
|
Флаг переноса (беззнакового переполнения) |
|
Состояние |
|
|
|
|
|
1 |
1 |
|
|
Зарезервирован |
|
|
|
|
|
|
|
2 |
PF |
Parity Flag |
|
Флаг чётности |
|
Состояние |
|
|
|
|
|
3 |
0 |
|
|
Зарезервирован |
|
|
|
|
|
|
|
4 |
AF |
Auxiliary Carry Flag |
|
Флаг вспомогательного переноса |
|
Состояние |
|
|
|
|
|
5 |
0 |
|
|
Зарезервирован |
|
|
|
|
|
|
|
6 |
ZF |
Zero Flag |
|
Флаг нуля |
|
Состояние |
|
|
|
|
|
7 |
SF |
Sign Flag |
|
Флаг знака |
|
Состояние |
|
|
|
|
|
8 |
TF |
Trap Flag |
|
Флаг трассировки |
|
Системный |
|
|
|
|
|
9 |
IF |
Interrupt Enable Flag |
|
Флаг разрешения прерываний |
|
Системный |
|
|
|
|
|
10 |
DF |
Direction Flag |
|
Флаг направления |
|
Управляющий |
|
|
|
|
|
11 |
OF |
Overflow Flag |
|
Флаг знакового переполнения |
|
Состояние |
|
|
|
|
|
12–13 |
IOPL |
I/O Privilege Level |
|
Уровень приоритета ввода-вывода |
|
Системный |
|
|
|
|
|
14 |
NT |
Nested Task |
|
Флаг вложенности задач |
|
Системный |
|
|
|
|
|
15 |
0 |
|
|
Зарезервирован |
|
|
|
|
|
|
|
|
|
|
|
eflags |
|
|
|
|
|
|
|
16 |
RF |
Resume Flag |
|
Флаг возобновления |
|
Системный |
|
|
|
|
|
17 |
VM |
Virtual-8086 Mode |
|
Режим виртуального процессора 8086 |
|
Системный |
|
|
|
|
|
18 |
AC |
Alignment Check |
|
Проверка выравнивания |
|
Системный |
|
|
|
|
|
19 |
VIF |
Virtual Interrupt Flag |
|
Виртуальный флаг разрешения прерывания |
|
Системный |
|
|
|
|
|
20 |
VIP |
Virtual Interrupt Pending |
|
Ожидающее виртуальное прерывание |
|
Системный |
|
|
|
|
|
21 |
ID |
ID Flag |
|
Проверка на доступность инструкции CPUID |
|
Системный |
|
|
|
|
|
22–31 |
|
|
|
Зарезервированы |
|
|
|
|
|
Флаги и условия |
Флаги ЦП |
Программирование нелинейных алгоритмов |
Слово состояния FPU и флаги ЦП |
Обработка чисел с плавающей запятой |
Команды и изменение флагов |

|
|
|
|
МИЭТ, СПИНТех, КАИ |
Передача управления (ветвления и циклы) |
|
3 / 13 |
|
||||||||||
|
|
Слово состояния |
FPU и флаги ЦП |
|
|
|
|
|||||||||||
|
|
|
|
sw |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выгрузка sw ! flags |
|||||||||||
|
0 |
IE |
Недействительная операция |
|
|
|||||||||||||
|
|
1 |
DE |
Денормализованный операнд |
после устаревших команд |
|||||||||||||
|
|
2 |
ZE |
Деление на ноль |
|
|
сравнения в 2 этапа: |
|||||||||||
|
|
3 |
ОЕ |
Переполнение порядка |
fnstsw %ax (sw ! ax) |
|||||||||||||
|
|
4 |
UE |
Исчезновение порядка |
sahf (ah ! flags[0:::7]) |
|||||||||||||
|
|
5 |
РЕ |
Неточный результат |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
SF |
Стековая ошибка |
|
|
flags, f[u]comi[p] |
|||||||||||
|
|
7 |
ES |
Флаг незамаскированной ошибки |
или старые + fnstsw + sahf |
|||||||||||||
|
|
8 |
C0 |
|
|
0 |
|
CF |
|
Carry Flag |
|
|
|
|||||
|
|
9 |
C1 |
|
|
|
|
|
|
игнорируется |
|
|
|
|||||
|
|
10 |
C2 |
|
|
2 |
|
PF |
|
Parity Flag |
|
|
|
|||||
|
|
11 |
|
|
|
|
|
|
|
игнорируется |
|
|
|
|||||
|
12 |
TOP |
|
|
4 |
|
AF |
|
Auxiliary carry Flag |
|
||||||||
|
13 |
|
|
|
|
|
|
|
игнорируется |
|
|
|
||||||
|
|
14 |
C3 |
|
|
6 |
|
ZF |
|
Zero Flag |
|
|
|
|||||
|
|
15 |
В |
Дублирует ES |
7 |
|
SF |
|
Sign Flag |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Флаги и условия |
Флаги ЦП |
Программирование нелинейных алгоритмов |
Слово состояния FPU и флаги ЦП |
Обработка чисел с плавающей запятой |
Команды и изменение флагов |

|
МИЭТ, СПИНТех, КАИ |
Передача управления (ветвления и циклы) |
|
|
4 / 13 |
|
|||||||||||||||||||
Команды и изменение флагов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
Команда |
|
CF |
|
PF |
AF |
ZF |
|
SF |
|
|
|
|
OF |
|||||||||||
|
mov, xchg, push, pop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lea |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
movs, movz, cltq, cltd, ... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add, sub/cmp, neg |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
inc, dec |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
imul, mul |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
? |
? |
? |
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|||||
|
idiv, div |
|
? |
? |
? |
? |
|
|
|
|
|
|
? |
|
|
|
|
? |
|
||||||
|
and/test, or, xor, not |
|
0 |
|
|
? |
|
|
|
|
|
|
|
|
|
|
0 |
|
|||||||
|
shr, sar, shl/sal |
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
? |
|
|||||||
|
ror, rol |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|||||
|
bt |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
? |
? |
? |
|
|
|
|
|
|
? |
|
|
|
|
? |
|
|||||||
|
clc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
stc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cmc |
|
!CF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f[u]comi[p] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
f[u]com[p] + fnstsw + sahf |
|
|
|
|
? |
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
Флаги и условия |
|
Флаги ЦП |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
Программирование нелинейных алгоритмов |
|
Слово состояния FPU и флаги ЦП |
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
Обработка чисел с плавающей запятой |
|
Команды и изменение флагов |
|
|
|
|
|
|
|
|
|
|
|