<<< JECXZ Jump If ECX = 0 | Index | LEA Load Effective Address >>> |
O D I T S Z A P C OF: Overflow flag TF: Trap flag AF: Aux carry F F F F F F F F F DF: Direction flag SF: Sign flag PF: Parity flag <none> IF: Interrupt flag ZF: Zero flag CF: Carry flag
JMP <short displacement> JMP <near label> JMP <far label> JMP r16 JMP r32 386+ JMP m16 JMP m32
JMP RightCloseBy ;Plus or minus 128 bytes JMP InsideMySegment ;To 16-bit offset from CS JMP OutsideMySegment ;To immediate 32-bit address JMP DX ;To 16-bit offset stored in DX register JMP EAX ;To 32-bit offset stored in EAX register JMP WORD [BX+DI+17] ;To Near address stored at [BX+DI+17] JMP DWORD [BX+DI+17] ;To full 32-bit address stored at [BX+DI+17]
JMP transfers control unconditionally to the destination given as the single operand. In addition to defined labels, JMP can transfer control to a 16-bit signed offset from IP (or 32-bit signed offset from EIP) stored in a general-purpose register, or to an address (either Near or Far) stored in memory and accessed through any legal addressing mode. These m16 and m32 forms are useful for creating jump tables in memory, where a jump table is an array of addresses. For example, JMP [BX+DI+17] would transfer control to the 16-bit offset into the code segment found at the based-indexed-displacement address [BX+DI+17].
No flags are affected, and, unlike CALL, no return address is pushed onto the stack.
r8 = AL AH BL BH CL CH DL DH r16 = AX BX CX DX BP SP SI DI sr = CS DS SS ES FS GS r32 = EAX EBX ECX EDX EBP ESP ESI EDI m8 = 8-bit memory data m16 = 16-bit memory data m32 = 32-bit memory data i8 = 8-bit immediate data i16 = 16-bit immediate data i32 = 32-bit immediate data d8 = 8-bit signed displacement 16 = 16-bit signed displacement d32 = 32-bit unsigned displacement
<<< JECXZ Jump If ECX = 0 | Index | LEA Load Effective Address >>> |