|
Kurze Übersicht über die Befehle
Kurze Übersicht über die Befehle des Z80
Abkürzungen:
r,r’ - Einfachregister A, B, C, D, E, H, L
dd - Doppelregister BC, DE, HL, SP
qq - Doppelregister AF, BC, DE, HL 43923ufy68kjr1q
pp - Doppelregister BC, DE, SP
n - 8-Bit-Konstante
nn - 16-Bit-Konstante, Adresse
d - Verschiebung bei Adressierung über Indexregister, im Bereich -128 £ d £ 127 fj923u3468kjjr
b - Bit, das in den Einzelbitbefehlen behandelt werden soll 0
m,M - Inhalt der 8-Bit-Speicherstelle, die durch HL adressiert wird (L enthält Bits 0-7 ; H Bits 8-15)
p - einer der Werte 00h, 08h, 10h, 18h, 20h, 28h, 30h, 38h
CY - Carry-Flag
T - Anzahl der Taktzyklen des Befehls
Bei Befehlen, die Flag-Bedingungen für Programmsprünge auswerten, sind 2 Taktzyklen angegeben. Die erste Zahl bezieht sich auf den Fall, daß der Sprung ausgeführt, die zweite dafür, daß kein Sprung ausgeführt wird und am nächsten im Speicher stehenden Befehl weitergearbeitet wird. Die Beeinflussung der Flags durch die Befehle wird hinten beschrieben.
8-Bit-Ladebefehle:
Die Ladebefehle transportieren 8-Bit-Daten intern zwischen Registern oder zwischen Registern und dem Speicher. Dabei steht im Operandenfeld als erstes der Zielspeicherplatz und danach (durch Komma getrennt) der Quellenspeicherplatz. Der Inhalt des Quellenspeicherplatzes wird bei diesen Befehlen nicht verändert.
Mnemonik |
T |
Wirkungsweise des Befehls |
SZHPNC
V |
LD r,r’ |
4 |
der Inhalt des Registers r’ wird in das Register r geladen |
------ |
LD r,n |
7 |
die 8-Bit-Konstante n wird im Register r gespeichert |
------ |
LD r,m |
7 |
der Inhalt des durch HL adressierten Speicherplatzes wird in das Register r geladen |
------ |
LD r,(IX+d)
LD r,(IY+d) |
19
19 |
der Inhalt des durch IX (oder IY) plus Verschiebung d adressierten Speicherplatzes wird in das Register r geladen |
------ |
LD m,r |
7 |
der Inhalt des Registers r wird in den durch HL adressierten Speicherplatz geladen |
------ |
LD (IX+d),r
LD (IY+d),r |
19
19 |
der Inhalt des Registers r wird in den durch IX (oder IY) plus Verschiebung d adressierten Speicherplatz geladen |
------ |
LD m,n |
10 |
die Konstante n wird in den durch HL adressierten Speicherplatz geladen |
------ |
LD (IX+d),n
LD (IY+d),n |
19
19 |
die Konstante n wird in den durch IX (oder IY) plus Verschiebung d adressierten Speicherplatz geladen |
------ |
LD A,(BC)
LD A,(DE) |
7
7 |
der Inhalt des durch BC (oder DE) adressierten Speicherplatzes wird in den Akkumulator (A-Register) geladen |
------ |
LD A,(nn) |
13 |
der Inhalt des Speicherplatzes nn wird in den Akkumulator (A-Register) geladen |
------ |
LD (BC),A
LD (DE),A |
7
7 |
der Inhalt des Akkumulators (A-Register) wird in den durch BC (oder DE) adressierten Speicherplatz geladen |
------ |
LD (nn),A |
13 |
der Inhalt des Akkumulators (A-Register) wird an die Stelle des Speicherplatzes nn geladen |
------ |
LD A,I |
9 |
der Inhalt des Interruptregisters I wird in den Akkumulator (A-Register) geladen |
**0F0- |
LD A,R |
9 |
der Inhalt des Refreshregisters R wird in den Akkumulator (A-Register) geladen |
**0F0- |
LD I,A |
9 |
der Inhalt des Akkumulators (A-Register) wird in das Interruptregister I geladen |
------ |
LD R,A |
9 |
der Inhalt des Akkumulators (A-Register) wird in das Refreshregister R geladen |
------ |
16-Bit-Ladebefehle:
Die Ladebefehle transportieren 16-Bit-Daten intern zwischen Registern oder zwischen Registern und dem Speicher. Dabei steht im Operandenfeld als erstes der Zielspeicherplatz und danach (durch Komma getrennt) der Quellenspeicherplatz. Der Inhalt des Quellenspeicherplatzes wird bei diesen Befehlen nicht verändert. Spezielle 16-Bit-befehle sind die PUSH- und POP-Befehle. Mit ihnen werden 16-Bit-Daten aus Doppelregistern in den Kellerspeicher (Stack) gebracht bzw. zurück in die Doppelregister geholt.
Alle 16-Bit-Daten werden grundsätzlich in der Intel-Order (niederwertiges Byte zuerst) gespeichert.
Mnemonik |
T |
Wirkungsweise des Befehls |
SZHPNC
V |
LD dd,nn |
10 |
die Konstante nn wird in das Doppelregister geladen |
------ |
LD IX,nn
LD IY,nn |
14
14 |
die Konstante nn wird in das Indexregister IX (oder IY) geladen |
------ |
LD HL,(nn) |
16 |
der Inhalt der Speicherplätze nn und nn+1 wird in das Doppelregister HL geladen (nnàL, nn+1àH) |
------ |
LD pp,(nn) |
20 |
der Inhalt der Speicherplätze nn und nn+1 wird in das Doppelregister pp geladen (nnàniederwertig, nn+1àhöherw.) |
------ |
LD IX,(nn)
LD IY,(nn) |
20
20 |
der Inhalt der Speicherplätze nn und nn+1 wird in das Doppelregister IX (oder IY) geladen (nnàX (oder Y), nn+1àI) |
------ |
LD (nn),HL |
16 |
der Inhalt des Doppelregisters HL wird an die Adressen nn und nn+1 geladen (Lànn, Hànn+1) |
------ |
LD (nn),pp |
20 |
der Inhalt des Doppelregisters pp wird an die Adressen nn und nn+1 geladen (niederwertigànn, höherwertigànn+1) |
------ |
LD (nn),IX
LD (nn),IY |
20
20 |
der Inhalt des Doppelregisters IX (oder IY) wird an die Adressen nn und nn+1 geladen
(X (oder Y)ànn, Iànn+1) |
------ |
LD SP,HL |
6 |
der Inhalt des Doppelregisters HL wird im Stackpointer SP gespeichert |
------ |
LD SP,IX
LD SP,IY |
10
10 |
der Inhalt des Doppelregisters IX (oder IY) wird im Stackpointer SP gespeichert |
------ |
PUSH qq |
11 |
der Inhalt des Doppelregisters qq wird im Stack gespeichert DEC SP; LD (SP),H; DEC SP; LD (SP),L |
------ |
PUSH IX
PUSH IY |
15
15 |
der Inhalt des Doppelregisters IX (oder IY) wird im Stack gespeichert DEC SP; LD (SP),I; DEC SP; LD (SP),X |
------ |
POP qq |
10 |
der letzte Wert im Stack wird in das Doppelregister qq geladen LD L,(SP); INC SP; LD H,(SP); INC SP |
------ |
POP IX
POP IY |
14
14 |
der letzte Wert im Stack wird in das Doppelregister IX (oder IY) geladen LD X,(SP); INC SP; LD I,(SP); INC SP |
------ |
8-Bit-Arithmetik und Logikbefehle
Diese Befehle arbeiten mit Daten, die sich im Akkumulator (Register A als ersten Operanden) und mit Daten in anderen Registern oder auf Speicherplätzen (als zweiten Operanden) befinden. Das Ergebnis dieser Operantionen wird im Akkumulator (A-Register) abgelegt.
Mnemonik |
T |
Wirkungsweise des Befehls |
SZHPNC
V |
ADD r |
4 |
der Inhalt des Registers r wird zum Akkumulatorinhalt addiert |
***V0* |
ADD m |
7 |
der Inhalt des durch das Register HL adressierten Speicherplatzes m wird zum Akkumulatorinhalt addiert |
***V0* |
ADD n |
7 |
die Konstante n wird zum Akkumulatorinhalt addiert |
***V0* |
ADD (IX+d)
ADD (IY+d) |
19
19 |
der Inhalt des durch das Register IX (oder IY) plus Verschiebung adressierten Speicherplatzes wird zum Akkumulatorinhalt addiert |
***V0* |
ADC r |
4 |
der Inhalt des Registers r plus Carry-Flag wird zum Akkumulatorinhalt addiert |
***V0* |
ADC m |
7 |
der Inhalt des durch HL adressierten Speicherplatzes m plus Carry-Flag wird zum Akkumulatorinhalt addiert |
***V0* |
ADC n |
7 |
die Konstante n plus Carry-Flag wird zum Akkumulatorinhalt addiert |
***V0* |
ADC (IX+d)
ADC (IY+d) |
19
19 |
der Inhalt des durch das Register IX (oder IY) plus Verschiebung plus Carry-Flag adressierten Speicherplatzes wird zum Akkumulatorinhalt addiert |
***V0* |
SUB r |
4 |
der Inhalt des Registers r wird vom Akkumulatorinhalt subtrahiert |
***V1* |
SUB m |
7 |
der Inhalt des durch das Register HL adressierten Speicherplatzes m wird vom Akkumulatorinhalt subtrahiert |
***V1* |
SUB n |
7 |
die Konstante n wird vom Akkumulatorinhalt subtrahiert |
***V1* |
SUB (IX+d)
SUB (IY+d) |
19
19 |
der Inhalt des durch das Register IX (oder IY) plus Verschiebung adressierten Speicherplatzes wird vom Akkumulatorinhalt subtrahiert |
***V1* |
SBC r |
4 |
der Inhalt des Registers r plus Carry-Flag wird vom Akkumulatorinhalt subtrahiert |
***V1* |
SBC m |
7 |
der Inhalt des durch HL adressierten Speicherplatzes m plus Carry-Flag wird vom Akkumulatorinhalt subtrahiert |
***V1* |
SBC n |
7 |
die Konstante n plus Carry-Flag wird vom Akkumulatorinhalt subtrahiert |
***V1* |
SBC (IX+d)
SBC (IY+d) |
19
19 |
der Inhalt des durch das Register IX (oder IY) plus Verschiebung plus Carry-Flag adressierten Speicherplatzes wird vom Akkumulatorinhalt subtrahiert |
***V1* |
AND r
AND m
AND n
AND (IX+d)
AND (IY+d) |
4
7
7
19
19 |
logische UND-Verknüpfung mit dem Inhalt eines Registers, Speicherbytes oder Konstanten und dem Akkumulatorinhalt
es wird bitweise konjunktiv verknüpft (nur dann 1, wenn beide Bits 1 sind) |
**1P00
**1P00
**1P00
**1P00
**1P00 |
OR r
OR m
OR n
OR (IX+d)
OR (IY+d) |
4
7
7
19
19 |
logische ODER-Verknüpfung mit dem Inhalt eines Registers, Speicherbytes oder Konstanten und dem Akkumulatorinhalt
es wird bitweise disjunktiv verknüpft (nur dann 0, wenn beide Bits 0 sind) |
**0P00
**0P00
**0P00
**0P00
**0P00 |
| | |
|