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: | 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 |