pp.86ff.
ATmega328Pのデータシートを見るとSPの初期値はRAMENDになっているので初期化は不要かもしれない。
.org 0 ;;;;スタックポインタを初期化する ldi r16, high(ramend) ; RAMの末尾アドレス(16ビット)の上位バイトを、 out SPH, r16 ; スタックポインタの上位バイトに格納する。 ldi r16, low(ramend) ; RAMの末尾アドレス(16ビット)の下位バイトを、 out SPL, r16 ; スタックポインタの下位バイトに格納する。 ; nop nop nop call sute ; サブルーチンを呼ぶ。 nop nop ; .org 0x300 sute: nop ret
call
命令の次のアドレスがスタックへプッシュされた。