Each cell is the mnemonic of the opcode whose high nibble is the row and low nibble the column. An opcode marked with * exists only on the Hitachi HD6309; on the MC6809 it is undefined.
A · is undefined on both. Operands follow the row: rows 0, 9 and D of the first page are direct, 6, A and E indexed, 7, B and F extended, 8 and C immediate; the other rows are described on the
instructions page. Opcodes $10 and $11 are the prefixes of the other two pages.
Page 1: no prefix
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | neg | oim* | aim* | com | lsr | eim* | ror | asr | asl | rol | dec | tim* | inc | tst | jmp | clr |
| 1x | $10 | $11 | nop | sync | sexw* | · | lbra | lbsr | · | daa | orcc | · | andcc | sex | exg | tfr |
| 2x | bra | brn | bhi | bls | bcc | bcs | bne | beq | bvc | bvs | bpl | bmi | bge | blt | bgt | ble |
| 3x | leax | leay | leas | leau | pshs | puls | pshu | pulu | · | rts | abx | rti | cwai | mul | · | swi |
| 4x | nega | · | · | coma | lsra | · | rora | asra | asla | rola | deca | · | inca | tsta | · | clra |
| 5x | negb | · | · | comb | lsrb | · | rorb | asrb | aslb | rolb | decb | · | incb | tstb | · | clrb |
| 6x | neg | oim* | aim* | com | lsr | eim* | ror | asr | asl | rol | dec | tim* | inc | tst | jmp | clr |
| 7x | neg | oim* | aim* | com | lsr | eim* | ror | asr | asl | rol | dec | tim* | inc | tst | jmp | clr |
| 8x | suba | cmpa | sbca | subd | anda | bita | lda | · | eora | adca | ora | adda | cmpx | bsr | ldx | · |
| 9x | suba | cmpa | sbca | subd | anda | bita | lda | sta | eora | adca | ora | adda | cmpx | jsr | ldx | stx |
| Ax | suba | cmpa | sbca | subd | anda | bita | lda | sta | eora | adca | ora | adda | cmpx | jsr | ldx | stx |
| Bx | suba | cmpa | sbca | subd | anda | bita | lda | sta | eora | adca | ora | adda | cmpx | jsr | ldx | stx |
| Cx | subb | cmpb | sbcb | addd | andb | bitb | ldb | · | eorb | adcb | orb | addb | ldd | ldq* | ldu | · |
| Dx | subb | cmpb | sbcb | addd | andb | bitb | ldb | stb | eorb | adcb | orb | addb | ldd | std | ldu | stu |
| Ex | subb | cmpb | sbcb | addd | andb | bitb | ldb | stb | eorb | adcb | orb | addb | ldd | std | ldu | stu |
| Fx | subb | cmpb | sbcb | addd | andb | bitb | ldb | stb | eorb | adcb | orb | addb | ldd | std | ldu | stu |
Undefined on the MC6809: 01 02 05 0B 14 15 18 1B 38 3E 41 42 45 4B 4E 51 52 55 5B 5E 61 62 65 6B 71 72 75 7B 87 8F C7 CD CF (33 opcodes; the two prefixes are not counted). The HD6309 defines the ones marked *. Counting every slot of the three pages that holds no instruction on the HD6309, 332 are empty; two of them are the prefixes
themselves, so 330 opcodes trap.
Page 2: prefix $10
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2x | · | lbrn | lbhi | lbls | lbcc | lbcs | lbne | lbeq | lbvc | lbvs | lbpl | lbmi | lbge | lblt | lbgt | lble |
| 3x | addr* | adcr* | subr* | sbcr* | andr* | orr* | eorr* | cmpr* | pshsw* | pulsw* | pshuw* | puluw* | · | · | · | swi2 |
| 4x | negd* | · | · | comd* | lsrd* | · | rord* | asrd* | asld* | rold* | decd* | · | incd* | tstd* | · | clrd* |
| 5x | · | · | · | comw* | lsrw* | · | rorw* | · | · | rolw* | decw* | · | incw* | tstw* | · | clrw* |
| 8x | subw* | cmpw* | sbcd* | cmpd | andd* | bitd* | ldw* | · | eord* | adcd* | ord* | addw* | cmpy | · | ldy | · |
| 9x | subw* | cmpw* | sbcd* | cmpd | andd* | bitd* | ldw* | stw* | eord* | adcd* | ord* | addw* | cmpy | · | ldy | sty |
| Ax | subw* | cmpw* | sbcd* | cmpd | andd* | bitd* | ldw* | stw* | eord* | adcd* | ord* | addw* | cmpy | · | ldy | sty |
| Bx | subw* | cmpw* | sbcd* | cmpd | andd* | bitd* | ldw* | stw* | eord* | adcd* | ord* | addw* | cmpy | · | ldy | sty |
| Cx | · | · | · | · | · | · | · | · | · | · | · | · | · | · | lds | · |
| Dx | · | · | · | · | · | · | · | · | · | · | · | · | ldq* | stq* | lds | sts |
| Ex | · | · | · | · | · | · | · | · | · | · | · | · | ldq* | stq* | lds | sts |
| Fx | · | · | · | · | · | · | · | · | · | · | · | · | ldq* | stq* | lds | sts |
The rows that are not shown (0, 1, 6, 7) hold only undefined opcodes. In row 8 the operand is immediate (16 bits: $1080 and the other immediates); row 9 direct, A indexed, B extended; in rows C to F, lds and
ldq follow the same pattern ($10CE is the immediate LDS; there is no immediate STS or LDQ here, LDQ # is the single opcode $CD).
Page 3: prefix $11
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3x | band* | biand* | bor* | bior* | beor* | bieor* | ldbt* | stbt* | tfm r+,r+* | tfm r-,r-* | tfm r+,r* | tfm r,r+* | bitmd* | ldmd* | · | swi3 |
| 4x | · | · | · | come* | · | · | · | · | · | · | dece* | · | ince* | tste* | · | clre* |
| 5x | · | · | · | comf* | · | · | · | · | · | · | decf* | · | incf* | tstf* | · | clrf* |
| 8x | sube* | cmpe* | · | cmpu | · | · | lde* | · | · | · | · | adde* | cmps | divd* | divq* | muld* |
| 9x | sube* | cmpe* | · | cmpu | · | · | lde* | ste* | · | · | · | adde* | cmps | divd* | divq* | muld* |
| Ax | sube* | cmpe* | · | cmpu | · | · | lde* | ste* | · | · | · | adde* | cmps | divd* | divq* | muld* |
| Bx | sube* | cmpe* | · | cmpu | · | · | lde* | ste* | · | · | · | adde* | cmps | divd* | divq* | muld* |
| Cx | subf* | cmpf* | · | · | · | · | ldf* | · | · | · | · | addf* | · | · | · | · |
| Dx | subf* | cmpf* | · | · | · | · | ldf* | stf* | · | · | · | addf* | · | · | · | · |
| Ex | subf* | cmpf* | · | · | · | · | ldf* | stf* | · | · | · | addf* | · | · | · | · |
| Fx | subf* | cmpf* | · | · | · | · | ldf* | stf* | · | · | · | addf* | · | · | · | · |
The rows 0, 1, 2, 6, 7 and the rows not listed are undefined. $113F is SWI3; $1183 and $118C (CMPU, CMPS) are the only MC6809 opcodes of the page besides it.
Not described
- What an MC6809 does with the undefined opcodes; the cycle counts (see Instructions).