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

редактировать

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

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

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

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

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

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

JMP 0x89AB JMP 0xACDC:0x5578

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

JMP 0x56789AB1

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

JMP EAX
Рекомендации
Последняя правка сделана 2023-04-16 10:13:54
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте