mirror of http://shamusworld.gotdns.org/git/rmac
280 lines
7.7 KiB
ArmAsm
280 lines
7.7 KiB
ArmAsm
; Compile me using "rmac -l6502tester.lst 6502tester.s" and open
|
|
; 6502tester.lst to see and compare the output opcodes
|
|
|
|
.6502
|
|
|
|
label:
|
|
|
|
;ADC (ADd with Carry)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
ADC #$44 ;$69 2 Immediate
|
|
ADC $44 ;$65 2 Zero Page
|
|
ADC $44,X ;$75 2 Zero Page,X
|
|
ADC $4400 ;$6D 3 Absolute
|
|
ADC $4400,X ;$7D 3 Absolute,X
|
|
ADC $4400,Y ;$79 3 Absolute,Y
|
|
ADC ($44,X) ;$61 2 Indirect,X
|
|
ADC ($44),Y ;$71 2 Indirect,Y
|
|
|
|
;AND (bitwise AND with accumulator)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
AND #$44 ;$29 2 Immediate
|
|
AND $44 ;$25 2 Zero Page
|
|
AND $44,X ;$35 2 Zero Page,X
|
|
AND $4400 ;$2D 3 Absolute
|
|
AND $4400,X ;$3D 3 Absolute,X
|
|
AND $4400,Y ;$39 3 Absolute,Y
|
|
AND ($44,X) ;$21 2 Indirect,X
|
|
AND ($44),Y ;$31 2 Indirect,Y
|
|
|
|
;ASL (Arithmetic Shift Left)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
ASL ;$0A 1 Accumulator (Implied)
|
|
ASL $44 ;$06 2 Zero Page
|
|
ASL $44,X ;$16 2 Zero Page,X
|
|
ASL $4400 ;$0E 3 Absolute
|
|
ASL $4400,X ;$1E 3 Absolute,X
|
|
|
|
;BIT (test BITs)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
BIT $44 ;$24 2 Zero Page
|
|
BIT $4400 ;$2C 3 Absolute
|
|
|
|
;Branch Instructions
|
|
|
|
;MNEMONIC HEX
|
|
BPL label ;$10 (Branch on PLus)
|
|
BMI label ;$30 (Branch on MInus)
|
|
BVC label ;$50 (Branch on oVerflow Clear)
|
|
BVS label ;$70 (Branch on oVerflow Set)
|
|
BCC label ;$90 (Branch on Carry Clear)
|
|
BCS label ;$B0 (Branch on Carry Set)
|
|
BNE label ;$D0 (Branch on Not Equal)
|
|
BEQ label ;$F0 (Branch on EQual)
|
|
|
|
;BRK (BReaK)
|
|
; SYNTAX HEX LEN ;MODE
|
|
BRK ;$00 1 ;Implied
|
|
|
|
;CMP (CoMPare accumulator)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
CMP #$44 ;$C9 2 Immediate
|
|
CMP $44 ;$C5 2 Zero Page
|
|
CMP $44,X ;$D5 2 Zero Page,X
|
|
CMP $4400 ;$CD 3 Absolute
|
|
CMP $4400,X ;$DD 3 Absolute,X
|
|
CMP $4400,Y ;$D9 3 Absolute,Y
|
|
CMP ($44,X) ;$C1 2 Indirect,X
|
|
CMP ($44),Y ;$D1 2 Indirect,Y
|
|
|
|
;CPX (ComPare X register)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
CPX #$44 ;$E0 2 Immediate
|
|
CPX $44 ;$E4 2 Zero Page
|
|
CPX $4400 ;$EC 3 Absolute
|
|
|
|
;CPY (ComPare Y register)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
CPY #$44 ;$C0 2 Immediate
|
|
CPY $44 ;$C4 2 Zero Page
|
|
CPY $4400 ;$CC 3 Absolute
|
|
|
|
;DEC (DECrement memory)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
DEC $44 ;$C6 2 Zero Page
|
|
DEC $44,X ;$D6 2 Zero Page,X
|
|
DEC $4400 ;$CE 3 Absolute
|
|
DEC $4400,X ;$DE 3 Absolute,X
|
|
|
|
;EOR (bitwise Exclusive OR)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
EOR #$44 ;$49 2 Immediate
|
|
EOR $44 ;$45 2 Zero Page
|
|
EOR $44,X ;$55 2 Zero Page,X
|
|
EOR $4400 ;$4D 3 Absolute
|
|
EOR $4400,X ;$5D 3 Absolute,X
|
|
EOR $4400,Y ;$59 3 Absolute,Y
|
|
EOR ($44,X) ;$41 2 Indirect,X
|
|
EOR ($44),Y ;$51 2 Indirect,Y
|
|
|
|
;Flag (Processor Status) Instructions
|
|
|
|
;MNEMONIC HEX
|
|
CLC ;(CLear Carry) $18
|
|
SEC ;(SEt Carry) $38
|
|
CLI ;(CLear Interrupt) $58
|
|
SEI ;(SEt Interrupt) $78
|
|
CLV ;(CLear oVerflow) $B8
|
|
CLD ;(CLear Decimal) $D8
|
|
SED ;(SEt Decimal) $F8
|
|
|
|
;INC (INCrement memory)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
INC $44 ;$E6 2 ;Zero Page
|
|
INC $44,X ;$F6 2 ;Zero Page,X
|
|
INC $4400 ;$EE 3 ;Absolute
|
|
INC $4400,X ;$FE 3 ;Absolute,X
|
|
|
|
;JMP (JuMP)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
JMP $5597 ;$4C 3 Absolute
|
|
JMP ($5597) ;$6C 3 Indirect
|
|
|
|
;JSR (Jump to SubRoutine)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
JSR $5597 ;$20 3 Absolute
|
|
|
|
;LDA (LoaD Accumulator)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
LDA #$44 ;$A9 2 Immediate
|
|
LDA $44 ;$A5 2 Zero Page
|
|
LDA $44,X ;$B5 2 Zero Page,X
|
|
LDA $4400 ;$AD 3 Absolute
|
|
LDA $4400,X ;$BD 3 Absolute,X
|
|
LDA $4400,Y ;$B9 3 Absolute,Y
|
|
LDA ($44,X) ;$A1 2 Indirect,X
|
|
LDA ($44),Y ;$B1 2 Indirect,Y
|
|
|
|
;LDX (LoaD X register)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
LDX #$44 ;$A2 2 Immediate
|
|
LDX $44 ;$A6 2 Zero Page
|
|
LDX $44,Y ;$B6 2 Zero Page,Y
|
|
LDX $4400 ;$AE 3 Absolute
|
|
LDX $4400,Y ;$BE 3 Absolute,Y
|
|
|
|
;LDY (LoaD Y register)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
LDY #$44 ;$A0 2 Immediate
|
|
LDY $44 ;$A4 2 Zero Page
|
|
LDY $44,X ;$B4 2 Zero Page,X
|
|
LDY $4400 ;$AC 3 Absolute
|
|
LDY $4400,X ;$BC 3 Absolute,X
|
|
|
|
;LSR (Logical Shift Right)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
LSR ;$4A 1 Accumulator (Implied)
|
|
LSR $44 ;$46 2 Zero Page
|
|
LSR $44,X ;$56 2 Zero Page,X
|
|
LSR $4400 ;$4E 3 Absolute
|
|
LSR $4400,X ;$5E 3 Absolute,X
|
|
|
|
;NOP (No OPeration)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
NOP ;$EA 1 Implied
|
|
|
|
;ORA (bitwise OR with Accumulator)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
ORA #$44 ;$09 2 Immediate
|
|
ORA $44 ;$05 2 Zero Page
|
|
ORA $44,X ;$15 2 Zero Page,X
|
|
ORA $4400 ;$0D 3 Absolute
|
|
ORA $4400,X ;$1D 3 Absolute,X
|
|
ORA $4400,Y ;$19 3 Absolute,Y
|
|
ORA ($44,X) ;$01 2 Indirect,X
|
|
ORA ($44),Y ;$11 2 Indirect,Y
|
|
|
|
;Register Instructions
|
|
|
|
;MNEMONIC HEX
|
|
TAX ;(Transfer A to X) $AA
|
|
TXA ;(Transfer X to A) $8A
|
|
DEX ;(DEcrement X) $CA
|
|
INX ;(INcrement X) $E8
|
|
TAY ;(Transfer A to Y) $A8
|
|
TYA ;(Transfer Y to A) $98
|
|
DEY ;(DEcrement Y) $88
|
|
INY ;(INcrement Y) $C8
|
|
|
|
;ROL (ROtate Left)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
ROL ;$2A 1 Accumulator (Implied)
|
|
ROL $44 ;$26 2 Zero Page
|
|
ROL $44,X ;$36 2 Zero Page,X
|
|
ROL $4400 ;$2E 3 Absolute
|
|
ROL $4400,X ;$3E 3 Absolute,X
|
|
|
|
;ROR (ROtate Right)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
ROR ;$6A 1 Accumulator (Implied)
|
|
ROR $44 ;$66 2 Zero Page
|
|
ROR $44,X ;$76 2 Zero Page,X
|
|
ROR $4400 ;$6E 3 Absolute
|
|
ROR $4400,X ;$7E 3 Absolute,X
|
|
|
|
;RTI (ReTurn from Interrupt)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
RTI ;$40 1 Implied
|
|
|
|
;RTS (ReTurn from Subroutine)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
RTS ;$60 1 Implied
|
|
|
|
;SBC (SuBtract with Carry)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
SBC #$44 ;$E9 2 Immediate
|
|
SBC $44 ;$E5 2 Zero Page
|
|
SBC $44,X ;$F5 2 Zero Page,X
|
|
SBC $4400 ;$ED 3 Absolute
|
|
SBC $4400,X ;$FD 3 Absolute,X
|
|
SBC $4400,Y ;$F9 3 Absolute,Y
|
|
SBC ($44,X) ;$E1 2 Indirect,X
|
|
SBC ($44),Y ;$F1 2 Indirect,Y
|
|
|
|
;STA (STore Accumulator)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
STA $44 ;$85 2 Zero Page
|
|
STA $44,X ;$95 2 Zero Page,X
|
|
STA $4400 ;$8D 3 Absolute
|
|
STA $4400,X ;$9D 3 Absolute,X
|
|
STA $4400,Y ;$99 3 Absolute,Y
|
|
STA ($44,X) ;$81 2 Indirect,X
|
|
STA ($44),Y ;$91 2 Indirect,Y
|
|
|
|
;Stack Instructions
|
|
;MNEMONIC HEX
|
|
TXS ;(Transfer X to Stack ptr) $9A
|
|
TSX ;(Transfer Stack ptr to X) $BA
|
|
PHA ;(PusH Accumulator) $48
|
|
PLA ;(PuLl Accumulator) $68
|
|
PHP ;(PusH Processor status) $08
|
|
PLP ;(PuLl Processor status) $28
|
|
|
|
;STX (STore X register)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
STX $44 ;$86 2 ;Zero Page
|
|
STX $44,Y ;$96 2 ;Zero Page,Y
|
|
STX $4400 ;$8E 3 ;Absolute
|
|
|
|
;STY (STore Y register)
|
|
|
|
; SYNTAX HEX LEN MODE
|
|
STY $44 ;$84 2 ;Zero Page
|
|
STY $44,X ;$94 2 ;Zero Page,X
|
|
STY $4400 ;$8C 3 ;Absolute
|