read_heap(), write_heap() の一部をサブファンクション化

この変更によって、小さなプログラムではバイナリーサイズが微妙に増えるが、
一方、大きなプログラムでは従来よりもバイナリーサイズが縮小されるはず。
（ハンドアセンブルには到底及ばないが）