Le microprocesseur 6502 du ORIC
Le microprocesseur 6502 du ORIC : Voici divers informations concernant le fonctionnement du microprocesseur 6502 qu'utilise l'ORC.
Modèle de programmation du processeur
Instructions machine
Nom | Description |
---|---|
ADC | Ajouter de la mémoire à l'accumulateur |
AND | Et binaire mémoire avec accumulateur |
ASL | Décaler un bit vers la gauche (mémoire ou accumulateur) |
BCC | Branchement sur retenue effacé |
BCS | Branchement sur retenue fixé |
BEQ | Branche sur le résultat zéro |
BIT | Bits de test en mémoire avec accumulateur |
BMI | Branche sur résultat moins |
BNE | Branche sur résultat non zéro |
BPL | Branche sur résultat plus |
BRK | Force l'arrêt |
BVC | Branche sur débordement effacé |
BVS | Branche sur débordement fixé |
CLC | Effacer le drapeau de retenue |
CLD | Effacer le mode décimal |
CLI | Effacer le bit de désactivation d'interruption |
CLV | Effacer le drapeau de débordement |
CMP | Comparer la mémoire et l'accumulateur |
CPX | Comparer la mémoire et l'index X |
CPY | Comparer la mémoire et l'index Y |
DEC | Décrémenter la mémoire de un. |
DEX | Décrémenter l'index X de un |
DEY | Décrémenter l'index Y de un |
EOR | Mémoire exclusive ou avec accumulateur |
INC | Incrémenter la mémoire de un |
INX | Incrémenter l'index X de un |
INY | Incrémenter l'indice Y de un |
JMP | Aller au nouvel emplacement |
JSR | Accéder à la nouvelle adresse de retour de la chaîne d'emplacement |
LDA | Accumulateur de charge avec mémoire |
LDX | Charger l'index X avec de la mémoire |
LDY | Charger l'index Y avec la mémoire |
LSR | Décaler un bit vers la droite (mémoire ou accumulateur) |
NOP | Pas d'opération |
ORA | Ou binaire mémoire avec accumulateur |
PHA | Pousser l'accumulateur sur la pile |
PHP | Pousser l'état du processeur sur la pile |
PLA | Extraire l'accumulateur de la pile |
PLP | Extraire l'état du processeur de la pile |
ROL | Rotation d'un bit vers la gauche (mémoire ou accumulateur) |
ROR | Rotation d'un bit vers la gauche (mémoire ou accumulateur) |
RTI | Retour d'interruption |
RTS | Retour du sous-programme |
SBC | Soustraire la mémoire de l'accumulateur avec la retenue |
SEC | Fixe le drapeau de retenue |
SED | Fixe le mode décimal |
SEI | Fixe l'état de désactivation des interruptions |
STA | Entrepose l'accumulateur en mémoire |
STX | Entrepose l'index X en mémoire |
STY | Entrepose l'index Y en mémoire |
TAX | Transfère l'accumulateur vers l'index X |
TAY | Transfère l'accumulateur vers l'index Y |
TSX | Transfère le pointeur de pile vers l'index X |
TXA | Transfère l'indice X dans l'accumulateur |
TXS | Transfère l'index X vers le pointeur de pile |
TYA | Transfère l'indice Y à l'accumulateur |
Codes d'instruction
Nom/Description | Opération | Format de langage assembleur | Mode d'adressage | Nombre d'octets | Opcode hexadécimal | Codes de registres d'état de processeur |
---|---|---|---|---|---|---|
ADC Ajouter de la mémoire à l'accumulateur |
A·M·C → A.C. | ADC Oper ADC Oper ADC Oper.X ADC Oper ADC Oper.X ADC Oper.Y ADC (Oper.X) ADC (Oper).Y |
Immédiat Page zéro Page zéro X Absolue Absolue X Absolue Y (indirecte.X) (Indirecte).Y |
2 2 2 3 3 3 2 2 |
69 65 75 60 70 79 61 71 |
N V Z C |
AND Et binaire mémoire avec accumulateur |
A∧M → | AND Oper AND Oper AND Oper AND Oper.X AND Oper.X AND Oper.Y AND (Oper.X) AND (Oper).Y |
Immédiat Page zéro Page zéro X Absolue Absolue X Absolue Y (indirecte.X) (Indirecte).Y |
2 2 2 3 3 3 2 2 |
29 25 35 20 30 39 31 31 |
N V |
ASL Décaler un bit vers la gauche (mémoire ou accumulateur) |
ASL A ASL Oper ASL Oper.X ASL Oper ASL Oper.X |
Accumulateur Page zéro Page zéro.X Absolue Absolue X |
1 2 2 3 3 |
0A 06 16 0E 1E |
N Z C | |
BCC Branchement sur retenue effacé |
Branche dans C=0 | BCC Oper | Relatif | 2 | 90 | |
BCS Branchement sur retenue fixé |
Branche dans C=1 | BCS Oper | Relatif | 2 | 80 | |
BEQ Branche sur le résultat zéro |
Branche dans Z=1 | BEQ Oper | Relatif | 2 | F0 | |
BIT Bits de test en mémoire avec accumulateur |
A∧M M, → N, M, → V | BIT *Oper BIT * Oper |
Page zéro Absolue |
2 3 |
24 2C |
M7 M6 Z |
BMI Branche sur résultat moins |
Branche dans N=1 | BMI Oper | Relatif | 2 | 30 | |
BNE Branche sur résultat non zéro |
Branche dans Z=0 | BNE Oper | Relatif | 2 | D0 | |
BPL Branche sur résultat plus |
Branche dans N=0 | BPL Oper | Relatif | 2 | 10 | |
BRK Force l'arrêt |
Force l'interruption PC + 2 |P| |
BRK* | Implicite | 1 | 00 | B, I → 1 |
BVC Branche sur débordement effacé |
Branche dans V=0 | BVC Oper | Relatif | 2 | 50 | |
BVS Branche sur débordement fixé |
Branche dans V=1 | BVS Oper | Relatif | 2 | 70 | |
CLC Effacer le drapeau de retenue |
0 → C | CLC | Implicite | 1 | 18 | C → 0 |
CLD Effacer le mode décimal |
0 → D | CLD | Implicite | 1 | D8 | D → 0 |
CLI Effacer le bit de désactivation d'interruption |
O → I | CLI | Implicite | 1 | 58 | I → 0 |
CLV Effacer le drapeau de débordement |
O → V | CLV | Implicite | 1 | 88 | V → 0 |
CMP Comparer la mémoire et l'accumulateur |
A - M | CMP Oper CMP Oper CMP Oper CMP Oper.X CMP Oper.X CMP Oper.Y CMP (Oper.X) CMP (Oper).Y |
Immédiat Page zéro Page zéro X Absolue Absolue X Absolue Y (indirecte.X) (Indirecte).Y |
2 22 3 3 3 2 2 |
C9 C5 D5 CD DD D9 C1 D1 |
N Z C |
CPX Comparer la mémoire et l'index X |
X - M | CPX Oper CPX Oper CPX Oper |
Immédiat Page zéro Absolue |
2 2 3 |
E0 E4 EC |
N Z C |
CPY Comparer la mémoire et l'index Y |
Y - M | CPY Oper CPY Oper CPY Oper |
Immédiat Page zéro Absolue |
2 2 3 |
C0 C4 CC |
N Z C |
DEC Décrémenter la mémoire de un. |
M - I → M | DEC Oper DEC Oper.X DEC Oper DEC Oper.X |
Page zéro Page zéro.X Absolue Absolue.X |
2 2 3 3 |
C6 D6 CE DE |
N Z |
DEX Décrémenter l'index X de un |
X - 1 → X | DEX | Implicite | 1 | CA | N Z |
DEY Décrémenter l'index Y de un |
Y - 1 → Y | DEY | Implicite | 1 | 88 | N Z |
EOR Mémoire exclusive ou avec accumulateur |
A V M → A | EOR Oper EOR Oper EOR Oper EOR Oper.X EOR Oper.X EOR Oper.Y EOR (Oper.X) EOR (Oper).Y |
Immédiat Page zéro Page zéro X Absolue Absolue X Absolue Y (indirecte.X) (Indirecte).Y |
2 22 3 3 3 2 2 |
49 45 55 40 50 59 41 41 |
N Z |
INC Incrémenter la mémoire de un |
M + I → M | INC Oper INC Oper.X INC Oper INC Oper.X |
Page zéro Page zéro.X Absolue Absolue.X |
2 2 3 3 |
E6 F6 EE FE |
N Z |
INX Incrémenter l'index X de un |
X + 1 → X | INX | Implicite | 1 | E8 | N Z |
INY Incrémenter l'indice Y de un |
Y + 1 → Y | INY | Implicite | 1 | C8 | N Z |
JMP Aller au nouvel emplacement |
(PC + 1) → PCL (PC + 2) → PCH |
JMP Oper JMP Oper |
Absolue Indirecte |
3 3 |
4C 6C |
|
JSR Accéder à la nouvelle adresse de retour de la chaîne d'emplacement |
PC + 2| (PCX + 1) → PCL (PCX + 1) → PCL |
JSR Oper | Absolue | 3 | 20 | |
LDA Accumulateur de charge avec mémoire |
M → | LDA Oper LDA Oper LDA Oper LDA Oper.X LDA Oper.X LDA Oper.Y LDA (Oper.X) LDA (Oper).Y |
Immédiat Page zéro Page zéro X Absolue Absolue X Absolue Y (indirecte.X) (Indirecte).Y |
2 22 3 3 3 2 2 |
A9 A5 B5 AD BD B9 A1 B1 |
N Z |
LDX Charger l'index X avec de la mémoire |
M → X | LDX Oper LDX Oper LDX Oper,Y LDX Oper LDX Oper,Y |
Immédiat Page zéro Page zéro.Y Absolue Absolue.Y |
2 2 2 3 3 |
A2 A6 B6 AE BE |
N Z |
LDY Charger l'index Y avec la mémoire |
M → Y | LDY Oper LDY Oper LDY Oper,X LDY Oper LDY Oper,X |
Immédiat Page zéro Page zéro.Y Absolue Absolue.Y |
2 2 2 3 3 |
A0 A4 B4 AC BC |
N Z |
LSR Décaler un bit vers la droite (mémoire ou accumulateur) |
LSR A LSR Oper LSR Oper.X LSR Oper LSR Oper.X |
Accumulateur Page zéro Page zéro.X Absolue Absolue.X |
1 2 2 3 3 |
4A 46 56 4E 5E |
N C N → 0 |
|
NOP Pas d'opération |
Pas d'opération | NOP | Implicite | 1 | EA | |
ORA Ou binaire mémoire avec accumulateur |
A ∨ M → A | ORA Oper ORA Oper ORA Oper ORA Oper.X ORA Oper.X ORA Oper.Y ORA (Oper.X) ORA (Oper).Y |
Immédiat Page zéro Page zéro X Absolue Absolue X Absolue Y (indirecte.X) (Indirecte).Y |
2 22 3 3 3 2 2 |
09 05 15 00 1D 19 01 11 |
N Z |
PHA Pousser l'accumulateur sur la pile |
A| | PHA | Implicite | 1 | 48 | |
PHP Pousser l'état du processeur sur la pile |
P| | PHP | Implicite | 1 | 08 | |
PLA Extraire l'accumulateur de la pile |
A| | PLA | Implicite | 1 | 68 | N Z |
PLP Extraire l'état du processeur de la pile |
P| | PLP | Implicite | 1 | 28 | Restauré |
ROL Rotation d'un bit vers la gauche (mémoire ou accumulateur) |
ROL A ROL Oper ROL Oper.X ROL Oper ROL Oper.X |
Accumulateur Page zéro Page zéro.X Absolue Absolue.X |
1 2 2 3 3 |
2A 26 36 2E 3E |
N Z C | |
ROR Rotation d'un bit vers la gauche (mémoire ou accumulateur) |
ROR A ROR Oper ROR Oper.X ROR Oper ROR Oper.X |
Accumulateur Page zéro Page zéro.X Absolue Absolue.X |
1 2 2 3 3 |
6A 66 76 6E 7E |
N Z C | |
RTI Retour d'interruption |
P ← (SP) SP ← SP + 1 PCb ← (SP) SP ← SP + 1 PCh ← (SP) SP ← SP + 1 |
RTI | Implicite | 1 | 40 | |
RTS Retour du sous-programme |
RTS | Implicite | 1 | 60 | ||
SBC Soustraire la mémoire de l'accumulateur avec la retenue |
SBC Oper SBC Oper SBC Oper.X SBC Oper SBC Oper.X SBC Oper.Y SBC (Oper.X) SBC (Oper).Y |
Immédiat Page zéro Page zéro X Absolue Absolue X Absolue Y (indirecte.X) (Indirecte).Y |
2 2 2 3 3 3 2 2 |
E9 E5 F5 ED FD F9 E1 E1 |
||
SEC Fixe le drapeau de retenue |
C ← 1 | SEC | Implicite | 1 | 38 | C |
SED Fixe le mode décimal |
D ← 1 | SED | Implicite | 1 | F8 | D |
SEI Fixe l'état de désactivation des interruptions |
I ← 1 | SEI | Implicite | 1 | 78 | I |
STA Entrepose l'accumulateur en mémoire |
STA Oper STA Oper,X STA Oper STA Oper,X STA Oper,Y STA (Oper,X) STA (Oper),Y |
Page zéro Page zéro,X Position absolue Position absolue,X Position absolue,Y Indirecte,X Indirecte,Y |
2 2 3 3 3 2 2 |
85 95 8D 9D 99 81 91 |
||
STX Entrepose l'index X en mémoire |
STX Oper STX Oper,Y STX Oper |
Page zéro Page zéro,Y Position absolue |
2 2 3 |
86 96 8E |
||
STY Entrepose l'index Y en mémoire |
STY Oper STY Oper,Y STY Oper |
Page zéro Page zéro,Y Position absolue |
2 2 3 |
84 94 8C |
||
TAX Transfère l'accumulateur vers l'index X |
X ← A | TAX | Implicite | 1 | AA | |
TAY Transfère l'accumulateur vers l'index Y |
Y ← A | TAY | Implicite | 1 | A8 | |
TSX Transfère le pointeur de pile vers l'index X |
X ← S | TXA | Implicite | 1 | BA | |
TXA Transfère l'indice X dans l'accumulateur |
X → A | TXA | Implicite | 1 | 8A | N Z |
TXS Transfère l'index X vers le pointeur de pile |
X → S | TXS | Implicite | 1 | 9A | |
TYA Transfère l'indice Y à l'accumulateur |
X → A | TYA | Implicite | 1 | 98 | N Z |
Dernière mise à jour : Mardi, le 7 mars 2023