De M6800 van Motorola was in de jaren 70 waarschijnlijk de minst populaire 8-bits microprocessor. De Intel 8080 (en vooral de Z80) en de MOS 6502 werden veel meer toegepast.
De M6800 heeft slechts twee registers voor algemeen gebruik, accumulator A en accumulator B. Verder zijn er een 16-bits indexregister (IX), een stackpointer (SP) en een programmateller (PC). Ook het register met conditiecodes is aanwezig.
linker vier bits: |
00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
rechter vier bits |
relatieve sprong |
acca | accb | ind | ext | imm | dir | ind | ext | imm | dir | ind | ext | |||
00 | SBA A=A-B |
BRA branch |
TSX IX=SP+1 |
NEG M=-M |
SUB A=A-M |
SUB B=B-M | ||||||||||
01 | NOP | CBA A:B |
INS SP=SP+1 |
CMP A:M |
CMP B:M | |||||||||||
02 | BHI if > |
PUL pop A |
SBC A=A-M-C |
SBC B=B-M-C | ||||||||||||
03 | BLS if <= |
PUL pop B |
COM M=~M |
|||||||||||||
04 | BCC if C=0 |
DES SP=SP-1 |
LSR shift right |
AND A=A and M |
AND B=B and M | |||||||||||
05 | BCS if C=1 |
TXS SP=IX-1 |
BIT A:M |
BIT B:M | ||||||||||||
06 | TAP CC=A |
TAB B=A |
BNE if <> |
PSH push A |
ROR rotate right |
LDA A=M |
LDA B=M | |||||||||
07 | TPA A=CC |
TBA A=B |
BEQ if Z=1 |
PSH push b |
ASR shift right |
STA M=A |
STA M=B | |||||||||
08 | INX IX=IX+1 |
BVC if V=0 |
ASL shift left |
EOR A=A xor M |
EOR B=B xor M | |||||||||||
09 | DEX IX=IX-1 |
DAA | BVS if V=1 |
RTS return |
ROL rotate left |
ADC A=A+M+c |
ADC B=B+M+c, | |||||||||
0A | CLV V=0 |
BPL if >= |
DEC M=M-1 |
ORA A=A or M |
ORA B=B or M | |||||||||||
0B | SEV V=1 |
ABA a=a+b |
BMI if < |
RTI ret from int |
ADD A=A+M |
ADD B=B+M | ||||||||||
0C | CLC C=0 |
BGE if >= |
INC M=M+1 |
CPX IX:M |
||||||||||||
0D | SEC C=1 |
BLT if < |
TST M:0 |
BSR call |
JSR call |
|||||||||||
0E | CLI I=0 |
BGT if > |
WAIT | JMP | LDS SP=M |
LDX IX=M | ||||||||||
0F | SEI I=1 |
BLE if <= |
SWI interrupt |
CLR M=0 |
STS M=SP |
STX M=IX |