Программная модель МП-системы на основе процессора Pentium. Особенности организации памяти и допустимые способы адресации, страница 5

Специальные назначения регистров блока РОН возможно и усложняют программирование (надо помнить, кто за что отвечает), но в сочетании с заложенным богатством функциoнального назначения команд принятое архитектурное решение ведет фактически к уменьшению объема программ

В  число  базовых  регистров  процессора Pentium входят  32-битные  регистр  признаков  EFLAGS  и указатель  команд  ЕIP.

32-разрядный указатель команд EIP предназначен для задания  внутрисегментного  смещения  при  определении  адреса выполняемой  команды. Смещение задается относительно базового  адреса  сегмента  команд  CS. Младшие  16  бит регистра  EIP  содержат  16-разрядный  указатель  команд  IP, который используется при адресации  команд  в  программах, написанных  для  16-разрядных  процессоров  8086  и  80286.  Указатель команд EIP программно недоступен. Его содержимое изменяется  ри  выполнении команд  передачи управления и  при  вызове обработчиков прерываний.

32-разрядный регистр признаков EFLAGS содержит флаги, которые можно разделить на три класса: флаги результата, флаги управления и системные флаги.

Шесть флагов результата CF, PF, AF, ZF, SF и OF фиксируют признак результата АЛУ. Значения этих флагов можно использовать при выполнении команд условных переходов для выбора требуемой ветви продолжения программы. Назначение флагов результата следующее.

СF (Carry Flag)- флаг переноса, фиксирующий значение переноса (заема), возникающего при сложении (вычитании) байтов, слов или двойных слов, а также значение выдвигаемого бита при сдвиге операнда.

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

AF (Auxiliary Flag)- флаг межтетрадного переноса, фиксирующий перенос (заем) из младшей тетрады аккумулятора AL в старшую при сложении (вычитании). Флаг AF используется только в командах двоично-десятичной коррекции результата арифметических операций с двоично-десятичными операндами, которые оперируют исключительно с младшими байтами.

ZF  (Zero Flag) - флаг нуля, фиксирующий нулевой результат операции.

SF  (Sign Flag) - флаг знака. Флаг SF дублирует значение старшего бита результата, который при использовании дополнительного кода соответствует знаку числа.

OF (Overflow Flag) - флаг переполнения, фиксирующий переполнение при выполнении операций со знаковыми числами. Флаг OF сигнализирует о потере старшего бита результата операций сложения или вычитания в связи с переполнением разрядной сетки при работе со знаковыми числами. При сложении этот флаг устанавливается в 1, если происходит перенос в старший бит и нет переноса из старшего бита или имеется перенос из старшего бита, но отсутствует перенос в него. При вычитании флаг OF устанавливается в 1, когда возникает заем из старшего бита, но заем в старший бит отсутствует либо имеется заем в старший бит, но отсутствует заем из него. При отсутствии указанных условий флаг OF сбрасывается в 0. В системе команд процессора имеется специальная команда прерывания при переполнении, которая при установленном флаге OF генерирует программное прерывание.

В следующую группу флагов регистра признаков включены три флага управления DF, IF и SF, которые используются для управления работой микропроцессора.

Флаг направления DF (Direction Flag) служит для автоматического увеличения (инкремента) при DF=0 или уменьшения (декремента) при DF=1 на 1 содержимого регистров SI и DI при строковых операциях. Можно сказать, что с помощью флага DF обеспечивается реализация ограниченной автоинкрементной или автодекрементной адресации. Флаг DF устанавливается и сбрасывается с помощью команд STD (установить флаг направления) и CLD (сбросить флаг направления).