6502 cycle times: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(added mnemonics up to CMP)
(all legal 6502 opcodes now populated)
Line 106: Line 106:
|6
|6
|5+
|5+
|x
|-
|CPX
|ComPare X register
|x
|2
|3
|x
|x
|4
|x
|x
|x
|x
|x
|x
|
|-
|CPY
|ComPare Y register
|x
|2
|3
|x
|x
|4
|x
|x
|x
|x
|x
|x
|
|-
|DEC
|DECrement memory
|x
|x
|5
|6
|x
|6
|7
|x
|x
|x
|x
|x
|
|-
|EOR
|bitwise Exclusive OR
|x
|2
|3
|4
|x
|4
|4+
|4+
|x
|6
|5+
|x
|-
|INC
|INCrement memory
|x
|x
|5
|6
|x
|6
|7
|x
|x
|x
|x
|x
|
|-
|JMP
|JuMP
|x
|x
|x
|x
|x
|3
|x
|x
|5
|x
|x
|x
|
|-
|JSR
|Jump to SubRoutine
|x
|x
|x
|x
|x
|6
|x
|x
|x
|x
|x
|x
|
|-
|LDA
|LoaD Accumulator
|x
|2
|3
|4
|x
|4
|4+
|4+
|x
|6
|5+
|x
|
|-
|LDX
|LoaD X register
|x
|2
|3
|x
|4
|4
|x
|4+
|x
|x
|x
|x
|
|-
|LDY
|LoaD Y register
|x
|2
|3
|4
|x
|4
|4+
|x
|x
|x
|x
|x
|
|-
|LSR
|Logical Shift Right
|x
|x
|5
|6
|x
|6
|7
|x
|x
|x
|x
|2
|
|-
|NOP
|No Operation
|2
|x
|x
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|-
|ORA
|bitwise OR with Accumulator
|x
|2
|3
|4
|x
|4
|4+
|4+
|x
|6
|5+
|x
|
|-
|ROL
|Rotate Left
|x
|x
|5
|6
|x
|6
|7
|x
|x
|x
|x
|2
|
|-
|ROR
|Rotate Right
|x
|x
|5
|6
|x
|6
|7
|x
|x
|x
|x
|2
|
|-
|RTI
|ReTurn from Interrupt
|6
|x
|x
|x
|x
|x
|x
|x
|x
|x
|x
|x
|
|-
|RTS
|ReTurn from Subroutine
|6
|x
|x
|x
|x
|x
|x
|x
|x
|x
|x
|x
|-
|SBC
|SuBtract with Carry
|x
|2
|3
|4
|x
|4
|4+
|4+
|x
|6
|5+
|x
|
|-
|STA
|Store Accumulator
|x
|x
|3
|4
|x
|4
|5
|5
|x
|6
|6
|x
|-
|STX
|Store X register
|x
|x
|3
|x
|4
|4
|x
|x
|x
|x
|x
|x
|-
|STY
|Store Y register
|x
|x
|3
|4
|x
|4
|x
|x
|x
|x
|x
|x
|x
|}
|}

Revision as of 05:34, 6 November 2021

I put this spreadsheet together because I didn't like the way the timing information was organized in other places. Some mnemonic/addressing mode combinations do not have an opcode and are marked with "x" because they are not legal instructions. I may add the illegal opcodes later. Cells marked with "+" mean add one cycle if a page boundary is crossed.

Mnemonic Description IMP IMM ZP ZP,X ZP,Y ABS ABS,X ABS,Y IND IND,X IND,Y ACC
ADC ADd with Carry x 2 3 4 x 4 4+ 4+ x 6 5+ x
AND bitwise AND with accumulator x 2 3 4 x 4 4+ 4+ x 6 5+ x
ASL Arithmetic Shift Left x x 5 6 x 6 7 x x x x x
BIT test BITs x x 3 x x 4 x x x x x x
BRK BreaK 7 x x x x x x x x x x x
CMP CoMPare accumulator x 2 3 4 x 4 4+ 4+ x 6 5+ x
CPX ComPare X register x 2 3 x x 4 x x x x x x
CPY ComPare Y register x 2 3 x x 4 x x x x x x
DEC DECrement memory x x 5 6 x 6 7 x x x x x
EOR bitwise Exclusive OR x 2 3 4 x 4 4+ 4+ x 6 5+ x
INC INCrement memory x x 5 6 x 6 7 x x x x x
JMP JuMP x x x x x 3 x x 5 x x x
JSR Jump to SubRoutine x x x x x 6 x x x x x x
LDA LoaD Accumulator x 2 3 4 x 4 4+ 4+ x 6 5+ x
LDX LoaD X register x 2 3 x 4 4 x 4+ x x x x
LDY LoaD Y register x 2 3 4 x 4 4+ x x x x x
LSR Logical Shift Right x x 5 6 x 6 7 x x x x 2
NOP No Operation 2 x x x x x x x x x x x
ORA bitwise OR with Accumulator x 2 3 4 x 4 4+ 4+ x 6 5+ x
ROL Rotate Left x x 5 6 x 6 7 x x x x 2
ROR Rotate Right x x 5 6 x 6 7 x x x x 2
RTI ReTurn from Interrupt 6 x x x x x x x x x x x
RTS ReTurn from Subroutine 6 x x x x x x x x x x x
SBC SuBtract with Carry x 2 3 4 x 4 4+ 4+ x 6 5+ x
STA Store Accumulator x x 3 4 x 4 5 5 x 6 6 x
STX Store X register x x 3 x 4 4 x x x x x x
STY Store Y register x x 3 4 x 4 x x x x x x