| Control Transfer Instructions | |||||
| Name | Description | Code | Operation | operands | operand size |
|---|---|---|---|---|---|
| jmp | Jump | jmp dest | IP = dest EIP = dest |
const reg mem |
word dword pword |
| jmp near dest | IP = dest | word dword |
|||
| jmp far dest | EIP = dest | dword pword |
|||
| call | Call procedure | call proc | IP = proc push offset of next instruction |
word dword pword |
|
| ret | Return | ret retw,retnw,retfw |
pop IP | ||
| ret const retn const retf const |
pop IP, sp=sp+const | const | |||
| int | Software interrupt | int const |
Interrupt vector number specified by immediate byte |
const | byte |
| int3 | Interrupt 3 | int3 | Interrupt 3 ¡ª trap to debugger | ||
| into | Interrupt on overflow | into | Interrupt 4 if OF=1 | ||
| iret | Interrupt return | iret iretw iretd |
jmp, pop flags | ||
| Jumps Conditional | |||||
| je jz |
== | j* dest | jump if ZF=1 | const | word dword |
| jne jnz |
/= | jump if ZF=0 | |||
| jp jpe |
jump if PF=1 | ||||
| jnp jpo |
jump if PF=0 | ||||
| Jumps Unsigned | |||||
| ja jnbe |
> | jump if CF or ZF = 0 | |||
| jb jnae jc |
< | jump if CF=1 | |||
| jnc jae jnb |
>= | jump if CF=0 | |||
| jbe jna |
<= | jump if CF or ZF = 1 | |||
| Jumps Signed | |||||
| jg jnle |
> | jump if (SF xor OF) or ZF = 0 | |||
| jl jnge |
< | jump if SF xor OF = 1 | |||
| jge jnl |
>= | jump if SF xor OF = 0 | |||
| jle jng |
<= | jump if (SF xor OF) or ZF = 1 | |||
| jo | jump if OF=1 | ||||
| jno | jump if OF=0 | ||||
| js | jump if SF=1 | ||||
| jns | jump if SF=0 | ||||
| Jumps Conditional -- loop | |||||
| loop | loop | loop label | decrement cx (or ecx), jump if cx (or ecx) /= 0 |
const | >label-128 <lable+127 |
| loopw label | decrement cx, jump if cx /= 0 |
||||
| loopd label | decrement ecx, jump if ecx /= 0 |
||||
| loopz | loope label loopz label |
decrement cx (or ecx), jump if cx (or ecx) /= 0 and ZF=1 |
|||
| loopew label loopzw label |
decrement cx, jump if cx /= 0 and ZF=1 |
||||
| looped label loopzd label |
decrement ecx, jump if ecx /= 0 and ZF=1 |
||||
| loopnz | loopne label loopnz label |
decrement cx (or ecx), jump if cx (or ecx) /= 0 and ZF=0 |
|||
| loopnew label loopnzw label |
decrement cx, jump if cx /= 0 and ZF=0 |
||||
| loopned label loopnzd label |
decrement ecx, jump if ecx /= 0 and ZF=0 |
||||
| jcxz | Jump register CX zero | jcxz label | jump if ecx = 0 | ||
| jecxz | Jump register ECX zero | jecxz lable | jump if ecx = 0 | ||
| Jumps Conditional -- bound | |||||
| bound | Detect value out of range | bound op,limits | if op < limits[0] or |
reg, mem | word,word dword,dword |