Opcode
Die Abkürzung Opcode (von operation code) ist eine Zahl bzw. Byte für die CPU, die einen entsprechenden Maschinensprache-Befehl einleitet. Manche Opcodes stellen bereits alleine einen Maschinenbefehl dar, andere hingegen benötigen noch weitere Operanden, um den gesamten Maschinenbefehl zu bilden.
Alle Opcodes eines Prozessors in ihrer Gesamtheit werden Befehlssatz genannt. Opcodes werden normalerweise in hexadezimaler Notation dargestellt.
Es gibt auch sogenannte illegale Opcodes, die nicht zum offiziellen, vom Prozessorhersteller deklarierten Befehlssatz gehören, die aber teilweise nützliche Effekte haben.
Beispiele der CPU MOS 6510[Bearbeiten | Quelltext bearbeiten]
Einige Opcode-Beispiele für die CPU MOS 6510:
Opcode | Operand | Mnemonic |
$aa | - | TAX |
$a9 | $00 | LDA #$00 |
$8d | $20 $d0 | STA $d020 |
Opcode-Matrix der CPU MOS 6510[Bearbeiten | Quelltext bearbeiten]
Die Opcode-Matrix für die CPU MOS 6510.
Legende:
- imm: Immediate - Unmittelbare Adressierung
- zp: Zeropage-Adressierung
- zpx: Zeropage X-indizierte Adressierung
- zpy: Zeropage Y-indizierte Adressierung
- abs: Absolute Adressierung
- abx: Absolute X-indizierte Adressierung
- aby: Absolute Y-indizierte Adressierung
- inx: Indirekte X-indizierte Zeropage-Adressierung
- iny: Indirekte Y-nachindizierte Zeropage-Adressierung
- ind: Indirekte Adressierung
- rel: Relative Adressierung
- akk: Akkumulator Adressierung
- imp: Implizite Adressierung
Illegale Opcodes sind klein und kursiv gesetzt.
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
0x | BRK imp |
ORA inx |
KIL | SLO inx |
NOP zp |
ORA zp |
ASL zp |
SLO zp |
PHP imp |
ORA imm |
ASL akk |
ANC imm |
NOP abs |
ORA abs |
ASL abs |
SLO abs |
1x | BPL rel |
ORA iny |
KIL | SLO iny |
NOP zpx |
ORA zpx |
ASL zpx |
SLO zpx |
CLC imp |
ORA aby |
NOP imp |
SLO aby |
NOP abx |
ORA abx |
ASL abx |
SLO abx |
2x | JSR abs |
AND inx |
KIL | RLA inx |
BIT zp |
AND zp |
ROL zp |
RLA zp |
PLP imp |
AND imm |
ROL akk |
ANC imm |
BIT abs |
AND abs |
ROL abs |
RLA abs |
3x | BMI rel |
AND iny |
KIL | RLA iny |
NOP zpx |
AND zpx |
ROL zpx |
RLA zpx |
SEC imp |
AND aby |
NOP imp |
RLA aby |
NOP abx |
AND abx |
ROL abx |
RLA abx |
4x | RTI imp |
EOR inx |
KIL | SRE inx |
NOP zp |
EOR zp |
LSR zp |
SRE zp |
PHA imp |
EOR imm |
LSR akk |
ALR imm |
JMP abs |
EOR abs |
LSR abs |
SRE abs |
5x | BVC rel |
EOR iny |
KIL | SRE iny |
NOP zpx |
EOR zpx |
LSR zpx |
SRE zpx |
CLI imp |
EOR aby |
NOP imp |
SRE aby |
NOP abx |
EOR abx |
LSR abx |
SRE abx |
6x | RTS imp |
ADC inx |
KIL | RRA inx |
NOP zp |
ADC zp |
ROR zp |
RRA zp |
PLA imp |
ADC imm |
ROR akk |
ARR imm |
JMP ind |
ADC abs |
ROR abs |
RRA abs |
7x | BVS rel |
ADC iny |
KIL | RRA iny |
NOP zpx |
ADC zpx |
ROR zpx |
RRA zpx |
SEI imp |
ADC aby |
NOP imp |
RRA aby |
NOP abx |
ADC abx |
ROR abx |
RRA abx |
8x | NOP imm |
STA inx |
NOP imm |
SAX inx |
STY zp |
STA zp |
STX zp |
SAX zp |
DEY imp |
NOP imm |
TXA imp |
XAA imm |
STY abs |
STA abs |
STX abs |
SAX abs |
9x | BCC rel |
STA iny |
KIL | AHX iny |
STY zpx |
STA zpx |
STX zpy |
SAX zpy |
TYA imp |
STA aby |
TXS imp |
TAS aby |
SHY abx |
STA abx |
SHX aby |
AHX aby |
Ax | LDY imm |
LDA inx |
LDX imm |
LAX inx |
LDY zp |
LDA zp |
LDX zp |
LAX zp |
TAY imp |
LDA imm |
TAX imp |
LAX imm |
LDY abs |
LDA abs |
LDX abs |
LAX abs |
Bx | BCS rel |
LDA iny |
KIL | LAX iny |
LDY zpx |
LDA zpx |
LDX zpy |
LAX zpy |
CLV imp |
LDA aby |
TSX imp |
LAS aby |
LDY abx |
LDA abx |
LDX aby |
LAX aby |
Cx | CPY imm |
CMP inx |
NOP imm |
DCP inx |
CPY zp |
CMP zp |
DEC zp |
DCP zp |
INY imp |
CMP imm |
DEX imp |
AXS imm |
CPY abs |
CMP abs |
DEC abs |
DCP abs |
Dx | BNE rel |
CMP iny |
KIL | DCP iny |
NOP zpx |
CMP zpx |
DEC zpx |
DCP zpx |
CLD imp |
CMP aby |
NOP imp |
DCP aby |
NOP abx |
CMP abx |
DEC abx |
DCP abx |
Ex | CPX imm |
SBC inx |
NOP imm |
ISC inx |
CPX zp |
SBC zp |
INC zp |
ISC zp |
INX imp |
SBC imm |
NOP imp |
SBC imm |
CPX abs |
SBC abs |
INC abs |
ISC abs |
Fx | BEQ rel |
SBC iny |
KIL | ISC iny |
NOP zpx |
SBC zpx |
INC zpx |
ISC zpx |
SED imp |
SBC aby |
NOP imp |
ISC aby |
NOP abx |
SBC abx |
INC abx |
ISC abx |
Weblinks[Bearbeiten | Quelltext bearbeiten]
- Opcode-Matrix (inkl. illegale) für 6502/6510/8500/8502 bei Oxyron.de
- Opcode-Liste (dezimal, oktal, hexadezimal, Adressierung, Länge, Zyklen)
- Illegale Opcodes (Herwig Siebenhofer)
- Opcode-Matrix HuC6280 und Opcodes der NEC PC Engine
- CSDb- Release Nr. 238036 ausführliches PDF-Dokument: Unintended Opcodes - No More Secrets v0.98 von The Solution