Действие |
Далее перечислены возможные варианты задания операнда:
- rel8/16/32 — короткий относительный переход. Значение rel8/16/32 трактуется как знаковое и является смещением перехода относительно следующей за JMP команды в сегменте кода, то есть адрес перехода равен (EIP/IP) + (rel8/16/32);
- r16(32)/m16(32) — близкий абсолютный косвенный переход. Операнд — регистр г16(32) или ячейка памяти m16(32), содержащие адрес перехода в текущем сегменте кода;
- ptr16:16(32) — дальний абсолютный переход. Операнд — компоненты полного адреса в виде 4- или 6-разрядного указателя, по которому необходимо произвести переход;
- m16:16(32) — дальний абсолютный косвенный переход. Операнд — адрес ячейки памяти размером 32(48) битов со структурой m16:16(32), содержащей компоненты адреса перехода.
Выполнение команды при дальнем переходе зависит от режима работы процессора:
- в реальном режиме или режиме виртуального процессора 8086 команда JMP передает управление по адресу, определяемому операндом, который может задаваться прямо (ptr16:16(32)) или косвенно (m1б:16(32));
- в защищенном режиме выполняются три типа переходов: дальний переход в подчиненный или неподчиненный сегмент кода; дальний переход через шлюз вызова; переключение задачи.
Команду JMP нельзя использовать для передачи управления между уровнями привилегий. |