ВУЗ:
Составители:
Рубрика:
8
4. Дополнительный сегмент данных. Неявно алгоритмы выполнения машинных
команд предполагают, что обрабатываемые ими данные расположены в сегменте
данных, адрес которого находятся в сегментном регистре ds. Если программе
недостаточно одного сегмента данных, то она имеет возможность использовать еще
три дополнительных сегмента данных es, gs,fs.
Регистры состояния и управления
В МП включены несколько регистров, которые содержат информацию о состоянии как самого
МП, так и программы, команды которой в данный момент загружены на конвейер.
• регистр флагов eflsgs/flags
• регистр указателя команды eip/ip
Используя эти регистры, можно получить информацию о результатах выполнения команд
программы и влиять на состояние самого МП.
Регистр флагов – регистр разрядностью 32-16 бит..
31 … 21 20 19 18 17 16 15 14 13
12
11 10 09 08 07 06 05 04 03 02 01 00
0 … ID VIP VIF AC VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF
Рассмотрим некоторые наиболее часто используемые в программах любого языка
программирования флаги.
Все флаги можно разделить на три группы:
1. 8 флагов состояния
. Эти флаги могут изменяться после выполнения машинных команд,
таких как арифметические операции (сложение, вычитание и т.д.), операции сравнения и
т.д. После формирования регистра флагов, их можно использовать для анализа результата и
изменения хода выполнения программы в зависимости от полученного результата.
2. 1 флаг управления (df), который используется цепочными командами (работа со строками).
3. 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями,
отладкой, переключением между задачами и виртуальным режимом i8086. Не
рекомендуется прикладным программам модифицировать без необходимости эти флаги,
т.к. в большинстве случаев это приводит к прерываниям работы программы.
№ мнем
оника
флага
флаг номер
бита
содержание и назначение
1. cf флаг переноса 0 1-арифметическая операция произвела перенос из
старшего бита результата. Старшим является 7-й, 15-й
или 31-й бит в зависимости от размерности операнда.
0 – переноса нет
2. pf флаг паритета 2 1 – 8 младших разрядов результата содержат четное
число единиц
0 – 8 младших разрядов результата содержат нечетное
число единиц.
3. af вспомогательный
флаг переноса
4 Используется для команд, работающих с BCD-
числами. Фиксирует факт заема из младшей тетрады
результата.
1- в результате операции сложения был
произведен перенос из разряда 3 в старший
разряд или при вычитании был заем в разряд 3
младшей тетрады из значения в старшей
тетраде.
2- 0 – переносов и заемов не
было.
4. zf флаг нуля 6 1-результат нулевой
0- результат не нулевой
5. sf флаг знака 7 Отражает состояние старшего бита результата (биты
7, 15 или 31 для 8-, 16- или 32-разрядных операндов,
соответственно )
1-старший бит результата равен 1
0 – старший бит результата равен 0
6. of флаг 11 флаг of используется для фиксирования факта потери
4. Дополнительный сегмент данных. Неявно алгоритмы выполнения машинных
команд предполагают, что обрабатываемые ими данные расположены в сегменте
данных, адрес которого находятся в сегментном регистре ds. Если программе
недостаточно одного сегмента данных, то она имеет возможность использовать еще
три дополнительных сегмента данных es, gs,fs.
Регистры состояния и управления
В МП включены несколько регистров, которые содержат информацию о состоянии как самого
МП, так и программы, команды которой в данный момент загружены на конвейер.
• регистр флагов eflsgs/flags
• регистр указателя команды eip/ip
Используя эти регистры, можно получить информацию о результатах выполнения команд
программы и влиять на состояние самого МП.
Регистр флагов – регистр разрядностью 32-16 бит..
31 … 21 20 19 18 17 16 15 14 13 11 10 09 08 07 06 05 04 03 02 01 00
12
0 … ID VIP VIF AC VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF
Рассмотрим некоторые наиболее часто используемые в программах любого языка
программирования флаги.
Все флаги можно разделить на три группы:
1. 8 флагов состояния. Эти флаги могут изменяться после выполнения машинных команд,
таких как арифметические операции (сложение, вычитание и т.д.), операции сравнения и
т.д. После формирования регистра флагов, их можно использовать для анализа результата и
изменения хода выполнения программы в зависимости от полученного результата.
2. 1 флаг управления (df), который используется цепочными командами (работа со строками).
3. 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями,
отладкой, переключением между задачами и виртуальным режимом i8086. Не
рекомендуется прикладным программам модифицировать без необходимости эти флаги,
т.к. в большинстве случаев это приводит к прерываниям работы программы.
№ мнем флаг номер содержание и назначение
оника бита
флага
1. cf флаг переноса 0 1-арифметическая операция произвела перенос из
старшего бита результата. Старшим является 7-й, 15-й
или 31-й бит в зависимости от размерности операнда.
0 – переноса нет
2. pf флаг паритета 2 1 – 8 младших разрядов результата содержат четное
число единиц
0 – 8 младших разрядов результата содержат нечетное
число единиц.
3. af вспомогательный 4 Используется для команд, работающих с BCD-
флаг переноса числами. Фиксирует факт заема из младшей тетрады
результата.
1- в результате операции сложения был
произведен перенос из разряда 3 в старший
разряд или при вычитании был заем в разряд 3
младшей тетрады из значения в старшей
тетраде.
2- 0 – переносов и заемов не было.
4. zf флаг нуля 6 1-результат нулевой
0- результат не нулевой
5. sf флаг знака 7 Отражает состояние старшего бита результата (биты
7, 15 или 31 для 8-, 16- или 32-разрядных операндов,
соответственно )
1-старший бит результата равен 1
0 – старший бит результата равен 0
6. of флаг 11 флаг of используется для фиксирования факта потери
8
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »
