Difference between Call and Jump Instructions
The Jump instruction is a type of transfer instruction. With the help of this instruction, we are able to transfer the information from one location to another location. If we are running a program and want to skip some part of rungs or logic, in this case, JUMP instruction will be useful. The returned information will not be stored in the JUMP instruction.
The CALL instruction is also a type of control transfer instruction. With the help of instruction, we are able to invoke the subroutine. A block of instructions is contained by the subroutine, which needs to be frequently executed. Due to this, the program will be more structural and save a lot of memory space. When the call instruction calls the subroutine and the execution of a subroutine is completed, the control will be transferred back to the caller with the help of RET instruction.
There are many differences between the JUMP instruction and CALL instructions, which are described as follows:
|Serial No.||JUMP Instruction||CALL Instruction|
|1||In the JUMP, we simply branch to a new location and then continue from there.||In the CALL, we branch to a new location which is known as the subroutine. When we use the CALL instruction, the subroutine will be executed. When the subroutine is fully executed, a RET instruction will be put into our program so that the returned address will be put into the PC from the stack.|
|2||It is not mandatory to initialize the stack pointer in JUMP instruction.||It is mandatory to initialize the stack pointer in CALL instruction.|
|3||In the JUMP instruction, the value of a stack pointer does not change.||In the CALL instruction, the value of a stack pointer is decremented by 2.|
|4||The return instruction does not contain after executing the JUMP because it does not require to return to the previous location.||We use the CALL instruction so that we can invoke the subroutine. With the help of a return address of the stack, the control will be transferred back to the main program at the end of a subroutine by the RET instruction.|
|5||The JUMP instruction does not require to store the return address into the stack.|| At the time of CALL, the return address of a program counter will be pushed into the stack. |
At the time of RET instruction, the return address will be popped from the stack and added to the program counter.
|6||The JUMP instruction is not used to transfer the value of a program counter into the stack.||The CALL instruction is used to transfer the value of a program counter into a subroutine so that it can come back to the main program.|
|7||There is an immediate addressing mode in JUMP instruction.||There is a register addressing mode and immediate addressing mode in CALL instruction.|
|8||The program counter is permanently changed by the JUMP instruction.||This instruction contains the information which is left on the stack to resume the sequence of original program execution.|
|9||In the JUMP instruction, the PC is transferred into a memory location, and that location is a part of the main program.||In the CALL instruction, the PC is transferred into a memory location, and that location is not a part of the main program.|
|10||There are three types of JUMP, i.e., Long jump, Short jump, and Absolute jump.||There are two types of CALL, i.e., Long call, Absolute call.|
|11||To execute the JUMP instruction, we require the 10 T states.||To execute the CALL instruction, we require the 18 T states.|
|12||To execute the JUMP instruction, we also require the 3 machine cycles.||To execute the CALL instruction, we also require 5 machine cycles.|
|13||The JUMP instruction is described as conditional jump and unconditional jump.||The CALL instruction is described only as unconditional.|