This article has multiple issues. Please help
improve it or discuss these issues on the
talk page. (
Learn how and when to remove these template messages)
|
In the
x86 assembly language, the JMP
instruction performs an unconditional jump. Such an instruction transfers the flow of
execution by changing the
program counter. There are a number of different
opcodes that perform a jump; depending on whether the processor is in
real mode or
protected mode, and an override instruction is used, the instructions may take
16-bit,
32-bit, or segment:offset
pointers.
[1]
There are many different forms of jumps: relative, conditional, absolute and register-indirect jumps.
The following examples illustrate:
(Note that although the first and second jumps are relative, commonly the destination address is shown instead of the relative offset as encoded in the opcode.)
Example one: Load IP with the new value 0x89AB
, then load
CS with 0xACDC
and IP with 0x5578
.
JMP 0x89AB
JMP 0xACDC:0x5578
Example two: Load EIP with the value 0x56789AB1
, only in
protected mode or
unreal mode.
JMP 0x56789AB1
Example three: Jump to the value stored in the EAX register, only in protected mode.
JMP EAX
This article has multiple issues. Please help
improve it or discuss these issues on the
talk page. (
Learn how and when to remove these template messages)
|
In the
x86 assembly language, the JMP
instruction performs an unconditional jump. Such an instruction transfers the flow of
execution by changing the
program counter. There are a number of different
opcodes that perform a jump; depending on whether the processor is in
real mode or
protected mode, and an override instruction is used, the instructions may take
16-bit,
32-bit, or segment:offset
pointers.
[1]
There are many different forms of jumps: relative, conditional, absolute and register-indirect jumps.
The following examples illustrate:
(Note that although the first and second jumps are relative, commonly the destination address is shown instead of the relative offset as encoded in the opcode.)
Example one: Load IP with the new value 0x89AB
, then load
CS with 0xACDC
and IP with 0x5578
.
JMP 0x89AB
JMP 0xACDC:0x5578
Example two: Load EIP with the value 0x56789AB1
, only in
protected mode or
unreal mode.
JMP 0x56789AB1
Example three: Jump to the value stored in the EAX register, only in protected mode.
JMP EAX