Регистр состояния eflags/flags содержит информацию о состоянии микропроцессора.




Сегментные регистры

 

В программной модели микропроцессора имеется шесть сегментных регистров:

Cs, ss, ds, es, gs, fs.

 

Все сегментные регистры – 16-разрядные.

 

Их существование обусловлено спецификой организации и использования оперативной памяти: микропроцессоры Intel в любом режиме работы (реальный режим, защищенный режим) поддерживают сегментную модель организации оперативной памяти.

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

 

Сегментные регистры предназначены для того, чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени.

Фактически в этих регистрах содержатся адреса ячеек памяти, с которых начинаются соответствующие сегменты.

 

Микропроцессор поддерживает следующие типы сегментов.

 

Сегмент кода (содержит команды программы).

Для доступа к этому сегменту служит регистр

cs (code segment register) — сегментный регистр кода.

 

Он содержит адрес сегмента кода, к которому в данный момент имеет доступ микропроцессор.

Сегмент данных (содержит обрабатываемые программой данные).

Для доступа к этому сегменту служит регистр

ds (data segment register) — сегментный регистр данных.

 

Он содержитадрес сегмента данных текущей программы.

Сегмент стека (область памяти, называемая стеком).

Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым (LIFO).

Для доступа к этому сегменту служит регистр

ss (stack segment register) — сегментный регистр стека.

 

Он содержит адрес сегмента стека.

 

Дополнительные сегменты данных.

Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных.

Адреса дополнительных сегментов данных должны содержаться в регистрах

es, gs, fs (extension data segment registers).

 

es ¾ дополнительный сегментный регистр данных или экстракодов (Extra Segment).

Начиная с микропроцессора 80386, появились два дополнительных регистра fs,gs (следующие буквы в латинском алфавите после e).

При использовании дополнительных сегментов данных их адреса требуется указывать с помощью специальных префиксов переопределения сегментов в команде (например, fs:).

 

Регистр состояния

Регистр состояния eflags/flags содержит информацию о состоянии микропроцессора.

eflags/flags (flag register) — регистр флагов.

 

Разрядность eflags/flags — 32/16 бит.

Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами.

Младшая часть этого регистра полностью аналогична регистру flags для i8086.

 

Флаги регистра eflags/flags подразделяются на три группы.

 

1) Флаги состояния

Эти флаги отражают особенности результата исполнения арифметических или логических операций и могут изменяться после выполнения машинных команд.

Это позволяет анализировать состояние вычислительного процесса и реагировать на него (например, с помощью команд условных переходов и вызовов подпрограмм).

cf - флаг переноса (Carry Flag)

pf - флаг паритета (Parity Flag)

af - вспомогательный флаг переноса (Auxiliary carry Flag)

zf - флаг нуля (Zero Flag) (1 — результат нулевой; 0 — результат ненулевой)

sf - флаг знака (Sign Flag)

(1 - старший бит результата = 1; 0 - старший бит результата = 0)

of - Флаг переполнения (Overflow Flag)

Используется для фиксирования факта потери значащего бита при арифметических операциях.

iopl - уровень привилегий ввода-вывода (Input/Output Privilege Level)

Используется в защищенном режиме работы микропроцессора для контроля доступа к командам ввода-вывода в зависимости от привилегированности задачи.

nt - флажок вложенности задачи (Nested Task)

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

 

2) Флаг направления df (Directory Flag).

Он находится в 10-м бите регистра eflags и используется цепочечными командами. Значение флага df определяет направление обработки в цепочечных операциях: от начала строки к концу (df = 0) или от конца строки к ее началу (df = 1).

 

3) Системные флаги

Управляют вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.

tf - флаг трассировки (Trace Flag)

Предназначен для организации пошаговой работы микропроцессора.

if – Флаг прерывания (Interrupt enable Flag)

Предназначен для разрешения или запрещения (маскирования) аппаратных прерываний. (1 — аппаратные прерывания разрешены; 0 — аппаратные прерывания запрещены)

rf - флаг возобновления (Resume Flag)

Используется при обработке прерываний от регистров отладки.

 

Vm – флаг виртуального 8086 (Virtual 8086 Mode)

Признак работы микропроцессора в режиме виртуального 8086.

(1 – процессор работает в режиме виртуального 8086; 0 – процессор работает в реальном или защищенном режиме)

 

ac – флаг контроля выравнивания (Alignment Check)

Предназначен для разрешения контроля выравнивания при обращениях к памяти.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: