Das Schneider CPC Systembuch

Anhang

Die Z80

Befehls-Codes der Z80-Befehle nach Opcode-Gruppen

Es sind nur die Befehle aufgeführt, die sich von ihrem Code her in Gruppen zusammenfassen lassen. Die Codes der fehlenden Befehle können aus der vorhergehenden Tabelle entnommen werden.

Die Opcodes werden nur mit den Datentypen: Bytes
Datenbreite: Bytes
Bytes
angegeben, die den Befehl klassifizieren. Das oder die Datentypen: Bytes
Datenbreite: Bytes
Bytes
für eventuell nötige Operanden werden nicht explizit angegeben.

Die Fließkomma-Routinen: OperationenOperationen, die das IX und IY-Register anstelle von HL benutzen, sind auch nicht aufgeführt, da sie sich von den HL-Befehlen nur durch den Prefix #DD bzw. #FD unterscheiden. Doppelregisterbefehle, wie LD_HL,nnnn, bekommen einfach den Prefix davorgesetzt:

DEFB #DD      ' Prefix IX
DEFB #21      ' Opcode: LD HL,nnnn
DEFW adresse

Byte-Indirekt-HL-Operationen arbeiten dann indirekt zu IX bzw. IY mit einem Distanz-Byte. Beispielsweise LD LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
,(IX+dis):

DEFB #DD      ' Prefix IX
DEFB #46      ' Opcode: LD LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
,(HL) DEFB dis ' Distanz (Offset)

oder: LD (IX+dis),zahl

DEFB #DD      ' Prefix IX
DEFB #36      ' Opcode: LD (HL),nn
DEFB dis      ' Distanz (Offset)
DEFB zahl     ' Argument
Befehlsgruppe  !  Opcode (binär)  !  Bemerkung
---------------+-------------------+-------------------------------------------
Byte-Befehle   !                   !
---------------+-------------------+-------------------------------------------
LD r,r'        ! 01.r..r'          ! r und r' : 000 -> LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
LD r,n ! 00.r.110 ! 001 -> C ADD Operationen: BD5B / 349A / 349A: FLO SUBA,r ! 10000.r. ! 010 -> D ADC Operationen: BD5B / 349A / 349A: FLO SUBA,r ! 10001.r. ! 011 -> LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
SUB r ! 10010.r. ! 100 -> H SBC Operationen: BD5B / 349A / 349A: FLO SUBA,r ! 10011.r. ! 101 -> L AND r ! 10100.r. ! 110 -> (HL) XOR r ! 10101.r. ! 111 -> Operationen: BD5B / 349A / 349A: FLO SUBA OR r ! 10110.r. ! CP r ! 10111.r. ! Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
: 000 -> 0 INC r ! 00.r.100 ! 001 -> 1 DEC r ! 00.r.101 ! 010 -> 2 RLC r ! 11001011 00000.r. ! 011 -> 3 RRC r ! 11001011 00001.r. ! 100 -> 4 RL r ! 11001011 00010.r. ! 101 -> 5 RR r ! 11001011 00011.r. ! 110 -> 6 SLA r ! 11001011 00100.r. ! 111 -> 7 SRA r ! 11001011 00101.r. ! SLL r ! 11001011 00110.r. ! SRL r ! 11001011 00111.r. ! Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
BIT
LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
,r ! 11001011 01.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
..r. ! RES LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
,r ! 11001011 10.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
..r. ! SET LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
,r ! 11001011 11.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
..r. ! IN r,(c) ! 11101101 01.r.000 ! OUT (c),r ! 11101101 01.r.001 ! ---------------+-------------------+------------------------------------------- 2-Byte-Befehle ! ! ---------------+-------------------+------------------------------------------- LD rr,nn ! 00rr0001 ! rr : 00 -> BC LD rr,(nn) ! 11101101 01rr1011 ! 01 -> DE LD (nn),rr ! 11101101 01rr0011 ! 10 -> HL ADD HL,rr ! 00rr1001 ! 11 -> SP ADC HL,rr ! 11101101 01rr1010 ! SBC HL,rr ! 11101101 01rr0010 ! INC rr ! 00rr0011 ! DEC rr ! 00rr1011 ! PUSH rr ! 11rr0101 ! rr : 00 -> BC 01 -> DE POP rr ! 11rr0001 ! 10 -> HL 11 -> AF ---------------+-------------------+------------------------------------------- Verzweigungen ! ! ---------------+-------------------+------------------------------------------- JP c,nn ! 11.c.010 ! c : 000 -> NZ 001 -> Z Maschinencode über HIMEM: CALLCALL c,nn ! 11.c.100 ! (Bedingg.) 010 -> NC 011 -> C RET c ! 11.c.000 ! 100 -> PO 101 -> PE ! ! 110 -> P 111 -> M ---------------+-------------------+------------------------------------------- JR cc,dis ! 001cc000 ! cc : 00 -> NZ 01 -> Z ! ! 10 -> NC 11 -> C ---------------+-------------------+------------------------------------------- Speicheraufteilung durch ein Vordergrund-Programm: RST 3
LOW KERNEL JUMPBLOCK: 0000 - RST 0: LOW RESET ENTRY
LOW KERNEL JUMPBLOCK: 0008 - RST 1: LOW LOW JUMP
LOW KERNEL JUMPBLOCK: 0010 - RST 2: LOW SIDE CALL
LOW KERNEL JUMPBLOCK: 0018 - RST 3: LOW FAR CALL
LOW KERNEL JUMPBLOCK: 0020 - RST 4: LOW RAM LAM
LOW KERNEL JUMPBLOCK: 0028 - RST 5: LOW FIRM JUMP
LOW KERNEL JUMPBLOCK: 0030 - RST 6: LOW USER RESTART
LOW KERNEL JUMPBLOCK: 0038 - RST 7: LOW INTERRUPT ENTRY
RST
n*8 ! 11.n.111 ! 0...n...7 => 0...n*8...56 ---------------+-------------------+-------------------------------------------

Valid HTML   Valid CSS