JUMP vs. CALL Instructions in Computer Architecture: Control Flow Explained

Understand the differences between JUMP and CALL instructions in computer programming. This guide clarifies their functionalities, impact on program flow, and the use of the stack for managing subroutine returns with CALL instructions.



JUMP vs. CALL Instructions in Computer Architecture

Jump Instructions

Jump instructions alter a program's execution sequence by changing the program counter (PC) to a new address. The PC holds the address of the next instruction to be executed. A jump instruction causes the program to jump to a new location in the program. The jump instruction itself doesn't save any information about where to return after the jump.

CALL Instructions

CALL instructions also change the program counter, but they're used to call subroutines—self-contained blocks of code designed to perform specific tasks. The CALL instruction saves the return address (the address of the instruction following the CALL) onto a stack before jumping to the subroutine. After the subroutine finishes, a RET (return) instruction retrieves the return address from the stack, resuming execution where it left off.

Key Differences: JUMP vs. CALL

Feature JUMP Instruction CALL Instruction
Execution Simple branch to a new location. Branch to a subroutine; stores return address on stack; uses RET to return.
Stack Pointer Initialization Not required Required
Stack Pointer Change No change Decremented (usually by 2 bytes to store the return address)
Return Address Not stored; no return Stored on the stack; RET instruction used to return.
Addressing Modes Typically supports immediate, direct, and relative addressing modes Typically supports immediate, direct, register, and relative addressing modes.
Program Counter Modification Permanently changes the PC Temporarily changes the PC; return address allows resuming original sequence
Jump Target Can be any instruction in the program. Typically points to the start of a subroutine.
Types of Jumps Long, short, absolute Long, absolute (Short jumps are not typically used with CALL)
Execution Time (T-states) 10 T-states 18 T-states
Execution Time (machine cycles) 3 5
Jump Type Conditional or unconditional Unconditional

Conclusion

JUMP and CALL are fundamental control transfer instructions. JUMP provides simple branching, while CALL enables structured subroutine calls, managing return addresses through the stack. CALL instructions are usually slower than JUMP instructions due to the stack operations involved.