Команды перехода но счетчику

Опубликовано февраля 3, 2018 в Архитектура процессора Intel

JCXZ в отличие от других команд условных переходов, не анализирует арифметические флаги. Эта команда проверяет содержание регистра СХ на равенство 0.

Если равенство имеет место, тогда происходит передача управления по заданному адресу. Если равенство не выполняется, тогда управление передаётся следующей команде.

Эту команду обычно используют при входе в цикл, который при некоторых условиях может не выполняться ни одного раза, т.е. число повторений будет равно нулю. Использование JCXZ в начале цикла в случае нулевого значения счётчика СХ позволяет обойти этот цикл, не выполняя команды, содержащиеся в теле цикла.

Команды перехода но счетчику

Таким образом, команда JCXZ не изменяет содержимого регистра СХ, а только проверяет его значение.

Команды циклов

Команда организации цикла LOOP осуществляет декремент регистра счётчика СХ и сравнение его нового содержимого с нулём. При равенстве осуществляется переход к следующей команде программы и выход из цикла. При невыполнении равенства осуществляется передача управления по адресу перехода в начало цикла. Для корректного применения команды LOOP необходимо перед первым входом в цикл загрузить в СХ число повторений этого цикла.

Команда LOOP является завершающей командой цикла. Поскольку переход в начало цикла осуществляется вверх но программе, то в качестве смещения (cliff) задаётся отрицательное число. Команда LOOP и её модификации задаёт единый способ задания адреса перехода, короткий относительный типа SHORT (байтное смещение).

Модификации команды LOOP:

  • LOOPE (повторять пока равно);
  • LOOPZ (повторять пока ноль).

В этих командах дополнительным условием выхода из цикла является равенство пулю флага ZF. Эти команды целесообразно использовать для поэтапного сравнения двух массивов до обнаружения первых несовпадающих элементов, при этом предполагается, что в теле цикла используется команда СМР.

Другой модификацией LOOP являются:

  • LOOPNE (выполнять пока не равно);
  • LOOPNZ ( выполнять пока не ноль).

Для них дополнительным условием выхода из цикла является значение флага ZF=1. Эти команды рационально использовать для поиска первых совпадающих элементов в сравниваемых массивах.

Эти парные команды, несмотря на различие мнемоник (Е или Z), кодируются одинаковыми машинными кодами (у LOOPE и LOOPZ один код, у LOOPNE и LOOPNZ — другой).

Перейдя по ссылке на сайт этого интернет магазина, вы сможете заказать чехол huawei p10, а так же многое другое!