A stack is like a stack of
trays in a cafeteria. You can only
put one on the top or take one off the top. You cant touch any in the middle or on
the bottom.
If Norman is executing subroutine R and the instruction at mailbox number 37 tells him to call
subroutine S at mailbox 82, he writes 37 on a tray and puts (or pushes) it on
the stack. This tray is called a return pointer. Then he can jump to mailbox
82.
Then the instruction in mailbox 83 tells him to call subroutine T at
mailbox 112 so he writes 83 on a
tray and puts (pushes) it on a stack.
When subroutine T is finished he grabs the tray off top of the stack (or pops it), sees the 83 written on
it, and knows where to resume (84).
When S is finished he pops another tray, sees the 37, and can resume where
he left off with R (at 38).