Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier.


Blockbefehle

Blockbefehle werden verwendet, wenn man eine Reihe von Speicherzellen mit aufeinander folgenden Adressen dem gleichen Vorgang unterziehen möchte. Es gibt Blockbefehle zum Laden und zum Vergleichen von Variablen. Jeden dieser Befehle gibt es auch als Variante, bei der die angestrebte Operation nur einmal auftritt, die Wiederholung also entfällt. Die Blockbefehle, die auf die I/O-Ports wirken, werden bei den I/O-Operationen besprochen.

Befehl Kurzbeschreibung Erläuterung Flags

LDI

(DE) <-- (HL),
HL <-- HL+1,
DE <-- DE+1,
BC <-- BC-1

Lädt den Inhalt der von HL adressierten Speicherzelle in die von DE adressierte Speicherzelle. Danach wird der Wert von HL und DE um eins erhöht und der Wert von BC um eins erniedrigt.

H=0

N=0

P/V=0, wenn BC=0

Alle anderen Flags bleiben unverändert

LDIR

(DE) <-- (HL),
HL <-- HL+1,
DE <-- DE+1,
BC <-- BC-1

Lädt den Inhalt der von HL adressierten Speicherzelle in die von DE adressierte Speicherzelle. Danach wird der Wert von HL und DE um eins erhöht und der Wert von BC um eins erniedrigt. Falls BC nach dem Dekrementieren ungleich null ist, wird der Vorgang wiederholt, bis BC gleich null ist. BC gibt also die Zahl der Verschiebe-Operationen an.

H=0

N=0

P/V=0

Alle anderen Flags bleiben unverändert.

LDD

(DE) <-- (HL),
HL <-- HL-1,
DE <-- DE-1,
BC <-- BC-1

Lädt den Inhalt der von HL adressierten Speicherzelle in die von DE adressierte Speicherzelle. Danach wird der Wert der Register HL, DE und BC um eins erniedrigt.

H=0

N=0

P/V=0, wenn BC=0

Alle anderen Flags bleiben unverändert.

LDDR

(DE) <-- (HL),
HL <-- HL-1,
DE <-- DE-1,
BC <-- BC-1

Lädt den Inhalt der von HL adressierten Speicherzelle in die von DE adressierte Speicherzelle. Danach wird der Wert der Register HL, DE und BC um eins erniedrigt. Falls BC nach dem Dekrementieren ungleich null ist, wird der Vorgang wiederholt, bis BC gleich null ist. BC gibt also die Zahl der Verschiebeoperationen an.

H=0

N=0

P/V=0

Alle anderen Flags bleiben unverändert.

CPI

A-(HL),
HL <-- HL+1,
BC <-- BC-1

Vergleicht den Inhalt der von HL adressierten Speicherzelle mit dem Inhalt des Akkumulators (Subtraktion A-(HL)). Danach wird der Wert von HL inkrementiert und der Wert von BC dekrementiert.

N=1

P/V=0, wenn BC = 0

S=1, wenn Ergebnis negativ

Z=1, wenn A = (HL)

H=1, wenn kein Übertrag von Bit 4, sonst H=0

CPIR

A-(HL),
HL <-- HL+1,
BC <-- BC-1

Vergleicht den Inhalt der von HL adressierten Speicherzelle mit dem Inhalt des Akkumulators. Danach wird der Wert von HL inkrementiert und der Wert von BC um eins erniedrigt. Falls BC nach dem Dekrementieren ungleich null ist, wird der Vorgang wiederholt, bis BC gleich null ist. BC gibt also die Zahl der Vergleichsoperationen an.

N=1

P/V=1, wenn BC <> 0, sonst P/V=0

S=1, wenn Ergebnis negativ

Z=1, wenn A = (HL)

H=1, wenn kein Übertrag von Bit 4, sonst H=0

CPD

A-(HL),
HL <-- HL-1,
BC <-- BC-1

Vergleicht den Inhalt der von HL adressierten Speicherzelle mit dem Inhalt des Akkumulators. Danach wird der Wert der Register HL und BC dekrementiert.

N=1

P/V=1, wenn BC <> 0, sonst P/V=0

S=1, wenn Ergebnis negativ

H=1, wenn kein Übertrag von Bit 4, sonst H=0

CPDR

A-(HL),
HL <-- HL-1,
BC <-- BC-1

Vergleicht den Inhalt der von HL adressierten Speicherzelle mit dem Inhalt des Akkumulators. Danach wird der Wert der Register HL und BC um eins erniedrigt. Falls BC nach dem Dekrementieren ungleich null ist, wird der Vorgang wiederholt, bis BC gleich null ist. BC gibt also die Zahl der Vergleichsoperationen an.

N=1

P/V=1, wenn BC <> 0, sonst P/V=0

S=1, wenn Ergebnis negativ

Z=1, wenn A = (HL)

H=1, wenn kein Übertrag von Bit 4, sonst H=0


Last Update: 2008-05-31