Assembler для начинающих



         

Проверки кода условия - часть 5


    которые может проверить микропроцессор. Для того чтобы отличить
    команды условного перехода ориентированные на беззнаковую
    арифметику от знаковой арифметики, используются слова "выше" и
    "ниже" в названии команд. Вероятно, этим выражается точка зрения
    создателей набора команд, заключающаяся в том, что арифметика без
    знака будет использоваться в программах для вычисления адресов, а
    отрицательных адресов не бывает. "Выше" и "ниже" показывают
    расположение значения адресов внутри адресного пространства, в то
    время как "больше" и "меньше" говорит о соотношении чисел со
    знаком. Здесь важно, что выполняется именно та команда, которая
    указана в программе на языке ассемблера, независимо от типов
    сравниваемых операндов. Например, программа сравнивает два числа со
    знаком, а использует команду JA (переход, если выше).
    Микропроцессор выполняет условный переход в зависимости от
    соотношения двух чисел, считая их числами без знака, т.е. именно
    программист обязан выбрать правильную команду условного перехода.
 
      Микропроцессор 8088 при сравнении двух чисел без знака
    учитывает только два флага. Флаг переноса показывает, какое из
    чисел больше. Сравнение устанавливает флаг переноса, если первый
    операнд ниже второго или сбрасывает флаг переноса, если первый
    операнд либо выше, либо равен второму операнду, и флаг нуля
    определяет, что в данном случае верно.
 
      Сравнения без знака можно читать так же, как и сравнения со
    знаком. Например,
 
      CMP   AX,BX
      JA    LABEL
 
      - переход на метку LABEL происходит, если регистр AX выше
    регистра BX. Условный переход выполняется всегда, если объявленное
    соотношение существует между первым и вторым операндами
    предшествовавшей команды сравнения.



Содержание  Назад  Вперед