STA 命令 (Store Accumulator to Memory)

アキュムレータの値をメモリ上の指定された番地に書き込みます。

STAオーバーロード

オペコード構文アドレッシングモードバイト数命令サイクル注
85STA dpDP.231, 2
92STA (dp)DP. Ind251, 2
87STA [dp]DP. Ind long261, 2
95STA dp, XDP. Idx X241, 2
81STA (dp, X)DP. Idx Ind X261, 2
91STA (dp), YDP. Ind Idx Y261, 2
97STA [dp], YDP. Ind long Idx Y261, 2
8DSTA absAbs.341
9DSTA abs, XAbs. Idx X351
99STA abs, YAbs. Idx Y351
8FSTA longAbs. long451
9FSTA long, XAbs. long Idx X451
83STA sp, SSR.241
93STA (sp, S), YSR. Ind Idx Y271

注

  1. メモリモードフラグクリア時は1サイクル追加
  2. ダイレクトページの開始アドレスがページ境界になっていない場合1サイクル追加

フラグ変化

--------

この命令はステータスフラグを変更しません。

解説

STA命令はオペコードによって指定されたアドレッシングモードに従ってアキュムレータの値をメモリに書き込みます。
ステータスレジスタのメモリモードフラグがクリアされている場合は16ビット長のデータを書き込み、メモリモードフラグがセットされている場合は8ビット長のデータを書き込みます。
データの書き込みはリトル・エンディアン方式で行われます。すなわち、メモリ上では常に下位バイトが先に配置されます。

使用例

I/Oレジスタへの書き込み

    SEP #$20
    LDA.b #$0F
    STA $2100       ; INIDISP: 明るさ最大で表示を開始する

2バイトのレジスタへの書き込み

Aを16ビットにしてSTA命令を実行すると、指定した番地とその次の番地に1バイトずつ書き込まれます。

    REP #$20
    LDA.w #$1000
    STA $2116       ; VMADDL($2116)に$00、VMADDH($2117)に$10

ロングアドレスでWRAMへ書き込む

    STA.l $7E2000   ; データバンクに関係なく $7E:2000 に書き込む

参照

LDA命令
LDX命令
LDY命令
STX命令
STY命令
STZ命令