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


Arithmetisch-Logische Befehle

Befehl Kurzbeschreibung Erläuterung Flags

ADD A,r

A <-- A + r

Der Inhalt des Registers r wird zum Inhalt des Akkumulators addiert; das Ergebnis wird im Akkumulator abgelegt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

ADD A,nn

A <-- A + nn

Die Konstante nn wird zum Register A addiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

ADD A,(HL)

A <-- A + (HL)

Der Inhalt der Speicherzelle, die durch HL adressiert wird, wird zum Register A addiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

ADD A,(IX+dd) ADD A,(IY+dd)

A <-- A + (IX+dd)
A <-- A + (IY+dd)

Der Inhalt der Speicherzelle, die durch IX+dd bzw. IY+dd adressiert wird, wird zum Register A addiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

ADC A,r

A <-- A + r + CF

Der Inhalt des Registers r wird zum Inhalt des Akkumulators unter Einbeziehung des Carry-Flags addiert; das Ergebnis wird im Akkumulator abgelegt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

ADC A,nn

A <-- A + nn + CF

Die Konstante nn wird zum Register A unter Einbeziehung des Carry-Flags addiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

ADC A,(HL)

A <-- A+(HL)+CF

Der Inhalt der Speicherzelle, die durch HL adressiert wird, wird zum Register A unter Einbeziehung des Carry-Flags addiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

ADC A,(IX+dd)
ADC A,(IY+dd)

A <-- A+(IX+dd)+CF
A <-- A+(IY+dd)+CF

Der Inhalt der Speicherzelle, die durch IX+dd bzw. IY+dd adressiert wird, wird unter Einbeziehung des Carry-Flags zum Register A addiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C=1, wenn Übertrag von Bit 7

N=0

P/V=1, wenn Überlauf, sonst P/V=0

SUB A,r

A <-- A - r

Der Inhalt des Registers r wird vom Inhalt des Akkumulators subtrahiert; das Ergebnis wird im Akkumulator abgelegt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0
H=1, wenn Übertrag von Bit 4, sonst H=0
C=1, wenn Übertrag von Bit 7
N=1
P/V=1, wenn Überlauf, sonst P/V=0

SUB A,nn

A <-- A - nn

Die Konstante nn wird vom Register A subtrahiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

SUB A,(HL)

A <-- A - (HL)

Der Inhalt der Speicherzelle, die durch HL adressiert wird, wird vom Register A subtrahiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

SUB A,(IX+dd) SUB A,(IY+dd)

A <-- A - (IX+dd)
A <-- A - (IY+dd)

Der Inhalt der Speicherzelle, die durch IX+dd bzw. IY+dd adressiert wird, wird vom Register A subtrahiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

SBC A,r

A <-- A - r - CF

Der Inhalt des Registers r wird vom Inhalt des Akkumulators unter Einbeziehung des Carry-Flags subtrahiert; das Ergebnis wird im Akkumulator abgelegt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

SBC A,nn

A <-- A - nn - CF

Die Konstante nn wird vom Register A unter Einbeziehung des Carry-Flags subtrahiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

SBC A,(HL)

A <-- A - (HL) - CF

Der Inhalt der Speicherzelle, die durch HL adressiert wird, wird vom Register A unter Einbeziehung des Carry-Flags subtrahiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

SBC A,(IX+dd)
SBC A,(IY+dd)

A <-- A-(IX+dd)–CF
A <-- A-(IY+dd)-CF

Der Inhalt der Speicherzelle, die durch IX+dd bzw. IY+dd adressiert wird, wird unter Einbeziehung des Carry-Flags vomRegister A subtrahiert; das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

AND r

A <-- A AND r

Der Inhalt des Registers r wird mit dem Inhalt des Akkumulators durch ein logisches UND bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

AND nn

A <-- A AND nn

Die Konstante nn wird mit dem Inhalt des Akkumulators durch ein logisches UND bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

AND (HL)

A <-- A AND nn

Der Inhalt der Speicherzelle, die durch Register HL adressiert wird, wird mit dem Inhalt des Akkumulators durch ein logisches UND bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

AND (IX+dd)
AND (IY+dd)

A <-- A AND (IX+dd)
A <-- A AND (IY+dd)

Der Inhalt der Speicherzelle, die durch IX+dd bzw. durch IY+dd adressiert wird, wird mit dem Inhalt des Akkumulators durch ein logisches UND bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

OR r

A <-- A OR r

Der Inhalt des Registers r wird mit dem Inhalt des Akkumulators durch ein logisches ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

OR nn

A <-- A OR nn

Die Konstante nn wird mit dem Inhalt des Akkumulators durch ein logisches ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

OR (HL)

A <-- A OR nn

Der Inhalt der Speicherzelle, die durch Register HL adressiert wird, wird mit dem Inhalt des Akkumulators durch ein logisches ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

OR (IX+dd)
OR (IY+dd)

A <-- A OR (IX+dd)
A <-- A OR (IY+dd)

Der Inhalt der Speicherzelle, die durch IX+dd bzw. durch IY+dd adressiert wird, wird mit dem Inhalt des Akkumulators durch ein logisches ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

XOR r

A <-- A XOR r

Der Inhalt des Registers r wird mit dem Inhalt des Akkumulators durch ein logisches exklusives ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

XOR nn

A <-- A XOR nn

Die Konstante nn wird mit dem Inhalt des Akkumulators durch ein logisches exklusives ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

XOR (HL)

A <-- A XOR nn

Der Inhalt der Speicherzelle, die durch Register HL adressiert wird, wird mit dem Inhalt des Akkumulators durch ein logisches exklusives ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1

C=0

N=0

P/V=1, wenn Parität gerade, sonst P/V=0

XOR (IX+dd)
XOR (IY+dd)

A <-- A XOR (IX+dd)
A <-- A XOR (IY+dd)

Der Inhalt der Speicherzelle, die durch IX+dd bzw. durch IY+dd adressiert wird, wird mit dem Inhalt des Akkumulators durch ein logisches exklusives ODER bitweise verknüpft. Das Ergebnis wird im Akkumulator abgespeichert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0
H=1
C=0
N=0
P/V=1, wenn Parität gerade, sonst P/V=0

CP r

A - r

Der Inhalt des Registers r wird mit dem Inhalt des Akkumulators verglichen. Es werden keine Register geändert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

CP nn

A - nn

Die Konstante nn wird mit dem Akkumulator verglichen. Es werden keine Register geändert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

CP (HL)

A - (HL)

Der Inhalt der Speicherzelle, die durch HL adressiert wird, wird mit Register A verglichen. Es werden keine Register geändert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

CP (IX+dd)
CP (IY+dd)

A - (IX+dd)
A - (IY+dd)

Der Inhalt der Speicherzelle, die durch IX+dd bzw. IY+dd adressiert wird, wird mit Register A verglichen. Es werden keine Register geändert.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Übertrag von Bit 7

N=1

P/V=1, wenn Überlauf, sonst P/V=0

INC r

r <-- r + 1

Der Inhalt des Registers r wird um eins erhöht.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C bleibt unverändert

N=0

P/V=1, wenn Überlauf, sonst P/V=0

INC (HL)

(HL) <-- (HL) + 1

Der Inhalt der Speicherzelle, die von HL adressiert wird, wird um eins erhöht.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C bleibt unverändert

N=0

P/V=1, wenn Überlauf, sonst P/V=0

INC (IX+dd)
INC (IY+dd)

(IX+dd) <--(IX+dd)+1
(IY+dd) <--(IY+dd)+1

Der Inhalt der Speicherzelle, die von IX+dd bzw. IY+dd adressiert wird, wird um eins erhöht.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

H=1, wenn Übertrag von Bit 3, sonst H=0

C bleibt unverändert

N=0

P/V=1, wenn Überlauf, sonst P/V=0

DEC r

r <-- r - 1

Der Inhalt des Registers r wird um eins erniedrigt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C bleibt unverändert

N=0

P/V=1, wenn Unterlauf, sonst P/V=0

DEC (HL)

(HL) <-- (HL) - 1

Der Inhalt der Speicherzelle, die von HL adressiert wird, wird um eins erniedrigt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C bleibt unverändert

N=0

P/V=1, wenn Unterlauf, sonst P/V=0

DEC (IX+dd)
DEC (IY+dd)

(IX+dd)<--(IX+dd)–1
(IY+dd)<--(IY+dd)-1

Der Inhalt der Speicherzelle, die von IX+dd bzw. IY+dd adressiert wird, wird um eins erniedrigt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C bleibt unverändert

N=0

P/V=1, wenn Unterlauf, sonst P/V=0

CPL

A <-- not A

Der Inhalt des Akkumulators wird Bit für Bit invertiert und wieder im Akkumulator abgelegt.

H=1

N=1

alle anderen Flags unverändert

NEG

A <-- 0 - A

Zum Inhalt des Akkumulators wird das 2er-Komplement gebildet und das Ergebnis wieder im Akkumulator abgelegt.

S=1, wenn Ergebnis negativ

Z=1, wenn Ergebnis = 0

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

C=1, wenn Ergebnis <> 0, sonst C=0

N=1

P/V=1, wenn Akkumulator = 80H vor der Negation

DAA

Dezimalanpassung.

Der Inhalt des Akkumulators wird in eine gepackte BCD-Zahl umgeformt. Dieser Befehl darf nur nach einer Addition bzw. Subtraktion verwendet werden und dient zur Unterstützung von Addition und Subtraktion mit BCD-Zahlen.

S = Bit 7 des Akkumulators

Z=1, wenn Ergebnis = 0

H verändert

C verändert

N unverändert

P/V=1 wenn Akkumulator gerade Anzahl von Nullbits enthält


Last Update: 2008-05-31