Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Регистры состоянияиуправления
В микропроцессор включены несколько регистров (см. рис. 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.
|