Instructieset van de M6800

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:
00102030405060708090A0B0C0D0E0F0
rechter

vier bits

relatieve
sprong
accaaccbindextimmdirindextimmdirindext
00SBA
A=A-B
BRA
branch
TSX
IX=SP+1
NEG
M=-M
SUB
A=A-M
SUB
B=B-M
01NOPCBA
A:B
INS
SP=SP+1
CMP
A:M
CMP
B:M
02BHI
if >
PUL
pop A
SBC
A=A-M-C
SBC
B=B-M-C
03BLS
if <=
PUL
pop B
COM
M=~M
04BCC
if C=0
DES
SP=SP-1
LSR
shift right
AND
A=A and M
AND
B=B and M
05BCS
if C=1
TXS
SP=IX-1
BIT
A:M
BIT
B:M
06TAP
CC=A
TAB
B=A
BNE
if <>
PSH
push A
ROR
rotate right
LDA
A=M
LDA
B=M
07TPA
A=CC
TBA
A=B
BEQ
if Z=1
PSH
push b
ASR
shift right
STA
M=A
STA
M=B
08INX
IX=IX+1
BVC
if V=0
ASL
shift left
EOR
A=A xor M
EOR
B=B xor M
09DEX
IX=IX-1
DAABVS
if V=1
RTS
return
ROL
rotate left
ADC
A=A+M+c
ADC
B=B+M+c,
0ACLV
V=0
BPL
if >=
DEC
M=M-1
ORA
A=A or M
ORA
B=B or M
0BSEV
V=1
ABA
a=a+b
BMI
if <
RTI
ret from int
ADD
A=A+M
ADD
B=B+M
0CCLC
C=0
BGE
if >=
INC
M=M+1
CPX
IX:M
0DSEC
C=1
BLT
if <
TST
M:0
BSR
call
JSR
call
0ECLI
I=0
BGT
if >
WAITJMPLDS
SP=M
LDX
IX=M
0FSEI
I=1
BLE
if <=
SWI
interrupt
CLR
M=0
STS
M=SP
STX
M=IX