Сделать свой сайт бесплатно

Реклама

Создай свой сайт в 3 клика и начни зарабатывать уже сегодня.

@ADVMAKER@
54. Команды для программирования циклов.
Добавил: evmka 21 января 2012 06:07

54. Команды для программирования циклов.

1)        Jcxz метка_перехода – переход осуществляется, если cx=0

Команда JCXZ выполняет здесь две функции: предотвращает выполнение «пустого» цикла (когда счетчик цикла в СХ равен нулю) и отслеживает окончание цикла после обработки всех элементов поля mas. Команда DEC после каждой итерации цикла уменьшает значение счетчика в регистре СХ на 1. При такой организации цикла все операции по его организации выполняются «вручную». Но, учитывая важность такого алгоритмического элемента, как цикл, разработчики процессора ввели в систему команд группу из трех команд, облегчающую программирование циклов. Эти команды также используют регистр ЕСХ/СХ как счетчик цикла.

loop метка_перехода

Команда реализует описанные далее действия.

1. Декремент регистра ЕСХ/СХ.

2. Сравнение регистра ЕСХ/СХ с нулем:

П если (ЕСХ/СХ) > 0, то управление передается на метку перехода;

П если (ЕСХ/СХ) = 0, то управление передается на следующую после LOOP команду.

Команды LOOPE и LOOPZ (Loop still сх <> 0 or Zero flag = 0 — повторить цикл пока

СХ <> 0 или ZF = 0)

Синтаксис команд: loope/loopz метка_перехода. Команды реализуют описанные далее действия.

1. Декремент регистра ЕСХ/СХ.

2. Сравнение регистра ЕСХ/СХ с нулем и анализ состояния флага нуля ZF:

П если (ЕСХ/СХ) > 0 и ZF = 1, управление передается на метку перехода;

если (ЕСХ/СХ) = 0 или ZF=0, управление передается на следующую после ШОР

команду.

Команды LOOPNE и LOOPNZ (Loop still ex <> 0 or NonZero flag = 0 — повторить

цикл, пока СХ <> 0 или ZF = 1) Синтаксис команд:loopne/loopnz метка_перехода

Команды реализуют описанные далее действия.

1. Декремент регистра ЕСХ/СХ.

2. Сравнение регистра ЕСХ/СХ с нулем и анализ состояния флага нуля ZF:

П если (ЕСХ/СХ) > 0 и ZF = 0, управление передается на метку перехода;

П если (ЕСХ/СХ) = 0 или ZF = 1, управление передается на следующую после LOOP

команду.

Команды LOOPE/LOOPZ и LOOPNE/LOOPNZ по принципу своей работы являются взаимнообратными. Они расширяют действие команды LOOP тем, что дополнительно анализируют флаг ZF. Это дает возможность организовать досрочный выход из цикла, используя этот флаг в качестве индикатора.

Недостаток команд организации цикла LOOP, LOOPE/LOOPZ и LOOPNE/LOOPNZ заключается в том, что они реализуют только короткие переходы (от -128 до +127 байт). Для работы с длинными циклами придется использовать команды условного перехода и команду JMP.

Просмотры (390)  Комментарии (0)  Форум (51-64)
Зарегистрированный
Анонимно