UNDER CONSTRUCTION (may have mistakes).
All of the 65816's special registers have a unique set of capabilities. The two registers most similar to each other are the two index registers X and Y, but uses of them cannot (in general) be substituted for each other without breaking software.
Register Name | Accumulator | X Index Register | Y Index Register | Stack Pointer | Program Counter | Status |
---|---|---|---|---|---|---|
Register Size | 8-bit/16-bit | 8-bit/16-bit | 8-bit/16-bit | 16-bit | ? | |
can be incremented by one? | INC | INX | INY | PL* when * is an 8-bit register | ||
can be decremented by one? | DEC, DEA | DEX | DEY | PH* when * is an 8-bit register | BRA | |
can be incremented by two? | ADC | PL* when * is a 16-bit register | ||||
can be decremented by two? | SBC | PH* when * is a 16-bit register | ||||
can be loaded with an immediate? | LDA | LDX | LDY | |||
can be stored to main memory? | STA | STX | STY | |||
can be compared with main memory? | CMP | CPX | CPY | |||
can be transferred to A? | ¯_(ツ)_/¯ | TXA | TYA | TSC | ||
can be transferred to X? | TAX | ¯_(ツ)_/¯ | TYX | TSX | ||
can be transferred to Y? | TAY | TXY | ¯_(ツ)_/¯ | |||
can be transferred to S? | TCS | TXS | ¯_(ツ)_/¯ |