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


         

Управление циклами - часть 4


    пока не равно) выполняет обратную к описанной проверку флага нуля:
    цикл здесь завершается, если регистр достиг нуля, или если
    установлен флаг нуля.
      Следующий пример показывает использование команды LOOPNE. В
    примере складываются два списка чисел, чтобы найти пару элементов,
    сумма которых точно равна 100. Так как в каждой итерации перед
    проверкой складываются два чила, команду REPNE CMPSB использовать
    нельзя.
 
      В примере предполагается, что пары регистров DS:SI и ES:DI
    инициализированы так, чтобы указывать на эти списки.
 
      MOV   CX,MAX_LOOP_COUNT ;максимальное число заходов
      BEGIN_LOOP:
      LODSB               ;чтение числа из первого списка
      ADD   AL,ES:[DI]    ;прибавить из второго списка
      INC   DI            ;указатель на следующий элемент
      CMP   AL,100              ;проверка на нужное значение
      LOOPNE      BEGIN_LOOP    ;снова, если не равно и не все
      JE    MATCH_FOUND    ;переход сюда, чтобы определить конец



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