RTL 命令 (Return from Subroutine)
スタックからプログラムバンクレジスタおよびプログラムカウンタの値を取得し、アセンブリの実行位置を変更します。
RTLオーバーロード
| オペコード | 構文 | アドレッシングモード | バイト数 | 命令サイクル | 注 |
|---|---|---|---|---|---|
| 6B | RTL | Stack | 1 | 6 |
フラグ変化
--------
この命令はステータスフラグを変更しない。
解説
RTL命令は、プログラムバンクレジスタとプログラムカウンタの値をスタックから取得することによってプログラムの実行位置を変更します。
一般的にはJSL命令による関数呼び出しを受けて、その関数から呼出元への復帰命令として記述されます。
また、PHK命令やPEA命令などによって手動でアドレスを指定してからRTL命令を実行することでジャンプを実行することもできます。この方法はコーディング上サブルーチン化しづらい場面などでの複雑なジャンプに有効です。
使用例
別のバンクから呼ばれるルーチン
LongRoutine:
PHB ; データバンクを使うなら保存する
PHK
PLB ; データバンク = このルーチンのバンク
; ... 処理 ...
PLB
RTL
JSL命令で呼ばれるルーチンは、自分のバンクのデータを読むためにデータバンクレジスタを切り替えることがよくあります。戻る前に元の値に戻してください。