Команда безусловного перехода

Безусловные переходы выполняются с помощью команды JMP (от англ. JuMP – прыгнуть), формат которой показан на рис.9.2.

Команда безусловного перехода - student2.ru

Рис. 9.2. Формат команды JMP

Адрес перехода чаще всего задается в виде метки. Выполнение команды не оказывает влияния на состояние флагов.

Безусловные переходы могут быть межсегментными (изменяются регистры CS и IP) и внутрисегментными (изменяется только регистр IP). Внутрисегментный переход может быть следующих типов:

– прямой;

– прямой короткий;

– косвенный.

Команда прямого перехода позволяет передавать управление в пределах всего сегмента. В этом случае тип перехода в команде JMP не указывается. Адрес перехода находится в самой команде.

m1: MOV AX,BX

JMP m1

Команда прямого короткого перехода применяется, когда расстояние от команды JMP до адреса перехода лежит в пределах –128…+127 байт (примерно 35…45 команд). Адрес перехода находится в самой команде. В отличие от прямого перехода такая команда занимает меньше места (два байта против трех) в памяти и быстрее выполняется. Если адрес перехода расположен до команды JMP, то ассемблер формирует короткую или обычную команду прямого безусловного перехода без дополнительных указаний (так как он уже рассчитал все адреса и знает, на каком расстоянии находится точка перехода от команды JMP). В случае расположения адреса перехода после команды JMP транслятор не может сам определить тип перехода, так как у него еще нет информации об адресе перехода, и по умолчанию он формирует команду прямого перехода. Для того чтобы в этом случае транслятор формировал команду короткого прямого перехода в команде JMP необходимо указывать тип перехода с помощью оператора ptr с типом short (см. разд.7.1):

JMP short ptr m1

; 35…45 команд (127 байт)

m1:

m2:

; 35…45 команд (–128 байт)

JMP m2

В случае косвенного перехода в команде JMP указывается не сам адрес перехода, а место где он хранится:

per DW m1

JMP per ;переход на метку m1

MOV DX,per

JMP DX ;переход на метку m1

m1:

Наши рекомендации