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:
- Unconditional
- 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
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
25 May, 2018
Like Article
Save Article