Выход из цикла по флагу ZF - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Возник такой вопрос по этому коду:
m2:   inc cl
      shr al, 1
      jnz m2
Пройдя через отладчик получаются такие значения: Входные данные: CL = 0h AL = 20h Итерации: 1) cl = 1, al = 10h zf = 0 2) cl = 2, al = 8h zf = 0 3) cl = 3, al = 4h zf = 0 4) cl = 4, al = 2h zf = 0 5) cl = 5, al = 1h zf = 0 6) cl = 6, al = 0h zf = 1 Вопрос в том, что по условию jnz выход из этого куска кода будет при zf = 0. А у меня выход происходит при zf = 1. Программа работает правильно, интересно почему она работает

Решение задачи: «Выход из цикла по флагу ZF»

textual
Листинг программы
m2: dec cx
   jnz m2; или loop m2

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Переменная CX уменьшается на единицу.
  2. Если CX не равен нулю, то происходит переход к метке m2.
  3. Если CX равен нулю, то происходит выход из цикла.

Оцени полезность:

12   голосов , оценка 3.833 из 5