3-9 スタックポインタ |
RAMのバンク0をスタックメモリとして使用しています。このスタック領域のアドレス指定を行う8ビットレジスタがスタックポインタ(SP)です。
SPは、SFRの106H番地に割り当てられており、スタックメモリへの退避動作に先だってインクリメントされ、スタックメモリからの復帰動作後に、デクリメントされます。
リセット時には、SPの値は不定となりますが、システムプログラムが7FHに初期化します。SPは初期化された状態でアプリケーションが呼び出されます。
![]() スタックは、RAMバンク0の80Hから0FFH(上位)に向けて消費されます。また、時計機能がスタックを最大20バイト利用します。したがって、アプリケーションは108バイトのスタックが利用できます。 PUSH命令を実行すると、SPがインクリメントされてからデータがストアされることに注意してください。 また、RAMバンク1にアクセス中にPUSH,POPした場合でも、RAMバンク0のスタック領域にデータがストアされます。 |
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
SP | 106H | R/W | SP7 | SP6 | SP5 | SP4 | SP3 | SP2 | SP1 | SP0 |
リセット時 | X | X | X | X | X | X | X | X |
PUSH命令実行時は、SPをインクリメントし、オペランドで指定するSFRおよびRAMのデータを退避します。POP命令実行時は、オペランドで指定するSFRおよびRAMへデータを格納した後、SPをデクリメントします。
RAMバンクを1に指定しPUSH、POP命令を実行しても、RAMバンク0にスタックされます。また、RAMアドレスをオペランドにすると、バンク1ではなく、バンク0のRAMがアクセスされます。
CALL命令実行時は、SPをインクリメントし、プログラムカウンタ(PC)の下位8ビットをスタックに退避した後、SPをインクリメントし、PCの上位8ビットを退避します。RET命令実行時は、SPで指定されるデータをPCの上位8ビットに格納した後、SPをデクリメントし、このSPで指定されるデータをPCの下位8ビットに格納した後、SPをデクリメントします。
割り込み受け付け時は、SPをインクリメントし、PCの下位8ビットをスタックに退避した後、SPをインクリメントし、PCの上位8ビットを退避します。割り込み処理から戻るためのRETI命令実行時は、SPで指定されるデータを、PCの上位8ビットに格納した後、SPをデクリメントし、このSPで指定されるデータをPCの下位8ビットに格納した後、SPをデクリメントします。
[←] | [INDEX] | [→] |
(C)SEGA ENTERPRISES, LTD., 1999