Организация длинных циклов

Заметим, что специальные команды организации цикла loop, loope / loopz и loopne / loopnz, также как и команды условных переходов, реализуют только короткие переходы (от –128 до +127 байт), так как для адреса перехода в коде команд отводится только один байт. То есть тело цикла ограничивается только 128 байтами. Если тело цикла имеет большую длину, цикл необходимо организовывать другим образом.

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

Для организации длинных циклов следует использовать команды условного перехода и команду jmp.

Схема реализации длинного цикла:

mov cx,N CYCL: <тело цикла> dec cx cmp cx,0 je Out jmp CYCL Out:...

То есть, для организации длинного цикла необходимо «вручную» уменьшать содержимое параметра (счетчика) цикла и сравнивать полученное значение с нулем. Когда выполнено определенное количество повторений (cx = 0), с помощью команды условного перехода je следует выйти из цикла, иначе — командой безусловного перехода jmp необходимо осуществить переход на начало цикла.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: