RTL 命令 (Return from Subroutine)

スタックからプログラムバンクレジスタおよびプログラムカウンタの値を取得し、アセンブリの実行位置を変更します。

RTLオーバーロード

オペコード構文アドレッシングモードバイト数命令サイクル注
6BRTLStack16

フラグ変化

--------

この命令はステータスフラグを変更しない。

解説

RTL命令は、プログラムバンクレジスタとプログラムカウンタの値をスタックから取得することによってプログラムの実行位置を変更します。
一般的にはJSL命令による関数呼び出しを受けて、その関数から呼出元への復帰命令として記述されます。
また、PHK命令やPEA命令などによって手動でアドレスを指定してからRTL命令を実行することでジャンプを実行することもできます。この方法はコーディング上サブルーチン化しづらい場面などでの複雑なジャンプに有効です。

使用例

別のバンクから呼ばれるルーチン

LongRoutine:
    PHB             ; データバンクを使うなら保存する
    PHK
    PLB             ; データバンク = このルーチンのバンク
    ; ... 処理 ...
    PLB
    RTL

JSL命令で呼ばれるルーチンは、自分のバンクのデータを読むためにデータバンクレジスタを切り替えることがよくあります。戻る前に元の値に戻してください。

参照

JML命令
JMP命令
JSL命令
JSR命令
RTS命令