logo
КС-ZAO / Лекции ЦЭВМруский вариант11

Новые версии инструкций loop и jcxz

Инструкции LOOP, LOOPE, LOOPNE и JCXZ работают обычно с 16-разрядным регистром CX. Процессор 8086 предусматривает как 16- разрядную, так и 32-разрядную версию этих инструкций. 32-разрядные версии вместо регистра CX могут работать с регистром ECX.

Инструкции LOOP, LOOPE и LOOPNE используют в качестве счетчика цикла регистр CX или ECX, в зависимости от типа сегмента (16 -битового или 32-битового). Если вы хотите обеспечить, чтобы в качестве регистра управления циклом всегда используется регистр CX (даже в 32-битовом сегменте), то используйте словную форму данных инструкций (LOOPW, LOOPWE или LOOPWNE). Аналогично, если нужно обеспечить использование в качестве управляющего циклом регистра регистр ECX, используйте следующие формы инструкций: LOOPD, LOOPDE и LOOPDNE.

Инструкция LOOPD уменьшает содержимое ECX и выполняет переход по указанному смещению, если возвращаемое значение отлично от нуля.

Инструкция LOOPDE уменьшает содержимое ECX и выполняет переход на целевое смещение, пока флаг нуля равен 1, а ECX не равен 0. (LOOPDZ - это еще одна форма той же инструкции.) Аналогично, инструкция LOOPDNE уменьшает значение ECX и переходит по целевому смещению, пока флаг нуля равен 0, а ECX не равен 0. (LOOPDNZ - это эквивалентная инструкция.)