В x86 ассемблере, то инструкция выполняет безусловный переход. Такая инструкция передает поток выполнения, изменяя регистр указателя инструкции. Есть несколько разных кодов операций, которые выполняют переход; в зависимости от того, находится ли процессор в реальном режиме или в защищенном режиме, и используется инструкция переопределения, инструкции могут принимать 16-битные, 32-битные указатели или указатели сегмента: смещение. JMP
Есть много разных форм переходов: относительные, условные, абсолютные и косвенные по регистру.
Следующие примеры иллюстрируют:
(Обратите внимание, что, хотя первый и второй переходы являются относительными, обычно вместо относительного смещения, закодированного в коде операции, отображается адрес назначения.)
Пример 1: загрузить IP с новым значением 0x89AB
, затем загрузить CS с помощью 0xACDC
и IP с помощью 0x5578
.
JMP 0x89AB JMP 0xACDC:0x5578
Пример 2: Загрузите EIP со значением 0x56789AB1
, только в защищенном или нереальном режиме.
JMP 0x56789AB1
Пример третий: переход к значению, хранящемуся в регистре EAX, только в защищенном режиме.
JMP EAX