Program execution transfer instructions in 8086 microprocessor

Prerequisite – Branching instructions in 8085 microprocessor

Program execution transfer instructions are similar to branching instructions and refer to the act of switching execution to a different instruction sequence as a result of executing a branch instruction.

The two types of program execution transfer instructions are:



  1. Unconditional
  2. Conditional

1. Unconditional Program Execution Transfer Instructions – These instruction always execute.

Opcode Operand Explanation Example
CALL address calls a subroutine and saves the return address on the stack CALL 2050
RET none returns from the subroutine to the main program RET
JUMP address transfers the control of execution to the specified address JUMP 2050
LOOP address loops through a sequence of instructions until CX=0 LOOP 2050

Here the address can be specified directly or indirectly.

2. Conditional Program Execution Transfer Instructions : These instructions only execute when the specified condition is true.

Opcode Operand Explanation Example
JC address jump if CF = 1 JC 2050
JNC address jump if CF = 0 JNC 2050
JZ address jump if ZF = 1 JZ 2050
JNZ address jump if ZF = 0 JNZ 2050
JO address jump if OF = 1 JO 2050
JNO address jump if OF = 0 JNO 2050
JP address jump if PF = 1 JP 2050
JNP address jump if PF = 0 JNP 2050
JPE address jump if PF = 1 JPE 2050
JPO address jump if PF = 0 JPO 2050
JS address jump if SF = 1 JS 2050
JNS address jump if SF = 0 JNS 2050
JA address jump if CF=0 and ZF=0 JA 2050
JNBE address jump if CF=0 and ZF=0 JNBE 2050
JAE address jump if CF=0 JAE 2050
JNB address jump if CF=0 JNB 2050
JBE address jump if CF = 1 or ZF = 1 JBE 2050
JNA address jump if CF = 1 or ZF = 1 JNA 2050
JE address jump if ZF = 1 JE 2050
JG address jump if ZF = 0 and SF = OF JG 2050
JNLE address jump if ZF = 0 and SF = OF JNLE 2050
JGE address jump if SF = OF JGE 2050
JNL address jump if SF = OF JNL 2050
JL address jump if SF != OF JL 2050
JNGE address jump if SF != OF JNGE 2050
JLE address jump if ZF = 1 or SF != OF JLE 2050
JNG address jump if ZF = 1 or SF != OF JNG 2050
JCXZ address jump if CX = 0 JCXZ 2050
LOOPE address loop while ZF = 1 and CX = 0 LOOPE 2050
LOOPZ address loop while ZF = 1 and CX = 0 LOOPZ 2050
LOOPNE address loop while ZF = 0 and CX = 0 LOOPNE 2050
LOOPNZ address loop while ZF = 0 and CX = 0 LOOPNZ 2050

Here the address can be specified directly or indirectly.
CF is carry flag
ZF is zero flag
OF is overflow flag
PF is parity flag
SF is sign flag
CX is the register



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.