| |
Unconditional Jump
86/88 |
Y |
186 |
Y |
286 |
Y |
386 |
Y |
486 |
Y |
JMP target |
Ovfl |
N |
Dir |
N |
Int |
N |
Trap |
N |
Sign |
N |
Zero |
N |
Aux |
N |
Prty |
N |
Carry |
N |
JMP always transfer control to the target location. Unlike CALL, JMP
does not save IP, because no RETurn is expected. An intrasegment JMP
may be made either through memory or through a 16-bit register; an
intersegment JMP can be made only through memory.
Notes: If the assembler can determine that the target of an
intrasegment jump is within 127 bytes of the current
location, the assembler will automatically generate
a short-jump (two-byte) instruction; otherwise, a 3-
byte NEAR JMP is generated.
You can force the generation of a short jump by
explicit use of the operator "short," as in:
JMP short near_by
------------------------------------ Timing ----------------------------------
OpCode Instruction 386 286 86
EB cb JMP rel8 7+m 7 15
E9 cw JMP rel16 7+m 7 15
FF/4 JMP r/m16 7/10+m 7/11 11/18+EA
EA cd JMP ptr16:16 12+m 11 15
Call gate, same priviledge 45+m 38
Via Task State Segment ts 175
Via Task Gate ts 180
FF/5 JMP m16:16 43+m 15
Call gate, same priviledge 49+m 41
Via Task State Segment 5+ts 178
Via Task Gate 5+ts 183
E9 cd JMP rel32 7+m
FF/4 JMP r/m32 7/10+m
EA cp JMP ptr16:32 12+m
Call gate, same priviledge 45+m
Via Task State Segment ts
Via Task Gate ts
FF/5 JMP m16:32 43+m
Call gate, same priviledge 49+m
Via Task State Segment 5+ts
Via Task Gate 5+ts
------------------------------------ Logic -----------------------------------
IP = ofs(target)
if far jmp
CS = seg(target)
See Also CALL RET |