Выше мы рассматривали уже команду
jmp адрес
безусловного перехода. Это команда передаёт управление на команду, которая находится по указанному адресу. Адрес может быть указан с помощью смещения, состоящего из одного байта (SHORT PTR) или слова (NEAR PTR), или он может быть двойным словом (FAR PTR). Команда прибавляет к счетчику команд IP указанное смещение или устанавливает IP, равным указанному двойному слову.
При внутрисегментном переходе предполагается, что содержимое регистра CS не изменяется, а изменяется регистр IP.
Для команды
jmp short ptr lab1
Метка lab1 отстоит от текущей команды в диапазоне от –128 до +127 байт.
При переходе
jmp near ptr lab1
Смещение lab1 занимает два байта, и lab1 находится в диапазоне от –32768 до 32765 байт от текущей команды.
Для межсегментного перехода состоит из четырех байт, два из которых составляют смещение, и два – значение сегментной составляющей адреса. Для команды
jmp far ptr lab1
Метка lab1 может находиться в другом сегменте. В этом случае эта метка должна быть определена как
lab2 label far
Пример. В программе
<1> code segment
<2> assume cs:code
<3> start:
<4> jmp far ptr lab2
<5> lab1 label far
<6> mov ax,4c00h
<7> int 21h
<8> code ends
<9> code2 segment
<10> assume cs:code2
<11> lab2 label far
<12> mov ah,10h
<13> int 16h
<14> jmp far ptr lab1
<15> code2 ends
<16> end start
Производится переход во второй сегмент, где программа ожидает ввода символа с клавиатуры, а после его ввода возвращается в первый сегмент.