名前 | 幅 |
アキュームレータ (A) | 下位 8 bit が A, 上位 8 bit が B, 16bit 全体は C |
インデックスレジスタ (X) | 8 bit または 16 bit |
インデックスレジスタ (Y) | 8 bit または 16 bit |
ダイレクトページレジスタ (D) | 16 bit |
スタックポインタ (S) | 16 bit |
プログラムバンクレジスタ (PBR) | 8 bit |
データバンクレジスタ (DBR) | 8 bit |
プログラムカウンタ (PC) | 16 bit |
プロセッサステータスレジスタ (P) | 8 bit |
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
N | V | M | X | D | I | Z | C | |
E |
注 : エミュレーションフラグには直接アクセスできない。 XCE 命令を使って、キャリーフラグと 値を交換することによってセットする。
23-16 | 15-8 | 7-0 |
- | アキュームレータ (A) | |
データバンクレジスタ (DBR) | - | - |
- | X | |
- | Y | |
00000000 | ダイレクトページレジスタ (D) | |
00000000 | スタックポインタ (S) | |
プログラムバンクレジスタ (PBR) | プログラムカウンタ (PC) |
23-16 | 15-8 | 7-0 |
- | - | アキュームレータ (A) |
データバンクレジスタ (DBR) | - | - |
- | - | X |
- | - | Y |
00000000 | ダイレクトページレジスタ (D) | |
00000000 | 00000001 | スタックポインタ (S) |
プログラムバンクレジスタ (PBR) | プログラムカウンタ (PC) |
E フラグは直接アクセスすることはできず、XCE 命令で C フラグと交換することでアクセスする。 また、エミュレーションモードの場合 M フラグと X フラグは 1 に固定され、変更不可能になる。
BCD演算が正常に動作するのは ADC 命令と SBC 命令のみ。
16bit レジスタ。 8bit, 16bit の切り替えが可能で、それぞれ独立して値を保存している。 ステータスレジスタの M フラグが 1 の時は 8bit モードで、 下位 8bit が A としてアクセス可能。上位 8bit は B で、 XBA 命令等を使用することで A と値を入れ替えることができる。 M フラグが 0 の時は 16bit モードで、 C を使用する。 エミュレーションモード時は 8 bit に固定される。
8bit と 16bit の切り替え可能。 ステータスレジスタの X フラグで切り替える。 X=1 の時は 8bit モード、X=0 の時は 16bit モード。 8 bit モード時は下位 8 bit のみ使用可能。 エミュレーションモード時は 8 bit に固定される。
6502 のゼロページと同じ使い方をする。 ダイレクトページレジスタは、最初のバンク (Bank 0) の、 64KB 範囲内でどこにでも置くことができる。 16~23 のバンク選択バイトは無視され、常に Bank 0 に置かれる。
スタックは、ダイレクトページレジスタと同様に 最初の 64KB (Bank 0) に置かれる。 16~23 のバンク選択バイトは無視され、常に Bank 0 に置かれる。 ネイティブモードで動作している間は、スタック領域は 256 バイトに 制限されない。 エミュレーションモードで動作している間は (E=1)、 スタック領域は Bank 1 に固定される。
6502 の 64KB 制限 (16bit 制限) を超えるために使われるレジスタ。 PBR はバンク選択バイトとして、あるいはプログラムカウンタの 上位 8bit の値として使う。 フローコントロール命令の JSR と JMP は、 24bit のアドレスをフルに指定してジャンプすることができる。 しかし、相対ジャンプ命令はバンク境界を越えることができず、 0xFFFF より大きいアドレスを指定した場合、今指している バンクの最初に戻る。 プログラムカウンタも同様に、普通に進めた場合? バンク境界を越えることができず、今選択されているバンクの 0x0000 ~ 0xFFFF の間の値を取る。
PBR とよく似たレジスタで、こちらはデータをアクセスするために使われる。 インデックスアドレスモードを使用する命令で 64KB 境界を越えた場合は、 一時的に DBR の値がインクリメントされる。
ステータスレジスタの、 7,6,3,2,1,0 (nvdizc) は、6502 と同じように使われる。 ネイティブモードでは、BRK 検出用の Break フラグ (B) は使われない。 代わりに、BRK 割り込みハンドラを使用する。 エミュレーションモードの場合は、Break フラグは 6502 と同じように使われる。