Si vous aussi vous jetez régulièrement un œil sur les adressages possibles et valides pour le 6502, voici un tableau récapitulatif qui pourra vous servir. En tout cas, il me servira.
Tableau Récapitulatif
| Mode | Syntaxe | Exemple | Taille | Cycles | Notes |
|---|---|---|---|---|---|
| Implicite | OP |
RTS |
1 | 2-6 | - |
| Accumulateur | OP A |
LSR A |
1 | 2 | - |
| Immédiat | OP #nn |
LDA #$42 |
2 | 2 | Constante |
| Page Zéro | OP $nn |
LDA $80 |
2 | 3-5 | Rapide |
| Page Zéro,X | OP $nn,X |
LDA $80,X |
2 | 4-6 | Wrapping en page 0 |
| Page Zéro,Y | OP $nn,Y |
LDX $10,Y |
2 | 4 | LDX/STX uniquement |
| Absolu | OP $nnnn |
LDA $1234 |
3 | 4-6 | - |
| Absolu,X | OP $nnnn,X |
LDA $2000,X |
3 | 4-7 | +1 si page crossed |
| Absolu,Y | OP $nnnn,Y |
LDA $3000,Y |
3 | 4-7 | +1 si page crossed |
| Relatif | OP label |
BEQ Loop |
2 | 2-4 | Branches uniquement |
| Indirect | JMP ($nnnn) |
JMP ($FFFC) |
3 | 5 | JMP uniquement |
| Indexed Indirect | OP ($nn,X) |
LDA ($40,X) |
2 | 6 | X ajouté d'abord |
| Indirect Indexed | OP ($nn),Y |
LDA ($40),Y |
2 | 5-6 | Y ajouté après |
($nn,X) vs ($nn),Y
Indexed Indirect vs. Indirect Indexed, ma source de confusion préférée.
| Écriture | ($nn,X) | ($nn),Y |
|---|---|---|
| Évaluation | X ajouté avant lecture | Y ajouté après lecture |
| Calcul | addr = read16(($nn+X)&$FF) |
addr = read16($nn)+Y |
| Wrapping | X wrappe en page 0 | Y sur 16-bit complet |
| Usage typique | Tables de pointeurs, dispatch | Tableaux, structures |
Références
Les deux pages sur lesquelles je vais régulièrement :