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


         

выполняет первую команду LOOP, он


    выполняет первую команду LOOP, он уменьшает CX от 0 до 0FFFFH, и
    поскольку теперь регистр CX ненулевой, повторяет цикл. Таким
    образом, загрузка нулевого значения счетчика циклов - специальный
    случай. Этот специальный случай обрабатывается командой JCXZ
    (переход, если содержимое регистра CX равно 0). Эта команда
    проверяет текущее содержимое регистра CX, и делает переход, если
    оно равно нулю. Команда не проверяет ни одного флага, и не влияет
    ни на один из них. Следующий пример аналогичен предыдущему, за
    исключением того, что он загружает регистр CX из ячейки памяти,
    содержимое которой вычисляется во время выполнения программы. По
    этой причине может оказаться, что счетчик циклов нулевой, и пример
    использует команду JCXZ, чтобы проверить, нужно ли полностью
    пропустить тело цикла.
 
         MOV         CX,LOOP_COUNT_WORD
         JCXZ    END_OF_LOOP
      BEGIN_LOOP:
         ;   ... тело цикла
         LOOP    BEGIN_LOOP
      END_OF_LOOP:
 
      В программе не нужно использовать команду JCXZ в каждом цикле с
    вычисляемым счетчиком. Если программист знает, что счетчик циклов
    никогда не будет равен нулю, проверка не нужна. Однако опыт
    показывает, что значение, которое "никогда" не должно появиться,
    обычно появляется в первую очередь, как только вы начинаете
    выполнять программу.
 
      Оставшиеся две команды цикла предоставляют еще большие
    возможностей при управлении циклами. Эти команды аналогичны
    префиксам REPE и REPNE. Если команда LOOP выходит из цикла, только
    когда в регистре CX оказывается нуль, то команда LOOPE (цикл, пока
    равно) выходит из цикла, если установлен флаг нуля, или если в
    регистре CX получился 0. Тем самым становится возможным
    двойственное завершение цикла. Программа может загрузить в регистр
    CX максимальное число итераций цикла, а затем проверять флаг нуля в
    конце каждого цикла на условие завершения. Команда LOOPNE (цикл,

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