Регистры общего назначения




Рис. 1 От бита до двойного слова

Рис. 2

 

  • блок выборки инструкций;
  • блоки декодирования инструкций;
  • блоки выборки данных;
  • управляющий блок;
  • блоки выполнения инструкций;
  • блоки сохранения результатов;
  • блок работы с прерываниями;
  • ПЗУ, содержащее микрокод;
  • набор регистров;
  • счетчик команд.

CF (Флаг переноса, бит 0)

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

PF (Флаг четности, бит 2)

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

AF (Флаг вспомогательного переноса, бит 4)

Фиксирует перенос (заем) из младшей тетрады, т.е. из бита 3 в старшую тетраду при сложении (вычитании). Используется только для двоично-десятичной арифметики, которая оперирует исключительно младшими байтами.

ZF (Флаг нуля, бит 6)

Сигнализирует о получении нулевого (ZF = 1) или ненулевого (ZF = 0) результата операции.

SF (Флаг знака, бит 7)

Дублирует значение старшего бита результата, который при использовании дополнительного кода соответствует знаку числа (0 – положительное число, 1 – отрицательное).

TF (Флаг трассировки, бит 8)

При TF = 1, микропроцессор переходит в пошаговый режим работы, применяемый при отладке программ, когда автоматически генерируется особая ситуация отладки (#DB) после выполнения каждой команды. Прерывание отладки начнет генерироваться, если прикладная программа установит флаг TF с помощью команд POPF, POPFD или IRET.

IF (Флаг разрешения прерываний, бит 9)

При IF = 1, микропроцессор воспринимает (распознает) и соответственно реагирует на запрос прерывания по входу INTR#; при IF = 0, прерывания по этому входу запрещаются и микропроцессор игнорирует поступающие запросы прерываний. Значение флага IF не влияет на восприятие внешних немаскируемых прерываний по входу NMI#, а также внутренних программных прерываний, выполняемых по команде INT. В защищенном режиме изменение этого флага командами CLI, STI, POPF, POPFD и IRET возможно не всегда и определяется текущим уровнем привилегий выполняемого кода (CPL) и уровнем привилегий ввода/вывода (IOPL).

DF (Флаг направления, бит 10)

Флаг направления определяет порядок обработки цепочек в соответствующих командах (строковые команды: STOS, LODS, CMPS, OUTS и т.д.) — от меньших адресов к большим (DF = 0) или от больших к меньшим (DF = 1).

OF (Флаг переполнения, бит 11)

Флаг переполнения сигнализирует о потере старшего бита результата в связи с переполнением разрядной сетки при работе со знаковыми числами. При сложении этот флаг устанавливается в 1, если происходит перенос в старший бит и нет переноса из старшего бита, или имеется перенос из старшего бита, но отсутствует перенос в него; в противном случае, флаг OF устанавливается в 0. При вычитании он устанавливается в 1, когда возникает заем из старшего бита, но заем в старший бит отсутствует, либо имеется заем в старший бит, но отсутствует заем из него.

IOPL (Уровень привилегий ввода/вывода, биты 13 и 12: Intel286 …)

Уровень привилегий ввода/вывода используется в механизме защиты для управления доступом к адресному пространству ввода/вывода. Текущий уровень привилегий (CPL) совместно с IOPL определяет возможность по изменению поля IOPL командами POPF, POPFD и IRET.

NT (Вложенная задача, бит 14: Intel286 …)

Процессор устанавливает и проверяет этот флаг для контроля за прерванными задачами и при вызове процедур. Флаг NT влияет на действия, производимые командой IRET. Этот флаг может быть изменен командой POPF, POPFD и IRET. Некорректные изменения этого флага могут привести к возникновению различных особых ситуаций в прикладных программах.

RF (Флаг возобновления, бит 16: Intel386 …)

Флаг RF временно выключает обработку особых ситуаций отладки для того, чтобы команда, вызвавшая такую ситуацию, могла быть перезапущена и не стала бы причиной новой особой ситуации. Отладчик устанавливает этот флаг командой IRETD при возврате в прерванную программу. Команды POPF, POPFD (в режиме V86) и IRET на этот флаг не влияют.

VM (Виртуальный режим, бит 17: Intel386 …)

Установка флага VM переключает процессор в режим виртуального-8086 (специальный случай защищенного режима).

AC (Режим контроля выравнивания, бит 18: Intel486 …)

Установка флага AC и бита AM регистра CR0 включает контроль выравнивания при обращении к памяти. При этом генерируется особая ситуация контроля выравнивания (#AC), если происходит обращение к невыровненному операнду, например, к слову по нечетному адресу или к двойному слову по адресу не кратному четырем. Особая ситуация контроля выравнивания генерируется только при уровне привилегий равном 3.

VIF (Виртуальное прерывание, бит 19: Pentium …)

Этот флаг используется в специальном расширенном режиме обработки прерываний (виртуальные прерывания управляются флагом CR4.VME) и является виртуальным подобием флага IF. В зависимости от текущего значения этого флага в режиме V86 и в защищенном режиме (когда IOPL < 3, CPL = 3) процессор определенным образом обрабатывает вызовы внешних маскируемых прерываний (векторы от 32 до 255). Флаг VIF используется совместно с флагом VIP и позволяет обеспечить нормальное выполнение старого ПО, использующего команды управления маскируемыми прерываниями, в современной мультипроцессорной и мультизадачной программно-аппаратной среде.

VIP (Ожидание виртуального прерывания, бит 20: Pentium …)

Флаг VIP используется совместно с флагом VIF и позволяет прикладным программам в режиме поддержки виртуальных прерываний отслеживать внешние вызовы прерываний даже тогда, когда программа замаскирует их выполнение (индикация отложенных виртуальных прерываний). За дополнительной информацией по использованию этих флагов обратитесь к описанию прерываний и особых ситуаций.

ID (Флаг идентификации, бит 21: Pentium …)

Предназначен для проверки — поддерживается ли процессором команда CPUID. Если в программе можно установить и сбросить этот флаг, значит команда CPUID данным процессором поддерживается.

Регистры общего назначения



Поделиться:




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

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


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