機械語において、サブルーチンとは、あるプログラムに呼び出されて実行されるプログラムのことです。
例えば、以下は、サブルーチンが呼び出されて実行される様子です。
赤色で示した動きは、メインメモリ上のプログラムAの機械語の命令がプログラムカウンタに従って順に実行される様子です。
緑色で示した動きは、プログラムAが呼び出したあるサブルーチンがプログラムカウンタに従って順に実行される様子です。
サブルーチンを呼び出すと、プログラムカウンタの値がサブルーチンが格納されたメモリアドレスに変わります。そして、サブルーチンが終了すると、プログラムカウンタの値がサブルーチンを呼び出す命令の次の命令のメモリアドレスに変わります。
サブルーチン内で利用するプロセッサレジスタ(以降、レジスタ)は、サブルーチンに入ってすぐPUSH命令でそれらの値を保存しておきます。
そして、サブルーチンから抜ける直前に、POP命令でそれらの値を復元します。
こうすることにより、サブルーチンの前後でレジスタの値が変化しないようにできます。
サブルーチンには、以下のメリットがあります。
・繰り返し現れるプログラムをサブルーチンにすることでメインメモリの消費を抑えられる。
・汎用性があるプログラムをサブルーチンにすることで再利用が容易になり、開発効率が上がる。