JMP (инструкция x86)
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
На языке ассемблера x86 JMP
инструкция выполняет безусловный переход. Такая инструкция передает поток выполнения путем изменения счетчика программы . Существует ряд различных кодов операций , выполняющих переход; в зависимости от того, находится ли процессор в реальном режиме или в защищенном режиме , и используется инструкция переопределения, инструкции могут принимать 16-битные , 32-битные указатели или указатели сегмента:смещение . [1]
Существует множество различных форм переходов: относительные, условные , абсолютные и регистро-косвенные .
Следующие примеры иллюстрируют:
- относительный переход с 16-битным указателем;
- длинный переход (межсегментный), относительный переход с 32-битным указателем;
- и косвенный абсолютный переход с использованием регистра EAX .
(Обратите внимание, что хотя первый и второй переходы являются относительными, обычно вместо относительного смещения, закодированного в коде операции, отображается адрес назначения.)
Пример первый: загрузить IP с новым значением. 0x89AB
, затем загрузите CS с помощью 0xACDC
и ИП с 0x5578
.
JMP 0x89AB
JMP 0xACDC:0x5578
Пример второй: загрузка EIP со значением 0x56789AB1
, только в защищенном режиме или нереальном режиме .
JMP 0x56789AB1
Пример третий: переход к значению, хранящемуся в регистре EAX, только в защищенном режиме.
JMP EAX
Ссылки
[ редактировать ]- ^ «Руководство разработчика программного обеспечения для архитектуры Intel, том 2: Справочное руководство по набору команд (6,5 МБ)» (PDF) . Архивировано из оригинала (PDF) 19 февраля 2009 г. Проверено 3 ноября 2009 г.