Архитектура микропроцессорной системы. Состав машинных команд и основы программирования микропроцессорной системы на ассемблере. Булатов В.Н. - 47 стр.

UptoLike

Составители: 

OF — арифметическое переполнение. Флаг OF=1, если
относительно знакового бита в результате выполнения, например,
арифметических команд произошла следующая метаморфоза:
(+)+(+)=(-); (+)-(-)=(-);
(-)+(-)=(+); (-)-(+)=(+);
(здесь в скобках указаны знаки).
CF —переполнение (байта, слова) или заем, если было вычитание.
ZF —признак нулевого результата. ZF = 1 — значит получили в
результате команды АЛУ, INC, или DEC — результат, равный нулю.
SF —знак. Здесь все просто: если команда воздействует на флаги, то флаг
SF запоминает содержимое старшего бита данных:
а) SF:= <D7>, если операнд — 1 байт;
б) SF:= <D15>, если операнд — 1 слово.
PF — событие (признак) наличия в результате четного (PF = 1)
числа единиц; касается только байта (если слово, томладшего байта).
Приведем пример. Пусть в AX хранится: 1DCO. Выполним команду:
AND AX,1245
Н-код Двоичный код
1DCO 0001 1101 1100 0000 (АХ)
И И
1245
0001 0010 0100 0101 data
Результат=1040 0001 0000 0100 0000 (АХ)
(D15)
Каково же будет состояние флагов?
OF = 0; арифметического переполнения не было (хотя для этой
команды это событие бессмысленно, но ЦА выполняет свой алгоритм);
CF = 0; логическая операцияпоразрядная операция, и у нее не
может быть переноса (заема);
ZF = 0; результат отличен от нуля: 1040 0;
SF = 0; знаковый флажок запоминает: SF= < D15> = 0; хотя это для
данной команды то же не имеет смысла, но ЦА выполняет свой алгоритм;
PF = 0 в младшем байте одна единица, то есть нет четного
числа единиц (кстати, 0 —это четное число единиц).
Знание правил установки флагов и позволяет эффективно
использовать команды условного перехода.
В таблице 7 указаны и комбинированные условия переходов.
В этом случае лучше использовать для обозначения команды в
ассемблере буквы, не входящие в скобки. Разберем эти условия
подробнее.
1) CF V ZF. Допустим, из числа А вычитается число В, или
сравнивается число А с числом В (наиболее часто используемый прием
применения этого условия). Каковы варианты состояний флагов,
соответствующие этой функции? Для ответа на этот вопрос составим
47
      OF — арифметическое переполнение. Флаг OF=1, если
относительно знакового бита в результате выполнения, например,
арифметических команд произошла следующая метаморфоза:
(+)+(+)=(-);                 (+)-(-)=(-);
(-)+(-)=(+);                 (-)-(+)=(+);
(здесь в скобках указаны знаки).
      CF —переполнение (байта, слова) или заем, если было вычитание.
      ZF —признак нулевого результата. ZF = 1 — значит получили в
результате команды АЛУ, INC, или DEC — результат, равный нулю.
      SF —знак. Здесь все просто: если команда воздействует на флаги, то флаг
SF запоминает содержимое старшего бита данных:
      а) SF:= , если операнд — 1 байт;
      б) SF:= , если операнд — 1 слово.
      PF — событие (признак) наличия в результате четного (PF = 1)
числа единиц; касается только байта (если слово, то —младшего байта).
      Приведем пример. Пусть в AX хранится: 1DCO. Выполним команду:
       AND AX,1245

             Н-код              Двоичный код
             1DCO       0001 1101 1100 0000         (АХ)
           И                      И
             1245       0001 0010 0100 0101         data
  Результат=1040         0001 0000 0100 0000         (АХ)
                        │
                       (D15)
     Каково же будет состояние флагов?
          OF = 0; арифметического переполнения не было (хотя для этой
     команды это событие бессмысленно, но ЦА выполняет свой алгоритм);
          CF = 0; логическая операция —поразрядная операция, и у нее не
     может быть переноса (заема);
     ZF = 0; результат отличен от нуля: 1040 ≠ 0;
          SF = 0; знаковый флажок запоминает: SF= < D15> = 0; хотя это для
     данной команды то же не имеет смысла, но ЦА выполняет свой алгоритм;
     PF = 0 – в младшем байте одна единица, то есть нет четного
числа единиц (кстати, 0 —это четное число единиц).
          Знание правил установки флагов и позволяет эффективно
     использовать команды условного перехода.
          В таблице 7 указаны и комбинированные условия переходов.
     В этом случае лучше использовать для обозначения команды в
     ассемблере буквы, не входящие в скобки. Разберем эти условия
     подробнее.
     1) CF V ZF. Допустим, из числа А вычитается число В, или
сравнивается число А с числом В (наиболее часто используемый прием
применения этого условия). Каковы варианты состояний флагов,
соответствующие этой функции? Для ответа на этот вопрос составим
                                                                           47