Das Schneider CPC Systembuch

Anhang

Die Z80

Befehlssatz der Z80 sortiert nach Funktionen

Benutzte Abkürzungen:

 dis = Adress-Distanz:                   -128 .... +127
   n = Byte-Konstante: 0 .... +255 oder  -128 .... +127
  nn = Word-Konstante: 0 .. +65535 oder -32768 .. +32767
   r = Die Tonausgabe: Das Kontrollregister  (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
: Erklärung der Anschlussbelegung: A, B, CA,B,C,D,LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
,H,L s = Byte-Quelle: Erklärung der Anschlussbelegung: A, B, CA,B,C,D,LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
,H,L,(HL),(IX+dis),(IY+dis),n d = Byte-Ziel: Erklärung der Anschlussbelegung: A, B, CA,B,C,D,LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
,H,L,(HL),(IX+dis),(IY+dis) LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
= Bit-Nummer: 0 ... 7
8-Bit-Ladebefehle
LD   r,s
LD   d,r
LD   d,n
LD   Operationen: BD5B / 349A / 349A:  FLO SUBA,q              q=s,(BC),(DE),(nn),I,R
LD   z,Operationen: BD5B / 349A / 349A:  FLO SUBA              z=d,(BC),(DE),(nn),I,R
16-Bit-Ladebefehle
LD   rr,(nn)          rr=   BC,DE,HL,IX,IY,SP
LD   (nn),rr          rr=   BC,DE,HL,IX,IY,SP
LD   SP,rr            rr=         HL,IX,IY
PUSH rr               rr=AF,BC,DE,HL,IX,IY
POP  rr               rr=AF,BC,DE,HL,IX,IY
16-Bit-Register-Austausch
EX   AF,Operationen: BD5B / 349A / 349A:  FLO SUBA'F'
EXX                   BC,DE,HL
EX   DE,HL
EX   (SP),rr          rr=HL,IX,IY
Blocktransport-Befehle
LDI                   LD (DE),(HL) : INC DE : INC HL : DEC BC
LDIR                  LDI bis BC=0
LDD                   LD (DE),(HL) : DEC DE : DEC HL : DEC BC
LDDR                  LDD bis BC=0
Block-Such-Befehle
CPI                   CP (HL) : INC HL : DEC BC
CPIR                  CPI bis Operationen: BD5B / 349A / 349A:  FLO SUBA=(HL) oder BC=0
CPD                   CP (HL) : DEC HL : DEC BC
CPDR                  CPD bis Operationen: BD5B / 349A / 349A:  FLO SUBA=(HL) oder BC=0
Block-I/O-Befehle

Diese sind beim Schneider CPC nicht anwendbar !

8-Bit arithmetische und logische Operationen:
SUB  s      AND  s      INC  d
SBC  s      OR   s      DEC  d
ADD  s      XOR  s
ADC  s      CP   s

CPL         LD Operationen: BD5B / 349A / 349A:  FLO SUBA,255-Operationen: BD5B / 349A / 349A:  FLO SUBA
NEG         LD Operationen: BD5B / 349A / 349A:  FLO SUBA,   -Operationen: BD5B / 349A / 349A:  FLO SUBA
16-Bit arithmetische Operationen
ADD  dd,rr            rr=BC,DE,dd,SP       dd=HL,IX,IY
ADC  HL,rr            rr=BC,DE,HL,SP
SBC  HL,rr            rr=BC,DE,HL,SP
INC  dd               dd=BC,DE,HL,IX,IY,SP
DEC  dd               dd=BC,DE,HL,IX,IY,SP
8-Bit Bit-Schiebe-Befehle
RL   s                Ringshift mit CY als 9.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
links RR s Ringshift mit CY als 9.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
rechts RLC s Ringshift links RRC s Ringshift rechts SLA s Shift links und 0 -> 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
0 SRA s Shift rechts und 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
7 belassen SLL s Shift links und 1 -> 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
0 (Die Z80: IllegalsIllegal) SRL s Shift rechts und 0 -> 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
7
8-Bit Nibble-Schiebe-Befehle
RLD  (HL)             A0123 -> (HL)0123 -> (HL)4567 -> A0123
RRD  (HL)             A0123 <- (HL)0123 <- (HL)4567 <- A0123
Bit-Befehle
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
,d Erklärung der Anschlussbelegung: TestTeste 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
in Datentypen: Bytes
Datenbreite: Bytes
Byte
d 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
,d Setze 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
auf 1 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
,d Setze 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
auf 0
Ein- und Ausgabe-Befehle
IN   Operationen: BD5B / 349A / 349A:  FLO SUBA,(n)
IN   r,(C)            de facto:  IN  r,(BC)
OUT  (n),Operationen: BD5B / 349A / 349A:  FLO SUBA
OUT  (C),r                       OUT (BC),r

Block-Ein- und -Ausgabe-Befehle sind beim Schneider CPC nicht anwendbar !

Sprung-Befehle
JP   nn
JR   dis
JP   (rr)             rr=HL,IX,IY
JP   c,nn             c=C,NC,Z,NZ,M,P,PO,PE
JR   c,dis            c=C,NC,Z,NZ
DJNZ dis              DEC LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
: JR NZ,dis
Unterprogramm-Befehle
Maschinencode über HIMEM: CALLCALL nn
Maschinencode über HIMEM: CALLCALL c,nn             c=C,NC,Z,NZ,M,P,PO,PE
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
v v=0,8,16,24,32,40,48,56 RET RET c c=C,NC,Z,NZ,M,P,PO,PE RETI Return vom Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt. RETN Return vom Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: NMI - non maskable interrupt
Besonderheiten der Z80 im Schneider CPC: Non Maskable Interrupt
NMI
. Dieser ist Garbage Collection: ... beim CPC 464beim CPC nicht so einfach zu benutzen !
Sonstige Befehle
DAA                   BCD-Korrektur einer Rechnen im Binärsystem: AdditionAddition oder Rechnen im Binärsystem: SubtraktionSubtraktion
SCF                   C-Flag setzen
CCF                   C-Flag umdrehen
EI
DI
Die verschiedenen Interrupt-Modi der Z80: IM0 - Interrupt-Modus 0IM0                   Der Schneider CPC wird im Die CPU Z80: Die verschiedenen Interrupt-Modi der Z80
Die verschiedenen Interrupt-Modi der Z80: IM0 - Interrupt-Modus 0
Die verschiedenen Interrupt-Modi der Z80: IM1 - Interrupt-Modus 1
Die verschiedenen Interrupt-Modi der Z80: IM2 - Interrupt-Modus 2
Interrupt-Modus
1 Die verschiedenen Interrupt-Modi der Z80: IM1 - Interrupt-Modus 1IM1 betrieben ! Die verschiedenen Interrupt-Modi der Z80: IM2 - Interrupt-Modus 2IM2 Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: HaltHALT Warte auf Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt NOP

Valid HTML   Valid CSS