Supported 65816 instructions

Due to legacy from xkas, Asar's MVN and MVP instructions are backwards from most other assemblers: the syntax is MVN dest, src. Also, a 16-bit argument like MVN $ssdd (where $ss is source, $dd is destination) is accepted too (edit: not in asar2 it isn't).

All other instructions use syntax recommended by WDC, with some additional liberties:

  • for accumulator-addressed instructions (inc a etc), the a argument can be omitted.
  • cop, brk and wdm are assembled as 2-byte instructions, with with the second byte being optional and defaulting to zero.
; instruction:    assembles to these bytes:
BRK             ; 00 00
BRK #$12        ; 00 12
ORA ($12,x)     ; 01 12
COP             ; 02 00
COP #$12        ; 02 12
ORA $12,s       ; 03 12
TSB $12         ; 04 12
ORA $12         ; 05 12
ASL $12         ; 06 12
ORA [$12]       ; 07 12
PHP             ; 08
ORA #$12        ; 09 12
ORA #$1234      ; 09 34 12
ASL A           ; 0a
PHD             ; 0b
TSB $1234       ; 0c 34 12
ORA $1234       ; 0d 34 12
ASL $1234       ; 0e 34 12
ORA $123456     ; 0f 56 34 12
BPL $12         ; 10 12
ORA ($12),y     ; 11 12
ORA ($12)       ; 12 12
ORA ($12,s),y   ; 13 12
TRB $12         ; 14 12
ORA $12,x       ; 15 12
ASL $12,x       ; 16 12
ORA [$12],y     ; 17 12
CLC             ; 18
ORA $1234,y     ; 19 34 12
INC A           ; 1a
TCS             ; 1b
TRB $1234       ; 1c 34 12
ORA $1234,x     ; 1d 34 12
ASL $1234,x     ; 1e 34 12
ORA $123456,x   ; 1f 56 34 12
JSR $1234       ; 20 34 12
AND ($12,x)     ; 21 12
JSL $123456     ; 22 56 34 12
AND $12,s       ; 23 12
BIT $12         ; 24 12
AND $12         ; 25 12
ROL $12         ; 26 12
AND [$12]       ; 27 12
PLP             ; 28
AND #$12        ; 29 12
AND #$1234      ; 29 34 12
ROL A           ; 2a
PLD             ; 2b
BIT $1234       ; 2c 34 12
AND $1234       ; 2d 34 12
ROL $1234       ; 2e 34 12
AND $123456     ; 2f 56 34 12
BMI $12         ; 30 12
AND ($12),y     ; 31 12
AND ($12)       ; 32 12
AND ($12,s),y   ; 33 12
BIT $12,x       ; 34 12
AND $12,x       ; 35 12
ROL $12,x       ; 36 12
AND [$12],y     ; 37 12
SEC             ; 38
AND $1234,y     ; 39 34 12
DEC A           ; 3a
TSC             ; 3b
BIT $1234,x     ; 3c 34 12
AND $1234,x     ; 3d 34 12
ROL $1234,x     ; 3e 34 12
AND $123456,x   ; 3f 56 34 12
RTI             ; 40
EOR ($12,x)     ; 41 12
WDM             ; 42 00
WDM #$12        ; 42 12
EOR $12,s       ; 43 12
MVP $12,$34     ; 44 12 34
EOR $12         ; 45 12
LSR $12         ; 46 12
EOR [$12]       ; 47 12
PHA             ; 48
EOR #$12        ; 49 12
EOR #$1234      ; 49 34 12
LSR A           ; 4a
PHK             ; 4b
JMP $1234       ; 4c 34 12
EOR $1234       ; 4d 34 12
LSR $1234       ; 4e 34 12
EOR $123456     ; 4f 56 34 12
BVC $12         ; 50 23
EOR ($12),y     ; 51 12
EOR ($12)       ; 52 12
EOR ($12,s),y   ; 53 12
MVN $12,$34     ; 54 12 34
EOR $12,x       ; 55 12
LSR $12,x       ; 56 12
EOR [$12],y     ; 57 12
CLI             ; 58
EOR $1234,y     ; 59 34 12
PHY             ; 5a
TCD             ; 5b
JML $123456     ; 5c 56 34 12
EOR $1234,x     ; 5d 34 12
LSR $1234,x     ; 5e 34 12
EOR $123456,x   ; 5f 56 34 12
RTS             ; 60
ADC ($12,x)     ; 61 12
PER $1234       ; 62 34 12
ADC $12,s       ; 63 12
STZ $12         ; 64 12
ADC $12         ; 65 12
ROR $12         ; 66 12
ADC [$12]       ; 67 12
PLA             ; 68
ADC #$12        ; 69 12
ADC #$1234      ; 69 34 12
ROR A           ; 6a
RTL             ; 6b
JMP ($1234)     ; 6c 34 12
ADC $1234       ; 6d 34 12
ROR $1234       ; 6e 34 12
ADC $123456     ; 6f 56 34 12
BVS $12         ; 70 12
ADC ($12),y     ; 71 12
ADC ($12)       ; 72 12
ADC ($12,s),y   ; 73 12
STZ $12,x       ; 74 12
ADC $12,x       ; 75 12
ROR $12,x       ; 76 12
ADC [$12],y     ; 77 12
SEI             ; 78
ADC $1234,y     ; 79 34 12
PLY             ; 7a
TDC             ; 7b
JMP ($1234,x)   ; 7c 34 12
ADC $1234,x     ; 7d 34 12
ROR $1234,x     ; 7e 34 12
ADC $123456,x   ; 7f 56 34 12
BRA $12         ; 80 12
STA ($12,x)     ; 81 12
BRL $1234       ; 82 34 12
STA $12,s       ; 83 12
STY $12         ; 84 12
STA $12         ; 85 12
STX $12         ; 86 12
STA [$12]       ; 87 12
DEY             ; 88
BIT #$12        ; 89 12
BIT #$1234      ; 89 34 12
TXA             ; 8a
PHB             ; 8b
STY $1234       ; 8c 34 12
STA $1234       ; 8d 34 12
STX $1234       ; 8e 34 12
STA $123456     ; 8f 56 34 12
BCC $12         ; 90 12
STA ($12),y     ; 91 12
STA ($12)       ; 92 12
STA ($12,s),y   ; 93 12
STY $12,x       ; 94 12
STA $12,x       ; 95 12
STX $12,y       ; 96 12
STA [$12],y     ; 97 12
TYA             ; 98
STA $1234,y     ; 99 34 12
TXS             ; 9a
TXY             ; 9b
STZ $1234       ; 9c 34 12
STA $1234,x     ; 9d 34 12
STZ $1234,x     ; 9e 34 12
STA $123456,x   ; 9f 56 34 12
LDY #$12        ; a0 12
LDY #$1234      ; a0 34 12
LDA ($12,x)     ; a1 12
LDX #$12        ; a2 12
LDX #$1234      ; a2 34 12
LDA $12,s       ; a3 12
LDY $12         ; a4 12
LDA $12         ; a5 12
LDX $12         ; a6 12
LDA [$12]       ; a7 12
TAY             ; a8
LDA #$12        ; a9 12
LDA #$1234      ; a9 34 12
TAX             ; aa
PLB             ; ab
LDY $1234       ; ac 34 12
LDA $1234       ; ad 34 12
LDX $1234       ; ae 34 12
LDA $123456     ; af 56 34 12
BCS $12         ; b0 12
LDA ($12),y     ; b1 12
LDA ($12)       ; b2 12
LDA ($12,s),y   ; b3 12
LDY $12,x       ; b4 12
LDA $12,x       ; b5 12
LDX $12,y       ; b6 12
LDA [$12],y     ; b7 12
CLV             ; b8
LDA $1234,y     ; b9 34 12
TSX             ; ba
TYX             ; bb
LDY $1234,x     ; bc 34 12
LDA $1234,x     ; bd 34 12
LDX $1234,y     ; be 34 12
LDA $123456,x   ; bf 56 34 12
CPY #$12        ; c0 12
CPY #$1234      ; c0 34 12
CMP ($12,x)     ; c1 12
REP #$12        ; c2 12
CMP $12,s       ; c3 12
CPY $12         ; c4 12
CMP $12         ; c5 12
DEC $12         ; c6 12
CMP [$12]       ; c7 12
INY             ; c8
CMP #$12        ; c9 12
CMP #$1234      ; c9 34 12
DEX             ; ca
WAI             ; cb
CPY $1234       ; cc 34 12
CMP $1234       ; cd 34 12
DEC $1234       ; ce 34 12
CMP $123456     ; cf 56 34 12
BNE $12         ; d0 12
CMP ($12),y     ; d1 12
CMP ($12)       ; d2 12
CMP ($12,s),y   ; d3 12
PEI ($12)       ; d4 12
CMP $12,x       ; d5 12
DEC $12,x       ; d6 12
CMP [$12],y     ; d7 12
CLD             ; d8
CMP $1234,y     ; d9 34 12
PHX             ; da
STP             ; db
JML [$1234]     ; dc 34 12
CMP $1234,x     ; dd 34 12
DEC $1234,x     ; de 34 12
CMP $123456,x   ; df 56 34 12
CPX #$12        ; e0 12
CPX #$1234      ; e0 34 12
SBC ($12,x)     ; e1 12
SEP #$12        ; e2 12
SBC $12,s       ; e3 12
CPX $12         ; e4 12
SBC $12         ; e5 12
INC $12         ; e6 12
SBC [$12]       ; e7 12
INX             ; e8
SBC #$12        ; e9 12
SBC #$1234      ; e9 34 12
NOP             ; ea
XBA             ; eb
CPX $1234       ; ec 34 12
SBC $1234       ; ed 34 12
INC $1234       ; ee 34 12
SBC $123456     ; ef 56 34 12
BEQ $12         ; f0 22
SBC ($12),y     ; f1 12
SBC ($12)       ; f2 12
SBC ($12,s),y   ; f3 12
PEA $1234       ; f4 34 12
SBC $12,x       ; f5 12
INC $12,x       ; f6 12
SBC [$12],y     ; f7 12
SED             ; f8
SBC $1234,y     ; f9 34 12
PLX             ; fa
XCE             ; fb
JSR ($1234,x)   ; fc 34 12
SBC $1234,x     ; fd 34 12
INC $1234,x     ; fe 34 12
SBC $123456,x   ; ff 56 34 12