En el lenguaje ensamblador x86 , la instrucción realiza un salto incondicional. Una instrucción de este tipo 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 se utiliza una instrucción de anulación, las instrucciones pueden tomar punteros de 16 bits , 32 bits o de segmento: desplazamiento . [1]JMP
Hay muchas formas diferentes de saltos: saltos relativos, condicionales , absolutos y de registro indirecto .
Los siguientes ejemplos ilustran:
(Tenga en cuenta que, aunque el primer y 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 0x89AB JMP 0xACDC : 0x5578
Ejemplo dos: Cargar 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