Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
JMP (x86 instruction)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Unconditional jump instruction in x86 assembly language}} {{Multiple issues| {{Out of date|date=February 2017}} {{Notability|date=September 2022}} }} In the [[x86 assembly language]], the '''<code>JMP</code>''' [[instruction (computer science)|instruction]] performs an unconditional jump. Such an instruction transfers the flow of [[execution (computers)|execution]] by changing the [[program counter]]. There are a number of different [[opcode]]s 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 [[pointer (computer programming)|pointers]].<ref>{{cite web |url=http://download.intel.com/design/PentiumII/manuals/24319102.PDF| title=Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual (6.5MB)|accessdate=2009-11-03|archive-url=https://web.archive.org/web/20090219101735/http://download.intel.com/design/PentiumII/manuals/24319102.PDF|archive-date=2009-02-19|url-status=dead}}</ref> {{Wiktionary|relative|absolute}} There are many different forms of jumps: relative, [[conditional jump|conditional]], absolute and [[indirect branch|register-indirect jumps]]. The following examples illustrate: # a relative jump with a 16-bit pointer; # a long jump (inter-segment), a relative jump with a 32-bit pointer; # and a register-indirect absolute jump using the [[EAX register]]. (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 <code>0x89AB</code>, then load [[CS register|CS]] with <code>0xACDC</code> and IP with <code>0x5578</code>. <syntaxhighlight lang="asm"> JMP 0x89AB JMP 0xACDC:0x5578 </syntaxhighlight> Example two: Load EIP with the value <code>0x56789AB1</code>, only in [[protected mode]] or [[unreal mode]]. <syntaxhighlight lang="asm"> JMP 0x56789AB1 </syntaxhighlight> Example three: Jump to the value stored in the EAX register, only in protected mode. <syntaxhighlight lang="asm"> JMP EAX </syntaxhighlight> The <code>JMP</code> (Jump) instruction transfers the program's control to a specified location in the code. Unlike function calls, it doesnโt save return information. Instead, it directs execution to a '''target address''', which can be: * An '''immediate value''', * A '''general-purpose register''', or * A '''memory location'''.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)