WikiDer > JMP (инструкция x86)

JMP (x86 instruction)

в язык ассемблера x86, то JMP инструкция выполняет безусловный переход. Такая инструкция передает поток исполнение путем изменения указатель инструкции регистр. Есть несколько разных коды операций совершающие прыжок; в зависимости от того, находится ли процессор в реальный режим или же защищенный режим, и используется инструкция переопределения, инструкции могут принимать 16 бит, 32-битный, или сегмент: смещение указатели.[1]

Есть много разных форм прыжков: относительные, условный, абсолютное и регистр-косвенные переходы.

Следующие примеры иллюстрируют:

  1. относительный переход с 16-битным указателем;
  2. длинный переход (межсегментный), относительный переход с 32-битным указателем;
  3. и косвенный регистр абсолютный скачок с использованием Регистр EAX.

(Обратите внимание, что, хотя первый и второй переходы являются относительными, обычно вместо относительного смещения, закодированного в коде операции, отображается адрес назначения.)

Пример 1: загрузить IP с новым значением 0x89AB, затем загрузите CS с 0xACDC и IP с 0x5578.

JMP 0x89ABJMP 0xACDC:0x5578

Пример 2: Загрузите EIP со значением 0x56789AB1, только в защищенном режиме или нереальный режим.

JMP 0x56789AB1

Пример третий: переход к значению, хранящемуся в регистре EAX, только в защищенном режиме.

JMP EAX

Рекомендации

  1. ^ "Руководство разработчика программного обеспечения для архитектуры Intel, том 2: Справочное руководство по набору инструкций (6,5 МБ)" (PDF). Архивировано из оригинал (PDF) 19 февраля 2009 г.. Получено 2009-11-03.