Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Регистры состояния и управления.




 

В микропроцессор включены несколько регистров (см. рис. 1), которые по­стоянно содержат информацию о состоянии как самого микропроцессора, так и программы, команды которой в данный момент загружены на конвейер.

К этим регистрам относятся:

- регистр флагов eflags/flags;

- регистр указателя команды eip/ip.

Используя эти регистры, можно получать информацию о результатах выполне­ния команд и влиять на состояние самого микропроцессора. Рассмотрим по­дробнее назначение и содержимое этих регистров:

eflags/flags (flag register) – регистр флагов. Разрядность eflags/flags – 32/16 бит. Отдельные биты данного регистра имеют определенное функцио­нальное назначение и называются флагами. Младшая часть этого регистра пол­ностью аналогична регистру flags для i8086. На рис. 2 показано содержимое регистра eflags.

 

ФЛАГИ СОСТОЯНИЯ:

флаг вложенности задачи

уровень привилегированности ввода–вывода

флаг переполнения

флаг знака

флаг нуля

вспомогательный флаг переноса

флаг четности

флаг переноса

 
 


eflags (0..31) flags (0..15

               
     
       

 

 


31           13 12                        
0   AC VM RF   NT IOPL OF DF IF TF SF ZF   AF   PF   CF

 


ФЛАГ УПРАВЛЕНИЯ:

флаг направления

СИСТЕМНЫЕ ФЛАГИ:

флаг трассировки

флаг прерывания

флаг возобновления

флаг виртуального 8086

флаг контроля выравнивания

 

Рис. 2. Содержимое регистра eflags

 

Исходя из особенностей использования, флаги регистра eflags/flags можно раз­делить на три группы:

- 8 флагов состояния. Эти флаги могут изменяться после выполнения машин­ных команд. Флаги состояния регистра eflags отражают особенности ре­зультата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реаги­ровать на него с помощью команд условных переходов и вызовов подпро­грамм. В табл. 1 приведены флаги состояния и указано их назначение;

- 1 флаг управления. Обозначается как df (Directory Flag). Он находится в 10–м бите регистра eflags и используется цепочечными командами. Значение флага df определяет направление поэлементной обработки в этих операци­ях: от начала строки к концу (df = 0), либо наоборот, от конца строки к ее началу (df = 1). Для работы с флагом df существуют специальные команды eld (снять флаг df) и std (установить флаг df). Применение этих команд позволяет привести флаг df в соответствие с алгоритмом и обеспечить авто­матическое увеличение или уменьшение счетчиков при выполнении опера­ций со строками;

- 5 системных флагов, управляющих вводом/выводом, маскируемыми преры­ваниями, отладкой, переключением между задачами и виртуальным режи­мом 8086. Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к пре­рыванию работы программы. В табл. 2 перечислены системные флаги, их назначение.

Таблица 1. Флаги состояния

Мнемони-ка флага Флаг Номер бита в eflags Содержание и назначение
Cf Флаг переноса (Carry Flag)   1 – арифметическая операция произвела перенос из старшего бита результата. Старшим является 7, 15 или 31-й бит в зависимости от размерности операнда; 0 – переноса не было
Pf Флаг паритета (Parity Flag)   1 – 8 младших разрядов (этот флаг – только для 8 младших разрядов операнда любого размера) результата содержат четное число единиц; 0 – 8 младших разрядов результата содержат нечетное число единиц
Af Вспомогательный флаг переноса (Auxiliary carry Flag)   Только для команд, работающих с BCD-числами. Фиксирует факт заема из младшей тетрады результата: 1 – в результате операции сложения был произведен перенос из разряда 3 в старший разряд или при вычитании был заем в разряд 3 младшей тетрады из значения в старшей тетраде; 0 – переносов и заемов в(из) 3 разряд(а) младшей тетрады результата не было
Zf Флаг нуля (Zero Flag)   1 – результат нулевой; 0 – результат ненулевой
Sf Флаг знака (Sign Flag)   Отражает состояние старшего бита результата (биты 7, 15 или 31 для 8, 16 или 32-разрядных операндов соответственно): 1 – старший бит результата равен 1; 0 – старший бит результата равен 0
Of Флаг переполнения (Overflow Flag)   Флаг of используется для фиксирования факта потери значащего бита при арифметических операциях: 1 – в результате операции происходит перенос (заем) в(из) старшего, знакового бита результата (биты 7, 15 или 31 для 8, 16 или 32-разрядных операндов соответственно); 0 – в результате операции не происходит переноса (заема) в(из) старшего, знакового бита результата
Iopl Уровень Привилегий ввода-вывода (Input/Output Privilege Level) 12, 13 Используется в защищенном режиме работы микропроцессора для контроля доступа к командам ввода-вывода в зависимости от привилегированности задачи
nt Флажок вложенности задачи (Nested Task)   Используется в защищенном режиме работы микропроцессора для фиксации того факта, что одна задача вложена в другую

Таблица 2. Системные флаги

Мнемоника флага Флаг Номер бита в eflags Содержание и назначение
tf Флаг трассировки (Trace Flag)   Предназначен для организации пошаговой работы микропроцессора. 1 – микропроцессор генерирует прерывание с номером 1 после выполнения каждой машинной команды. Может использоваться при отладке программ, в частности отладчиками; 0 – обычная работа
if Флаг прерывания (Interrupt enable Flag)   Предназначен для разрешения или запрещения (маскирования) аппаратных прерываний (прерываний по входу INTR). 1 – аппаратные прерывания разрешены; 0 – аппаратные прерывания запрещены
rf Флаг возобновления (Resume Flag)   Используется при обработке прерываний от регистров отладки.
vm Флаг виртуального (Virtual 8086 Mode)   Признак работы микропроцессора в режиме виртуального 8086. 1 – процессор работает в режиме виртуального 8086; 0 – процессор работает в реальном или защищенном режиме
ac Флаг контроля выравнивания (Alignment Check)   Предназначен для разрешения контроля выравнивания при обращениях к памяти. Используется совместно с битом am в системном регистре cr0. К примеру, Pentium разрешает размещать команды и данные с любого адреса. Если требуется контролировать выравнивание данных и команд по адресам, кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут возбуждать исключительную ситуацию.

 

eip/ip (Instruction Pointer register) – указатель команд. Регистр eip/ip имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выпол­нению команды относительно содержимого сегментного регистра cs в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра eip/ip.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных