Указатель команд и регистр флагов

IP – указатель команд, выполняет роль счетчика команд; его содержимое – это смещение относительно начального адреса сегмента команд (CS).

Во время выполнения программы содержимое регистра IP изменяется и всегда хранит адрес следующей выбираемой для выполнения команды.

Flags (PSW) – регистр флагов, содержит информацию о текущем состоянии МП. Рассмотрим структуру регистра флагов подробнее (см. рис.3).

 

Flags         OF DF IF TF SF ZF   AF   PF   CF
               
                                       

Рис.3

Флаги разделяют на:

- условные (флаги условий), отражающие результаты выполнения предыдущей команды в АЛУ и используемые в командах условных переходов;

- управляющие (флаги управления), от которых зависит выполнение специальных функций МП.

Условные флаги перечислим в алфавитном порядке.

AF (Auxiliary Carry flag) – флаг вспомогательного переноса, предназначенный для обработки чисел в BCD-формате, используется при выполнении арифметических операций над числами длиной 1 байт для индикации переноса из младшей тетрады в старшую (или займа из старшей тетрады). Здесь BCD (Binary Coded Decimal) – двоично-десятичное представление чисел.

CF (Carry flag) – флаг переноса, предназначен для индикации переноса из старшего байта, используется в операндах, разрядность которых больше 16 бит.

OF (Overflow flag) – флаг переполнения, предназначен для индикации переполнения результатов при выполнении арифметических операций. При сложении он устанавливается в 1, если есть перенос в старший бит, но нет переноса из старшего бита.

PF (Parity flag) – флаг четности, используется как контрольный бит, устанавливается в 1, если младший байт содержит четное число единиц.

SF (Sign flag) – флаг знака, равен 1 для отрицательного результата.

ZF (Zero flag) – признак нулевого результата.

Управляющие флаги устанавливаются программным путем и используются для изменения состояния МП.

DF (Direction flag) – флаг направления, применяется в командах обработки строк. При DF=1 обработка осуществляется от наибольшего адреса к меньшему, а при DF=0 – от начала к концу.

Установка флага осуществляется следующими командами ассемблера

Команда Устанавливает значение DF
STD
CLD

 

IF (Interrupt-Enable flag) – разрешение прерывания, используется для разрешения или запрета обработки внешнего маскируемого прерывания. Устанавливается командами ассемблера

Команда Значение IF Результат установки
STI Обработка прерывания разрешена
CLI Обработка прерывания запрещена

 

TF (Trap flag) – трассировка, используется для осуществления покомандного (пошагового) выполнения программы. При TF=1 МП автоматически вырабатывает внутренние прерывания после каждой команды, что удобно для отладочного режима выполнения программы. Изменение состояния флага TF не выполняется одной командой, а требует последовательности специальных команд, которые будут рассмотрены ниже.