STA 命令 (Store Accumulator to Memory)
アキュムレータの値をメモリ上の指定された番地に書き込みます。
STAオーバーロード
| オペコード | 構文 | アドレッシングモード | バイト数 | 命令サイクル | 注 |
|---|---|---|---|---|---|
| 85 | STA dp | DP. | 2 | 3 | 1, 2 |
| 92 | STA (dp) | DP. Ind | 2 | 5 | 1, 2 |
| 87 | STA [dp] | DP. Ind long | 2 | 6 | 1, 2 |
| 95 | STA dp, X | DP. Idx X | 2 | 4 | 1, 2 |
| 81 | STA (dp, X) | DP. Idx Ind X | 2 | 6 | 1, 2 |
| 91 | STA (dp), Y | DP. Ind Idx Y | 2 | 6 | 1, 2 |
| 97 | STA [dp], Y | DP. Ind long Idx Y | 2 | 6 | 1, 2 |
| 8D | STA abs | Abs. | 3 | 4 | 1 |
| 9D | STA abs, X | Abs. Idx X | 3 | 5 | 1 |
| 99 | STA abs, Y | Abs. Idx Y | 3 | 5 | 1 |
| 8F | STA long | Abs. long | 4 | 5 | 1 |
| 9F | STA long, X | Abs. long Idx X | 4 | 5 | 1 |
| 83 | STA sp, S | SR. | 2 | 4 | 1 |
| 93 | STA (sp, S), Y | SR. Ind Idx Y | 2 | 7 | 1 |
注
- メモリモードフラグクリア時は1サイクル追加
- ダイレクトページの開始アドレスがページ境界になっていない場合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 に書き込む