「CALL」命令のアドレス保管の方法を「スタック」と言い、この仕組みについてもう少し詳しく解説する。
スタックとは「棚」のことで、棚に物を何も考えずに置いていく(積み重ねていく)ようなイメージである(上図参照)。けれどもこのように積み重ねた物を下から取り出すと、その上にあった物が崩れてしまうことが日常にもある。したがって上からしか取り出さないのが普通である。この場合も同様に、上からしか取り出すことができない。このような保存方式をスタックと言い、その取り出し方法をFirst
In Last Out(FILO)と言う。その逆にキューという保存方式があり、その取り出し方法を First In First Out(FIFO)と言う。
ではこのスタックを保存するのはどこか? もちろんメモリーなわけだが、これはスタックセグメントのスタックポインタが示す領域(SS:SP)にある。「CALL」命令が実行される場合を図で示すと下図のようになる。
次に「RET」が実行された場合を下図に示す。
