TXA 命令 (Transfer Index Register X to Accumulator)
インデクスレジスタXの値をアキュムレータに転送します。
TXAオーバーロード
| オペコード | 構文 | アドレッシングモード | バイト数 | 命令サイクル | 注 |
|---|---|---|---|---|---|
| 8A | TXA | Imp. | 1 | 2 |
フラグ変化
n-----z-
n: 転送した値のMSBが格納される。
z: 転送した値が0の場合にセットされ、それ以外の場合はクリアされる。
解説
TXA命令はインデクスレジスタXの値をアキュムレータに転送します。
インデクスレジスタXの値はクリアされず、TXA命令の実行前にアキュムレータに格納されていた値は破棄されます。
レジスタ間転送命令では、ステータスフラグに応じて転送するバイト数が次のように変化します。
| 転送元 | 転送先 | ステータスフラグ | 転送幅 | 注 |
|---|---|---|---|---|
| 8ビット アキュムレータ | 8ビット インデクスレジスタ | m = 1, x = 1 | 8ビット | |
| 8ビット アキュムレータ | 16ビット インデクスレジスタ | m = 1, x = 0 | 16ビット | 1 |
| 16ビット アキュムレータ | 8ビット インデクスレジスタ | m = 0, x = 1 | 8ビット | 2 |
| 16ビット アキュムレータ | 16ビット インデクスレジスタ | m = 0, x = 0 | 16ビット | |
| 8ビット インデクスレジスタ | 16ビット アキュムレータ | m = 0, x = 1 | 16ビット | 3 |
| 16ビット インデクスレジスタ | 8ビット アキュムレータ | m = 1, x = 0 | 8ビット | 4 |
| 16ビット スタックポインタ | 8ビット インデクスレジスタ | x = 1 | 8ビット | 5 |
| 8ビット インデクスレジスタ | 16ビット スタックポインタ | x = 1 | 16ビット | 6 |
注
- アキュムレータの使用されていない上位バイトがインデクスレジスタの上位バイトへ転送される。
- アキュムレータの下位バイトのみがインデクスレジスタへ転送される
- 16ビットを転送するが、アキュムレータの上位バイトは常に0とされる
- インデクスレジスタの下位バイトのみを転送し、アキュムレータの使用されていない上位バイトは変更されない
- スタックポインタの下位バイトのみが転送される
- 16ビットを転送するが、スタックポインタの上位バイトは常に0とされる
使用例
インデクスで計算する
TXA ; インデクスをAに移して計算する
CLC
ADC.w #$0010
TAX
Xが16ビットでAが8ビットのときは下位バイトだけが転送され、Aの上位バイトはそのまま残ります。
参照
TAX命令
TAY命令
TYA命令
TSX命令
TXS命令
TXY命令
TYX命令
TCD命令
TDC命令
TCS命令
TSC命令
XBA命令