JMP (instrucción x86)
En el lenguaje ensamblador x86, la instrucción JMP
realiza un salto incondicional. Tal instrucción transfiere el flujo de ejecución cambiando el contador del programa. Hay varios códigos de operación diferentes que realizan un salto; dependiendo de si el procesador está en modo real o en modo protegido, y si se usa una instrucción de anulación, las instrucciones pueden tomar punteros de 16 bits, 32 bits o segmento: desplazamiento.
Hay muchas formas diferentes de saltos: saltos relativos, condicionales, absolutos y de registro indirecto.
Los siguientes ejemplos ilustran:
- un salto relativo con un puntero de 16 bits;
- un salto largo (inter-segment), un salto relativo con un puntero de 32 bits;
- y un salto absoluto indirecto con el registro EAX.
(Tenga en cuenta que, aunque el primer y el segundo salto son relativos, normalmente se muestra la dirección de destino en lugar del desplazamiento relativo codificado en el código de operación).
Ejemplo uno: Cargue IP con el nuevo valor 0x89AB
, luego cargue CS con 0xACDC
e IP con 0x5578
.
JMP 0x89ABJMP 0xACDC:0x5578
Ejemplo dos: Cargue EIP con el valor 0x56789AB1
, solo en modo protegido o modo irreal.
JMP 0x56789AB1
Ejemplo tres: Saltar al valor almacenado en el registro EAX, solo en modo protegido.
JMP EAX
Contenido relacionado
Solicitud de comentarios
Búsqueda de la gloria
Depósito de claves