Регистры состояния и управления – регистры, которые постоянно содержат информацию о состоянии микропроцессора или программы, команды которой в данный момент загружены на конвейер.
К этим регистрам относятся:
· регистр флагов EFLAGS/FLAGS ( рисунок Ошибка! Источник ссылки не найден.);
· регистр указателя команды EIP/IP.
Используя эти регистры, можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора.
Регистр EIP/IP называется указателем команд (Instruction Pointer register). Регистр EIP/IP имеет разрядность 32/16 бит и содержит смещение или адрес следующей подлежащей выполнению команды.Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра EIP/IP.
Регистр EFLAGS/FLAGS называется регистром флагов (flag register). Он предназначен длясигнализации процессору о его состоянии или о том, как выполнилась та или иная арифметическая или логическая команда. Разрядность регистра EFLAGS/FLAGS – 32/16 бит.
Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами.
Флаг – это бит, принимающий значение 1, если он установлен, и 0, если он сброшен.
За битами регистра флагов закреплены соответствующие имена. Исходя из особенностей использования, флаги регистра EFLAGS/FLAGS можно разделить на следующие три группы:
· 8 флагов состояния.Эти флаги могут изменяться после выполнения машинных команд. Флаги состояния регистра EFLAGS отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм;
· 1 флаг управления. Обозначается как df (Directory Flag). Он находится в десятом бите регистра EFLAGS и используется цепочечными командами.
· 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086. Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к прерыванию работы программы.