0988b24c

Расширенные инструкции перехода


Условные переходы, такие как JC или JE в процессорах 8086, 80186 и 80286 могут быть только ближними (NAER), то есть переход выполняется в границах сегмента и на расстояние -128 байт +127 байт относительно текущего адреса. Это ограничение действует и для условных инструкций цикла, таких как JCXZ или LOOP (на всех процессорах фирмы Intel).

Там, где это необходимо, Турбо Ассемблер может генерировать дополнительные последовательности переходов и обходить это огра- ничение. Например, Турбо Ассемблер может преобразовать инструк- цию:

JC xxx

в инструкции:

JNC temptag JMP xxx

Вы можете разрешить данную дополнительную последовательность переходов в помощью директивы JUMPS, и запретить ее директивой NOJUMPS. По умолчанию Турбо Ассемблер не генерирует это средство.

Когда вы указывает директиву JUMPS, Турбо Ассемблер резерви- рует достаточно места для дополнительных последовательностей пе- рехода во всех условных переходах вперед. Когда определяется фак- тическое расстояние перехода вперед, дополнительная последова- тельность может не понадобиться. Когда это происходит, Турбо Ас- семблер для заполнения лишнего пространства генерирует инструкции NOP.

Чтобы избежать дополнительных инструкций NOP, вы можете:

- использовать переопределение условных переходов, диапазон которых вам известен, например:

JC SHORT abc ADD ax,ax abc:

- задать параметр командной строки /m (подробнее о нем расс- казывается в Главе 2).



Содержание раздела