ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »