Changes

Jump to: navigation, search

MOS 6502

126 bytes added, 10:51, 3 September 2024
/* Standard instructions */
{| class="wikitable"
|-
! rowspan=2|Mnemonic !! rowspan=2|Operation !! colspan=13|Addressing Modes !! colspan=8|Flags !! rowspan=2|Operation !! rowspan=2|Description
|-
! ''No arg'' !! A !! #$nn !! $nnnn !! $nnnn,X !! $nnnn,Y !! ($nnnn) !! $nn !! $nn,X !! $nn,Y !! ($nn,X) !! ($nn),Y !! $nnnn !! N !! V !! - !! B !! D !! I !! Z !! C
|-
| ADC || A + M + C → A, C || || || 69 || 6D || 7D || 79 || || 65 || 75 || || 61 || 71 || || N || V || - || - || - || - || Z || C || A + M + C → A, C || Add Memory to Accumulator with Carry
|-
| AND || A ∧ M → A || || || 29 || 2D || 3D || 39 || || 25 || 35 || || 21 || 31 || || N || - || - || - || - || - || Z || - || A ∧ M → A || "AND" Memory with Accumulator
|-
| ASL || C ← /M<sub>7</sub>...M<sub>0</sub>/ ← 0 || || 0A || || 0E || 1E || || || 06 || 16 || || || || || N || - || - || - || - || - || Z || C || C ← /M<sub>7</sub>...M<sub>0</sub>/ ← 0 || Arithmetic Shift Left
|-
| BCC || Branch on C = 0 || || || || || || || || || || || || || 90 || - || - || - || - || - || - || - || - || Branch on C = 0 || Branch on Carry Clear
|-
| BCS || Branch on C = 1 || || || || || || || || || || || || || B0 || - || - || - || - || - || - || - || - || Branch on C = 1 || Branch on Carry Set
|-
| BEQ || Branch on Z = 1 || || || || || || || || || || || || || F0 || - || - || - || - || - || - || - || - || Branch on Z = 1 || Branch on Result Zero
|-
| BIT || A ∧ M, M<sub>7</sub> → N, M<sub>6</sub> → V || || || || 2C || || || || 24 || || || || || || N || V || - || - || - || - || Z || - || A ∧ M, M<sub>7</sub> → N, M<sub>6</sub> → V || Test Bits in Memory with Accumulator
|-
| BMI || Branch on N = 1 || || || || || || || || || || || || || 30 || - || - || - || - || - || - || - || - || Branch on N = 1 || Branch on Result Minus
|-
| BNE || Branch on Z = 0 || || || || || || || || || || || || || D0 || - || - || - || - || - || - || - || - || Branch on Z = 0 || Branch on Result Not Zero
|-
| BPL || Branch on N = 0 || || || || || || || || || || || || || 10 || - || - || - || - || - || - || - || - || Branch on N = 0 || Branch on Result Plus
|-
| BRK || PC + 2↓, [FFFE] → PCL, [FFFF] → PCH || 00 || || || || || || || || || || || || || - || - || - || - || - || 1 || - || - || PC + 2↓, [FFFE] → PCL, [FFFF] → PCH || Break Command
|-
| BVC || Branch on V = 0 || || || || || || || || || || || || || 50 || - || - || - || - || - || - || - || - || Branch on V = 0 || Branch on Overflow Clear
|-
| BVS || Branch on V = 1 || || || || || || || || || || || || || 70 || - || - || - || - || - || - || - || - || Branch on V = 1 || Branch on Overflow Set
|-
| CLC || 0 → C || 18 || || || || || || || || || || || || || - || - || - || - || - || - || - || 0 || 0 → C || Clear Carry Flag
|-
| CLD || 0 → D || D8 || || || || || || || || || || || || || - || - || - || - || 0 || - || - || - || 0 → D || Clear Decimal Mode
|-
| CLI || 0 → I || 58 || || || || || || || || || || || || || - || - || - || - || - || 0 || - || - || 0 → I || Clear Interrupt Disable
|-
| CLV || 0 → V || B8 || || || || || || || || || || || || || - || 0 || - || - || - || - || - || - || 0 → V || Clear Overflow Flag
|-
| CMP || A - M || || || C9 || CD || DD || D9 || || C5 || D5 || || C1 || D1 || || N || - || - || - || - || - || Z || C || A - M || Compare Memory and Accumulator
|-
| CPX || X - M || || || E0 || EC || || || || E4 || || || || || || N || - || - || - || - || - || Z || C || X - M || Compare Index Register X To Memory
|-
| CPY || Y - M || || || C0 || CC || || || || C4 || || || || || || N || - || - || - || - || - || Z || C || Y - M || Compare Index Register Y To Memory
|-
| DEC || M - 1 → M || || || || CE || DE || || || C6 || D6 || || || || || N || - || - || - || - || - || Z || - || M - 1 → M || Decrement Memory By One
|-
| DEX || X - 1 → X || CA || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || X - 1 → X || Decrement Index Register X By One
|-
| DEY || Y - 1 → Y || 88 || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || Y - 1 → Y || Decrement Index Register Y By One
|-
| EOR || A ⊻ M → A || || || 49 || 4D || 5D || 59 || || 45 || 55 || || 41 || 51 || || N || - || - || - || - || - || Z || - || A ⊻ M → A || "Exclusive OR" Memory with Accumulator
|-
| INC || M + 1 → M || || || || EE || FE || || || E6 || F6 || || || || || N || - || - || - || - || - || Z || - || M + 1 → M || Increment Memory By One
|-
| INX || X + 1 → X || E8 || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || X + 1 → X || Increment Index Register X By One
|-
| INY || Y + 1 → Y || C8 || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || Y + 1 → Y || Increment Index Register Y By One
|-
| JMP || [PC + 1] → PCL, [PC + 2] → PCH || || || || 4C || || || 6C || || || || || || || - || - || - || - || - || - || - || - || [PC + 1] → PCL, [PC + 2] → PCH || JMP Indirect
|-
| JSR || PC + 2↓, [PC + 1] → PCL, [PC + 2] → PCH || || || || 20 || || || || || || || || || || - || - || - || - || - || - || - || - || PC + 2↓, [PC + 1] → PCL, [PC + 2] → PCH || Jump To Subroutine
|-
| LDA || M → A || || || A9 || AD || BD || B9 || || A5 || B5 || || A1 || B1 || || N || - || - || - || - || - || Z || - || M → A || Load Accumulator with Memory
|-
| LDX || M → X || || || A2 || AE || || BE || || A6 || || B6 || || || || N || - || - || - || - || - || Z || - || M → X || Load Index Register X From Memory
|-
| LDY || M → Y || || || A0 || AC || BC || || || A4 || B4 || || || || || N || - || - || - || - || - || Z || - || M → Y || Load Index Register Y From Memory
|-
| LSR || 0 → /M<sub>7</sub>...M<sub>0</sub>/ → C || || 4A || || 4E || 5E || || || 46 || 56 || || || || || 0 || - || - || - || - || - || Z || C || 0 → /M<sub>7</sub>...M<sub>0</sub>/ → C || Logical Shift Right
|-
| NOP || No operation || EA || || || || || || || || || || || || || - || - || - || - || - || - || - || - || No operation || No Operation
|-
| ORA || A ∨ M → A || || || 09 || 0D || 1D || 19 || || 05 || 15 || || 01 || 11 || || N || - || - || - || - || - || Z || - || A ∨ M → A || "OR" Memory with Accumulator
|-
| PHA || A↓ || 48 || || || || || || || || || || || || || - || - || - || - || - || - || - || - || A↓ || Push Accumulator On Stack
|-
| PHP || P↓ || 08 || || || || || || || || || || || || || - || - || - || 1 || - || - || - || - || - P↓ || Push Processor Status On on Stack
|-
| PLA || A↑ || 68 || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || (S)↑ → A || Pull Accumulator From Stack
|-
| PLP || P↑ || 28 || || || || || || || || || || || || || N || V || - || - B || D || I || Z || C || (S)↑ → P || Pull Processor Status From Stack
|-
| ROL || C ← /M<sub>7</sub>...M<sub>0</sub>/ ← C || || 2A || || 2E || 3E || || || 26 || 36 || || || || || N || - || - || - || - || - || Z || C || C ← /M<sub>7</sub>...M<sub>0</sub>/ ← C || Rotate One Bit Left(Memory or Accumulator)
|-
| ROR || C → /M<sub>7</sub>...M<sub>0</sub>/ → C || || 6A || || 6E || 7E || || || 66 || 76 || || || || || N || - || - || - || - || - || Z || C || C → /M<sub>7</sub>...M<sub>0</sub>/ → C || Rotate One Bit Right(Memory or Accumulator)
|-
| RTI || P↑ PC↑ || 40 || || || || || || || || || || || || || N || V || - || - B || D || I || Z || C || (S)↑ → P, (S)↑ → PCL, (S)↑ → PCH || Return From Interrupt
|-
| RTS || PC↑, PC + 1 → PC || 60 || || || || || || || || || || || || || - || - || - || - || - || - || - || - || (S)↑ → PCL, (S)↑ → PCH, PC + 1 → PC || Return From Subroutine
|-
| SBC || A - M - ~C → A || || || E9 || ED || FD || F9 || || E5 || F5 || || E1 || F1 || || N || V || - || - || - || - || Z || C || A - M - (1 - C) → A || Subtract Memory from Accumulator with Borrow
|-
| SEC || 1 → C || 38 || || || || || || || || || || || || || - || - || - || - || - || - || - || 1 || 1 → C || Set Carry Flag
|-
| SED || 1 → D || F8 || || || || || || || || || || || || || - || - || - || - || 1 || - || - || - || 1 → D || Set Decimal Mode
|-
| SEI || 1 → I || 78 || || || || || || || || || || || || || - || - || - || - || - || 1 || - || - || 1 → I || Set Interrupt Disable
|-
| STA || A → M || || || || 8D || 9D || 99 || || 85 || 95 || || 81 || 91 || || - || - || - || - || - || - || - || - || A → M || Store Accumulator in Memory
|-
| STX || X → M || || || || 8E || || || || 86 || || 96 || || || || - || - || - || - || - || - || - || - || X → M || Store Index Register X In in Memory
|-
| STY || Y → M || || || || 8C || || || || 84 || 94 || || || || || - || - || - || - || - || - || - || - || Y → M || Store Index Register Y In in Memory
|-
| TAX || A → X || AA || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || A → X || Transfer Accumulator To to Index X
|-
| TAY || A → Y || A8 || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || A → Y || Transfer Accumulator To to Index Y
|-
| TSX || S → X || BA || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || S → X || Transfer Stack Pointer To to Index X
|-
| TXA || X → A || 8A || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || X → A || Transfer Index X To to Accumulator
|-
| TXS || X → S || 9A || || || || || || || || || || || || || - || - || - || - || - || - || - || - || X → S || Transfer Index X To to Stack Pointer
|-
| TYA || Y → A || 98 || || || || || || || || || || || || || N || - || - || - || - || - || Z || - || Y → A || Transfer Index Y To to Accumulator
|}
13,173
edits