Our computer could only do unconditional jumps. Now,
we show how to introduce conditional jumps as well.
We add support for procedures and functions in
high-level languages and discuss call/return protocols.
We add support for passing parameters to subroutines
on the stack.
We show how to use existing instructions to allocate
space on the stack for local variables.
Our computer must know how to react to external
events from timers and peripherals. The mechanism for interrupts
makes that possible.