home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Go64!
/
Go64_1999-09_1999_CSW_Side_B.d64
/
6502-opcodes
< prev
next >
Wrap
Text File
|
2023-02-26
|
18KB
|
824 lines
aSSEMBLY lANGUAGE iNSTRUCTION
compare instructions
cmp (COMPARE WITH aCCUMULATOR)
cOMPARES THE ADDRESSED BYTE WITH THE aCCUMULATOR.
cHANGES FLAGS: n z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE cmp #OP $C9 2 2
DIRECT cmp OP $CD 3 4
ZERO PAGE cmp OP $C5 2 3
DIRECT x-INDEXED cmp OP,X $DD 3 4
DIRECT y-INDEXED cmp OP,Y $D9 3 4
ZERO PAGE x-INDEXED cmp OP,X $D5 2 4
INDIRECT x-INDEXED cmp (OP,X) $C1 2 6
INDIRECT y-INDEXED cmp (OP),Y $D1 2 5
cpx (COMPARE WITH X-REGISTER)
cOMPARES A BYTE TO THE X REGISTER.
cHANGES FLAGS: n z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE cpx #OP $E0 2 2
DIRECT cpx OP $EC 3 4
ZERO PAGE cpx OP $E4 2 3
cpy (COMPARE WITH Y-REGISTER)
cOMPARES A BYTE TO THE Y REGISTER.
cHANGES FLAGS: n z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE cpx #OP $C0 2 2
DIRECT cpx OP $CC 3 4
ZERO PAGE cpx OP $C4 2 3
jump instructions
bcc (BRANCH IF CARRY CLEAR)
jUMPS IF THE CARRY FLAG IS CLEARED.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE bcc OP $90 2 2
bcs (BRANCH IF CARRY SET)
jUMPS IF THE CARRY FLAG IS SET.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE bcs OP $B0 2 2
beq (BRANCH IF EQUAL TO ZERO)
jUMPS IF THE ZERO FLAG IS SET.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE beq OP $F0 2 2
bne (BRANCH IF NOT EQUAL TO ZERO)
jUMPS IF THE ZERO FLAG IS CLEARED.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE bne OP $D0 2 2
bmi (BRANCH IF MINUS)
jUMPS IF THE NEGATIVE FLAG IS SET.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE bmi OP $30 2 2
bpl (BRANCH IF PLUS)
jUMPS IF THE NEGATIVE FLAG IS CLEARED.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE bpl OP $10 2 2
bvc (BRANCH IF OVERFLOW CLEAR)
jUMPS IF THE OVERFLOW FLAG IS CLEARED.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE bvc OP $50 2 2
bvs (BRANCH IF OVERFLOW SET)
jUMPS IF THE OVERFLOW FLAG IS SET.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
RELATIVE bvs OP $70 2 2
jmp (JUMP)
jUMPS TO THE GIVEN ADDRESS.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT jmp OP $4C 3 3
iNDIREKT jmp (OP) $6C 3 5
jsr (JUMP TO SUBROUTINE)
jUMPS TO THE GIVEN ADDRESS (SUB-ROUTINE) AFTER PUSHING THE
RETURN ADDRESS -1 ONTO THE STACK.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT jsr OP $20 3 6
nop (NO OPERATION)
nO OPERATION.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT nop $EA 1 2
rts (RETURN FROM SUBROUTINE)
rETURNS FROM A SUBROUTINE: PULLS THE RETURN ADDRESS (TWO BYTES) FROM
STACK AND JUMPS TO THIS ADDRESS PLUS 1.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT rts $60 1 6
interrupt instructions
brk (BREAK)
iNTERRUPTS PROGRAM EXECUTION.
cHANGES FLAGS: b
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT brk $00 1 7
cli (CLEAR INTERRUPT FLAG)
cLEARS THE INTERRUPT FLAG.
cHANGES FLAGS: i
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT cli $58 1 2
rti (RETURN FROM INTERRUPT)
rETURNS FROM AN INTERRUPT ROUTINE.
cHANGES FLAGS: n v b d i z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT rti $40 1 6
sei (SET INTERRUPT)
sET THE INTERRUPT FLAG.
cHANGES FLAGS: i
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT sei $78 1 2
transfer instructions
lda (LOAD aCCUMULATOR)
lOAD aCCUMULATOR WITH GIVEN VALUE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE lda #OP $A9 2 2
DIRECT lda OP $AD 3 4
ZERO PAGE lda OP $A5 2 3
DIRECT x-INDEXED lda OP,X $BD 3 4
DIRECT y-INDEXED lda OP,Y $B9 3 4
ZERO PAGE x-INDEXED lda OP,X $B5 2 4
INDIRECT x-INDEXED lda (OP,X) $A1 2 6
INDIRECT y-INDEXED lda (OP),Y $B1 2 5
ldx (LOAD X-REGISTER)
lOAD X REGISTER WITH VALUE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE ldx #OP $A2 2 2
DIRECT ldx OP $AE 3 4
ZERO PAGE ldx OP $A6 2 3
DIRECT y-INDEXED ldx OP,Y $BE 3 4
ZERO PAGE y-INDEXED ldx OP,Y $B6 2 4
ldy (LOAD Y-REGISTER)
lOAD Y REGISTER WITH GIVEN VALUE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE ldy #OP $A0 2 2
DIRECT ldy OP $AC 3 4
ZERO PAGE ldy OP $A4 2 3
DIRECT x-INDEXED ldy OP,X $BC 3 4
ZERO PAGE x-INDEXED ldy OP,X $B4 4 2
pha (PUSH aCCUMULATOR)
pUSH THE VALUE IN aCCUMULATOR ONTO THE STACK.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT pha $48 1 3
php (PUSH PROCESSOR-STATUS)
pUSHES THE PROCESSOR STATUS REGISTER ONTO THE STACK.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT php $08 1 3
pla (PULL aCCUMULATOR)
lOAD THE aCCUMULATOR WITH THE BYTE ON TOP OF THE STACK.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT pla $68 1 3
plp (PULL PROCESSOR-STATUS)
lOAD THE STATUS REGISTER WITH THE BYTE ON TOP OF THE STACK.
cHANGES FLAGS: n v b d i z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT plp $28 1 4
sta (STORE aCCUMULATOR)
wRITE THE BYTE IN aCCUMULATOR INTO THE ADDRESSED MEMORY CELL.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT sta OP $8D 3 4
ZERO PAGE sta OP $85 2 3
DIRECT x-INDEXED sta OP,X $9D 3 5
DIRECT y-INDEXED sta OP,Y $99 3 5
ZERO PAGE x-INDEXED sta OP,X $95 2 4
INDIRECT x-INDEXED sta (OP,X) $81 2 6
INDIRECT y-INDEXED sta (OP),Y $91 2 6
stx (STORE X-REGISTER)
wRITES X REGISTER TO THE GIVEN ADDRESS.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT ldx OP $BC 3 4
ZERO PAGE ldx OP $86 2 3
ZERO PAGE y-INDEXED ldx OP,Y $96 2 4
sty (STORE Y-REGISTER)
wRITES Y REGISTER TO THE GIVEN ADDRESS.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT sty OP $BC 3 4
ZERO PAGE sty OP $84 2 3
ZERO PAGE x-INDEXED sty OP,X $94 4 2
tax (TRANSFER aCCUMULATOR TO X-REGSISTER)
cOPY BYTE IN aCCUMULATOR INTO THE X REGISTER.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT tax $AA 1 2
tay (TRANSFER aCCUMULATOR TO Y-REGISTER)
cOPY BYTE IN aCCUMULATOR INTO THE Y REGISTER.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT tay $A8 1 2
txa (TRANSFER X-REGISTER TO aCCUMULATOR)
cOPY THE BYTE IN X REGISTER INTO aCCUMULATOR.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT txa $8A 1 2
tya (TRANSFER Y-REGISTER TO aCCUMULATOR)
cOPY THE BYTE IN Y REGISTER INTO aCCUMULATOR.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT tya $98 1 2
tsx (TRANSFER STACKREGISTER TO X-REGISTER)
cOPIES THE STACK POINTER INTO THE X REGISTER.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT tsx $BA 1 2
txs (TRANSFER X-REGISTER TO STACKREGISTER)
cOPIES THE X REGISTER INTO THE STACK POINTER.
cHANGES FLAGS: NONE
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT txs $9A 1 2
increment/decrement commands
dec (DECREMENT MEMORY)
dECREMENTS THE BYTE IN THE ADDRESSSED MEMORY CELL BY 1.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT dec OP $CE 3 6
ZERO PAGE dec OP $C6 2 5
DIRECT x-INDEXED dec OP,X $DE 3 7
ZERO PAGE x-INDEXED dec OP,X $D6 2 6
dex (DECREMENT X-REGISTER)
dECREMENTS THE VALUE OF THE X REGISTER BY ONE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT dex $CA 1 2
dey (DECREMENT Y-REGISTER)
dECREMENTS THE BYTE IN Y REGISTER BY ONE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT dey $88 1 2
inc (INCREMENT MEMORY)
iNCREMENTS THE BYTE AT THE GIVEN ADDRESS BY ONE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT inc OP $EE 3 6
ZERO PAGE inc OP $E6 2 5
DIRECT x-INDEXED inc OP,X $FE 3 7
ZERO PAGE x-INDEXED inc OP,X $F6 2 6
inx (INCREMENT X-REGISTER)
iNCREMENTS THE X REGISTER BY ONE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT inx $E8 1 2
iny (INCREMENT Y-REGISTER)
iNCREMENTS THE Y REGISTER BY ONE.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT iny $C8 1 2
arithmetical instructions
adc (ADD WITH CARRY)
aDDS THE OPERAND & CARRY FLAG TO THE aCCUMULATOR.
cHANGES FLAGS: n v z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE adc #OP $69 2 2
DIRECT adc OP $6D 3 4
ZERO PAGE adc OP $65 2 3
DIRECT x-INDEXED adc OP,X $7D 3 4
DIRECT y-INDEXED adc OP,Y $79 3 4
ZERO PAGE x-INDEXED adc OP,X $75 2 4
INDIRECT x-INDEXED adc (OP,X) $61 2 6
INDIRECT y-INDEXED adc (OP),Y $71 2 5
clc (CLEAR CARRY)
cLEAR THE CARRY FLAG.
cHANGES FLAGS: c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT clc $18 1 2
cld (CLEAR DECIMAL MODE)
cLEAR THE DECIMAL MODE FLAG.
cHANGES FLAGS: d
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT cld $D8 1 2
clv (CLEAR OVERFLOW FLAG)
cLEAR THE OVERFLOW FLAG.
cHANGES FLAGS: v
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT clv $B8 1 2
sbc (SUBSTRACT WITH CARRY)
sUBTRACTS OPERAND + CARRY FALG FROM aCCUMULATOR.
cHANGES FLAGS: n v z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE sbc #OP $E9 2 2
DIRECT sbc OP $ED 3 4
ZERO PAGE sbc OP $E5 2 3
DIRECT x-INDEXED sbc OP,X $FD 3 4
DIRECT y-INDEXED sbc OP,Y $F9 3 4
ZERO PAGE x-INDEXED sbc OP,X $F5 2 4
INDIRECT x-INDEXED sbc (OP,X) $E1 2 6
INDIRECT y-INDEXED sbc (OP),X $F1 2 5
sec (SET CARRY)
sET THE CARRY FLAG.
cHANGES FLAGS: c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT sec $38 1 2
sed (SET DECIMAL MODE)
sET THE DECIMAL MODE FLAG.
cHANGES FLAGS: d
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMPLICIT sed $F8 1 2
logical instructions
and (and aCCUMULATOR)
pERFORMS A LOGICAL and (CONJUNCTION) BETWEEN THE aCCUMULATOR AND THE
OPERAND.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE and #OP $29 2 2
DIRECT and OP $2D 3 4
ZERO PAGE and OP $25 2 3
DIRECT x-INDEXED and OP,X $3D 3 4
DIRECT y-INDEXED and OP,Y $39 3 4
ZERO PAGE x-INDEXED and OP,X $35 2 4
INDIRECT x-INDEXED and (OP,X) $21 2 6
INDIRECT y-INDEXED and (OP),Y $31 2 5
bit (TEST BITS)
pERFORMS A LOGICAL and WITH THE aCCUMULATOR AND THE OPERAND AND SETS
THE zERO FLAG
ACCORDINGLY. bIT 7 OF THE OPERAND IS COPIED INTO THE n FLAG, BIT 6
INTO
THE v FLAG.
cHANGES FLAGS: n v z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
DIRECT bit OP $2C 3 4
ZERO PAGE bit OP $24 2 3
eor (EXCLUSIVE-OR aCCUMULATOR)
pERFORMS AN EXCLUSIVE-OR BETWEEN THE aCCUMULATOR AND THE OPERAND.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE eor #OP $49 2 2
DIRECT eor OP $4D 3 4
ZERO PAGE eor OP $45 2 3
DIRECT x-INDEXED eor OP,X $5D 3 4
DIRECT y-INDEXED eor OP,Y $59 3 4
ZERO PAGE x-INDEXED eor OP,X $55 2 4
INDIRECT x-INDEXED eor (OP,X) $41 2 6
INDIRECT y-INDEXED eor (OP),Y $51 2 5
ora (or aCCUMULATOR)
pERFORMS A LOGICAL or (DISJUNCTION) BETWEEN THE aCCUMULATOR AND THE
OPERAND.
cHANGES FLAGS: n z
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
IMMEDIATE ora #OP $09 2 2
DIRECT ora OP $0D 3 4
ZERO PAGE ora OP $05 2 3
DIRECT x-INDEXED ora OP,X $1D 3 4
DIRECT y-INDEXED ora OP,Y $19 3 4
ZERO PAGE x-INDEXED ora OP,X $15 2 4
INDIRECT x-INDEXED ora (OP,X) $01 2 6
INDIRECT y-INDEXED ora (OP),Y $11 2 5
shift and rotate instructions
asl (ARITHMETIC SHIFT LEFT)
sHIFTS THE BITS OF THE OPERAND ONE POSITION TO THE LEFT, ADDING A
ZERO
BIT AT THE RIGHTMOST POSITION WHICH BECOMES FREE, AND SHIFTING THE
LEFTMOST BIT INTO THE CARRY FLAG (c).
tHIS OPERATION IS EQUAL TO MULTIPLYING BY TWO.
cHANGES FLAGS: n z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
aCCUMULATOR asl $0A 1 2
DIRECT asl OP $0E 3 6
ZERO PAGE asl OP $06 2 5
DIRECT x-INDEXED asl OP,X $1E 3 7
ZERO PAGE x-INDEXED asl OP,X $16 2 6
lsr (LOGICAL SHIFT RIGHT)
sHIFTS THE BITS OF THE OPERAND ONE BIT TO THE RIGHT, INSERTING A
ZERO
AT THE LEFT END, AND SHIFTING THE RIGHTMOST BIT INTO THE CARRY FLAG.
tHIS OPERATION IS THE SAME AS DIVIDING BY TWO.
cHANGES FLAGS: n z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
aCCUMULATOR lsr $4A 1 2
DIRECT lsr OP $4E 3 6
ZERO PAGE lsr OP $46 2 5
DIRECT x-INDEXED lsr OP,X $5E 3 7
ZERO PAGE x-INDEXED lsr OP,X $56 2 6
rol (ROTATE LEFT)
rOTATES THE BITS OF THE OPERAND ONE POSITION TO THE LEFT, INSERTING
THE
CURRENT BIT IN THE c FLAG AT THE RIGHT END, AND SHIFTS THE LEFTMOST
BIT
INTO THE CARRY.
cHANGES FLAGS: n z c
aCCUMULATOR rol $2A 1 2
DIRECT rol OP $2E 3 6
ZERO PAGE rol OP $26 2 5
DIRECT x-INDEXED rol OP,X $3E 3 7
ZERO PAGE x-INDEXED rol OP,X $36 2 6
ror (ROTATE RIGHT)
rOTATES THE BITS OF THE OPERAND ONE BIT TO THE RIGHT. tHE LEFTMOST
BIT
WHICH BECOMES FREE TAKES THE VALUE OF THE c FLAG, WHILE THE
RIGHTMOST
BIT IS SHIFTED INTO THE c FLAG.
cHANGES FLAGS: n z c
ADDRESSING MODE NOTATION CODE LENGTH CYCLES
aCCUMULATOR ror $6A 1 2
DIRECT ror OP $6E 3 6
ZERO PAGE ror OP $66 2 5
DIRECT x-INDEXED ror OP,X $7E 3 7
ZERO PAGE x-INDEXED ror OP,X $76 2 6