Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






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

- регистр флагов EFLAGS/FLAGS;

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

 

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

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

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

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

Таблица 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)   Используется в защищенном режиме работы микропроцессора для фиксации того факта, что одна задача вложена в другую

 

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

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

Таблица 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, то установка данных битов приведет к тому, что все обращения по некратным адресам будут возбуждать исключительную ситуацию

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.