CPU > アドレッシングモード > Absolute Indexed Indirect

Absolute Indexed Indirect (絶対アドレス間接インデックス指定)

絶対間接インデックスモードの命令は 3 バイト長の命令で、 オペランドに指定されたアドレスにインデックスレジスタの値を加算することで 実アドレスを得る。

6502 のプログラマは次に示すコードに見覚えがあるだろう。 (訳者注:下のコードは、数字を 1 桁分画面に表示するための サブルーチンのアドレスを引く処理だと思います。)

SEC
SBC "0"        ; アスキーコードのゼロをアキュームレータから引く
ASL            ; テーブルの値を 2 倍する
TAX            ; ワードテーブルのオフセットを X レジスタに入れる
LDA TABLE,X    ; コマンドアドレスの下位バイトを取得
STA PTR        ; 間接ポインタの下位バイトを保存する
LDA TABLE+1,X  ; コマンドアドレスの上位バイトを取得
STA PTR+1      ; 間接ポインタの上位バイトを保存
JMP (PTR)      ; コマンドにジャンプ

TABLE .WORD RUT1,RUT2,RUT3,...
PTR   .BYTE 0,0

絶対間接インデックスモードでは、上記のコードのサイズと 消費サイクル数を半分にすることができる。

SEC
SBC "0"        ; アスキーコードのゼロをアキュームレータから引く
ASL            ; テーブルの値を 2 倍する
TAX            ; ワードテーブルのオフセットを X レジスタに入れる
JMP (TABLE,X)  ; コマンドにジャンプ

TABLE .WORD RUT1,RUT2,RUT3,...

間接インデックスモードの JMP 命令 [JMP ($1234,x)] は、 オペランドに指定されたアドレスが、現在指定されているプログラムバンクに 存在するものとして処理する。

また、間接モードの JMP 命令 [JMP ($1234)] は、 オペランドに指定されたアドレスが、 バンク 0 に存在するものとして処理する。

  • JMP ($1234,X)
最終更新:2017年02月20日 18:20