Предыдущий раздел ВЫВОД НА ЭКРАН ЧИСЕЛ В ШЕСТНАДЦАТЕРИЧНОЙ ФОРМЕ Следующий раздел

6.2. Команды условного перехода

Напомним, что флаги состояния устанавливаются для того чтобы можно было менять ход выполнения программы в зависимости от текущей ситуации. Анализ флагов состояния и соответствующие переходы в программе выполняют команды, называемые командами условного перехода.

Команда jz (от "Jump if Zero" – перейти, если ноль) проверяет флаг нуля, и если он установлен (ZR), то выполняется переход на новый адрес. Таким образом, если мы вслед за командой sub напишем, например,jz 15a”, то нулевой результат вычитания означает, что ЦП начнет выполнять не следующую по порядку команду, а команду, находящуюся по адресу 15А.

Противоположной по отношению к jz является команда jnz ("Jump if Not Zero" – перейти, если не ноль). В следующей простой программе из числа вычитается единица до тех пор, пока в результате не получится ноль:

      

100                 sub    al,01

102                 jnz     100

104                 int     20

 

П о м е с т и т е  небольшое число в АL и протрассируйте программу, чтобы увидеть, как работает условное ветвление. При достижении последней команды введите команду Debug.

Команда условного перехода ja (от "Jump if Above" – перейти, если больше) осуществляет переход на указанный в команде адрес, если по результатам предыдущей команды флаг переноса CF сброшен (на листинге CF = NC). Флаг нуля ZF также должен быть сброшен. Данная команда обычно записывается сразу за командой сравнения (cmp) двух беззнаковых чисел. Если первое сравниваемое число больше второго, то команда  ja осуществляет переход.

 


Предыдущий раздел В начало Следующий раздел