----------------------------------------------------------------
| |
| |
| Motorola |
| |
| 666 88888 000 000 |
| 6 8 8 0 0 0 0 |
| 6 8 8 0 0 0 0 0 0 |
| 666666 88888 0 0 0 0 0 0 |
| 6 6 8 8 0 0 0 0 0 0 |
| 6 6 8 8 0 0 0 0 |
| 66666 88888 000 000 |
| |
| 6800 MICROPROCESSOR Instruction Set Summary |
| |
| |
| |
| |
| |
| _________ _________ |
| _| \__/ |_ _____ |
| Vss |_|1 40|_| RESET <-- |
| ____ _| |_ |
| --> HALT |_|2 39|_| TSC <-- |
| _| |_ |
| --> PHI1 |_|3 38|_| NC |
| ___ _| |_ |
| --> IRQ |_|4 37|_| PHI2 <-- |
| _| |_ |
| <-- VMA |_|5 36|_| DBE <-- |
| ___ _| |_ |
| --> NMI |_|6 35|_| NC |
| _| |_ _ |
| <-- BA |_|7 34|_| R/W --> |
| _| |_ |
| Vcc |_|8 33|_| D0 <--> |
| _| |_ |
| <-- A0 |_|9 32|_| D1 <--> |
| _| |_ |
| <-- A1 |_|10 6800 31|_| D2 <--> |
| _| |_ |
| <-- A2 |_|11 30|_| D3 <--> |
| _| |_ |
| <-- A3 |_|12 29|_| D4 <--> |
| _| |_ |
| <-- A4 |_|13 28|_| D5 <--> |
| _| |_ |
| <-- A5 |_|14 27|_| D6 <--> |
| _| |_ |
| <-- A6 |_|15 26|_| D7 <--> |
| _| |_ |
| <-- A7 |_|16 25|_| A15 --> |
| _| |_ |
| <-- A8 |_|17 24|_| A14 --> |
| _| |_ |
| <-- A9 |_|18 23|_| A13 --> |
| _| |_ |
| <-- A10 |_|19 22|_| A12 --> |
| _| |_ |
| <-- A11 |_|20 21|_| Vss |
| |______________________| |
| |
| |
| |
| |
| |
| |
|Written by Jonathan Bowen |
| Programming Research Group |
| Oxford University Computing Laboratory |
| 8-11 Keble Road |
| Oxford OX1 3QD |
| England |
| |
| Tel +44-865-273840 |
| |
|Created August 1981 |
|Updated April 1985 |
|Issue 1.4 Copyright (C) J.P.Bowen 1985|
----------------------------------------------------------------
----------------------------------------------------------------
|Mnem. |Op|HINZVC|IEXD#R|~|Description |Notes |
|------+--+------+------+-+-----------------------+------------|
|ABA |1B|*-****|X |2|Add accumulators |A=A+B |
|ADCA s|B9|*-****| XXXX |4|Add with Carry |A=A+s+C |
|ADCB s|F9|*-****| XXXX |4|Add with Carry |B=B+s+C |
|ADDA s|BB|*-****| XXXX |4|Add |A=A+s |
|ADDB s|FB|*-****| XXXX |4|Add |B=B+s |
|ANDA s|B4|--**0-| XXXX |4|Logical AND |A=A&s |
|ANDB s|F4|--**0-| XXXX |4|Logical AND |B=B&s |
|ASL d|78|--****| XX |6|Arithmetic Shift Left |d=d*2 |
|ASLA |48|--****|X |2|Arithmetic Shift Left |A=A*2 |
|ASLB |58|--****|X |2|Arithmetic Shift Left |B=B*2 |
|ASR d|77|--****| XX |6|Arithmetic Shift Right |d=d/2 |
|ASRA |47|--****|X |2|Arithmetic Shift Right |A=A/2 |
|ASRB |57|--****|X |2|Arithmetic Shift Right |B=B/2 |
|BCC a|24|------| X|4|Branch if Carry Clear |If C=0 |
|BCS a|25|------| X|4|Branch if Carry Set |If C=1 |
|BEQ a|27|------| X|4|Branch if Equal |If Z=1 |
|BGE a|2C|------| X|4|Branch if Greater or Eq|If NxV=0 |
|BGT a|2E|------| X|4|Branch if Greater Than |If Zv{NxV}=0|
|BHI a|22|------| X|4|Branch if Higher |If CvZ=0 |
|BITA s|B5|--**0-| XXXX |4|Bit Test |A&s |
|BITB s|F5|--**0-| XXXX |4|Bit Test |B&s |
|BLE a|2F|------| X|4|Branch if Less or Equal|If Zv{NxV}=0|
|BLS a|23|------| X|4|Branch if Lower or Same|If CvZ=1 |
|BLT a|2D|------| X|4|Branch if Less Than |If NxV=1 |
|BMI a|2B|------| X|4|Branch if Minus |If N=1 |
|BNE a|26|------| X|4|Branch if Not Equal |If Z=0 |
|BPL a|2A|------| X|4|Branch if Plus |If N=0 |
|BRA a|20|------| X|4|Branch Always |PC=a |
|BSR a|8D|------| X|8|Branch to Subroutine |-[S]=PC,PC,a|
|BVC a|28|------| X|4|Branch if Overflow Clr |If V=0 |
|BVS a|29|------| X|4|Branch if Overflow Set |If V=1 |
|CBA |11|--****|X |2|Compare accumulators |A-B |
|CLC |0C|-----0|X |2|Clear Carry |C=0 |
|CLI |0E|-0----|X |2|Clear Interrupt Mask |I=0 |
|CLR d|7F|--0100| XX |6|Clear |d=0 |
|CLRA |4F|--0100|X |2|Clear accumulator |A=0 |
|CLRB |5F|--0100|X |2|Clear accumulator |B=0 |
|CLV |0A|----0-|X |2|Clear Overflow |V=0 |
|CMPA s|B1|--****| XXXX |4|Compare |A-s |
|CMPB s|F1|--****| XXXX |4|Compare |B-s |
|COM d|63|--**01| XX |7|Complement |d=~d |
|COMA |43|--**01|X |2|Complement accumulator |A=~A |
|COMB |53|--**01|X |2|Complement accumulator |B=~B |
|CPX s|BC|--****| XXX* |5|Compare Index Register |X-s |
|DAA |19|--****|X |2|Decimal Adjust Acc. |A=BCD format|
|DEC d|7A|--**?-| XX |6|Decrement |d=d-1 |
|DECA |4A|--**?-|X |2|Decrement accumulator |A=A-1 |
|DECB |5A|--**?-|X |2|Decrement accumulator |B=B-1 |
|DES |34|------|X |4|Decrement Stack Pointer|S=S-1 |
|DEX |09|---*--|X |4|Decrement Index Reg. |X=X-1 |
|EORA s|B8|--**0-| XXXX |4|Logical Exclusive OR |A=Axs |
|EORB s|F8|--**0-| XXXX |4|Logical Exclusive OR |B=Bxs |
|INC d|7C|--**?-| XX |6|Increment |d=d+1 |
|INCA |4C|--**?-|X |2|Increment accumulator |A=A+1 |
|INCB |5C|--**?-|X |2|Increment accumulator |B=B+1 |
|INS |31|------|X |4|Increment Stack Pointer|S=S+1 |
|INX |08|---*--|X |4|Increment Index Reg. |X=X+1 |
|JMP d|7E|------| XX |3|Jump |PC=d |
|JSR d|BD|------| XX |9|Jump to Subroutine |-[S]=PC,PC=d|
|LDAA s|B6|--**0-| XXXX |4|Load Accumulator |A=s |
|LDAB s|F6|--**0-| XXXX |4|Load Accumulator |B=s |
|LDS s|BE|--**0-| XXX* |5|Load Stack Pointer |S=s |
|LDX s|FE|--**0-| XXX* |5|Load Index Register |X=s |
|LSR d|74|--0***| XX |6|Logical Shift Right |d=->{0,d,C} |
|LSRA |44|--0***|X |2|Logical Shift Right |A=->{0,A,C} |
|LSRB |54|--0***|X |2|Logical Shift Right |B=->{0,B,C} |
|NEG d|70|--****| XX |6|Negate |d=-d |
|NEGA |40|--****|X |2|Negate accumulator |A=-A |
|NEGB |50|--****|X |2|Negate accumulator |B=-B |
|NOP |01|------|X |2|No Operation | |
|ORAA s|BA|--**0-| XXXX |4|Logical inclusive OR |A=Avs |
|ORAB s|FA|--**0-| XXXX |4|Logical inclusive OR |B=Bvs |
|PSHA |36|------|X |4|Push |-[S]=A |
|PSHB |37|------|X |4|Push |-[S]=B |
|PULA |32|------|X |4|Pull |A=[S]+ |
|PULB |33|------|X |4|Pull |B=[S]+ |
----------------------------------------------------------------
----------------------------------------------------------------
|Mnem. |Op|HINZVC|IEXD#R|~|Description |Notes |
|------+--+------+------+-+-----------------------+------------|
|ROL d|79|--**?*| XX |6|Rotate Left |d={C,d}<- |
|ROLA |49|--**?*|X |2|Rotate Left accumulator|A={C,A}<- |
|ROLB |59|--**?*|X |2|Rotate Left accumulator|B={C,B}<- |
|ROR d|76|--**?*| XX |6|Rotate Right |d=->{C,d} |
|RORA |46|--**?*|X |2|Rotate Right acc. |A=->{C,A} |
|RORB |56|--**?*|X |2|Rotate Right acc. |B=->{C,B} |
|RTI |3B|??????|X |A|Return from Interrupt |{regs}=[S]+ |
|RTS |39|------|X |5|Return from Subroutine |PC=[S]+ |
|SBA |10|--****|X |2|Subtract accumulators |A=A-B |
|SBCA s|B2|--****| XXXX |4|Subtract with Carry |A=A-s-C |
|SBCB s|F2|--****| XXXX |4|Subtract with Carry |B=B-s-C |
|SEC |0D|-----1|X |2|Set Carry |C=1 |
|SEI |0F|-1----|X |2|Set Interrupt Mask |I=1 |
|SEV |0B|----1-|X |2|Set Overflow |V=1 |
|STAA d|B7|--**0-| XXX |5|Store Accumulator |d=A |
|STAB d|F7|--**0-| XXX |5|Store Accumulator |d=B |
|STS d|BF|--**0-| XXX |6|Store Stack Pointer |d=S |
|STX d|FF|--**0-| XXX |6|Store Index Register |d=X |
|SUBA s|B0|--****| XXXX |4|Subtract |A=A-s |
|SUBB s|F0|--****| XXXX |4|Subtract |B=B-s |
|SWI |3F|-1----|X |C|Software Interrupt |-[S]={regs} |
|TAB |17|--**0-|X |2|Transfer accumulators |B=A |
|TAP |06|******|X |2|Transfer to CCR |P=A |
|TBA |17|--**0-|X |2|Transfer accumulators |A=B |
|TPA |07|------|X |2|Transfer from CCR |A=P |
|TST s|7D|--**00| XX |6|Test |s |
|TSTA |4D|--**00|X |2|Test accumulator |A |
|TSTB |5D|--**00|X |2|Test accumulator |B |
|TSX |30|------|X |4|Transfer Stack Pointer |X=S |
|TXS |35|------|X |4|Transfer Index Register|S=X |
|WAI |3E|-*----|X |9|Wait for Interrupt |-[S]={regs} |
|---------+------+------+-+------------------------------------|
| CCR |-*01? | | |Unaffect/affected/reset/set/unknown |
| H |H | | |Half carry (Bit 5) |
| I | I | | |Interrupt mask (Bit 4) |
| N | N | | |Negative (Bit 3) |
| Z | Z | | |Zero (Bit 2) |
| V | V | | |Overflow (Bit 1) |
| C | C| | |Carry (Bit 0) |
|----------------+------+-+------------------------------------|
| |I | |Inherent |
| nn,E | E | |Extended (Op=E, ~s=e) |
| nn,X | X | |Index (Op=E-10H, ~s=e+1, JSR ~s=e-1)|
| n,D | D | |Direct (Op=E-20H, ~s=e-1) |
| #n | # | |Immediate (8-bit, Op=E-30H, ~s=e-2) |
| #nn | * | |Immediate (16-bit, Op=E-30H, ~s=e-2)|
| a | R| |Relative (PC=PC+2+offset) |
|-------------------------+------------------------------------|
|DIRECT |Direct addressing mode |
|EXTEND |Extended addressing mode |
|FCB n |Form Constant Byte |
|FCC 'string' |Form Constant Characters |
|FDB nn |Form Double Byte |
|RMB nn |Reserve Memory Bytes |
|-------------------------+------------------------------------|
| A B |Accumulators (8-bit) |
| P |Condition Code Register (CCR, 8-bit)|
| PC |Program Counter (16-bit) |
| S |Stack Pointer (16-bit) |
| X |Index Register (16-bit) |
|-------------------------+------------------------------------|
| a |Relative address (-125 to +129) |
| d s |Destination/source |
| n nn |8/16-bit expression (0 to 255/65535)|
| + - * / |Add/subtract/multiply/divide |
| & ~ v x |AND/NOT/inclusive OR/exclusive OR |
| <- -> |Rotate left/right |
| [ ] |Indirect addressing |
| [ ]+ -[ ] |Indirect auto-increment/decrement |
| { } |Combination of operands |
| {regs} |All registers {PC,X,A,B,P} |
|-------------------------+------------------------------------|
| FFF8H to FFF9H |Hardware interrupt vector |
| FFFAH to FFFBH |SWI instruction interrupt vector |
| FFFCH to FFFDH |Non-maskable interrupt vector |
| FFFEH to FFFFH |Reset vector |
----------------------------------------------------------------
|