Logische Befehle
And
Or
X0r
Akku löschen/komplementieren
And
Der Befehl
anl op1, op2
ist ein bitweises Und-Verknüpfung der Operanden
op1
und
op2
.
Das Ergebnis steht nach der Ausführung in
op1
.
Ein Bit im Ergebnis ist genau dann 1, wenn die ensprechenden Bit in
op1
und
op2
auf 1 sind, sonst 0.
In
Abbildung 1 ist ein Beispiel mit Werten abgebildet. Hier werden die Werte
11001010
und
01100110
bitweise mit Und verknüpft.
Abb. 1: Bitweises Und
Hier die Und-Befehle in der Übersicht:
Mnemonic | Funktion | Bytes | MZ | Flags |
ANL A,Rr | Der Akkumulator wird überschrieben durch das Ergebnis der UND-Verknüpfung von Akku und dem Inhalt von Rr. | 1 | 1 | P |
ANL A,dadr | Der Akkumulator wird überschrieben durch das Ergebnis der UND-Verknüpfung von Akku und dem Inhalt von dadr. | 2 | 1 | P |
ANL A,@Ri | Der Akkumulator wird überschrieben durch das Ergebnis der UND-Verknüpfung von Akku und dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert wird. | 1 | 1 | P |
ANL A,#const8 | Der Akkumulator wird überschrieben durch die UND-Verknüpfung von Akku und der 8-Bit-Konstanten. | 2 | 1 | P |
ANL dadr,A | Der Inhalt von dadr wird überschrieben durch die UND-Verknüpfung von Akku und dem Inhalt von dadr. | 2 | 1 | - |
ANL dadr,#const8 | Der Inhalt von dadr wird überschrieben durch die UND-Verknüpfung der 8-Bit-Konstanten und dem Inhalt von dadr. | 3 | 2 | - |
Or
Der Befehl
orl op1, op2
ist ein bitweises Oder-Verknüpfung der Operanden
op1
und
op2
.
Das Ergebnis steht nach der Ausführung in
op1
.
Ein Bit im Ergebnis ist genau dann 1, wenn das ensprechende Bit in
op1
auf 1 ist oder in
op2
auf 1 ist, sonst 0.
In
Abbildung 2 ist ein Beispiel mit Werten abgebildet. Hier werden die Werte
11001010
und
01100110
bitweise mit Oder verknüpft.
Abb. 2: Bitweises Oder
Hier die Oder-Befehle in der Übersicht:
Mnemonic | Funktion | Bytes | MZ | Flags |
ORL A,Rr | Der Akkumulator wird überschrieben durch die ODER-Verknüpfung von Akku und dem Inhalt von Rr. | 1 | 1 | P |
ORL A,dadr | Der Akkumulator wird überschrieben durch die ODER-Verknüpfung von Akku und dem Inhalt von dadr. | 2 | 1 | P |
ORL A,@Ri | Der Akkumulator wird überschrieben durch die ODER-Verknüpfung von Akku und dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert wird. | 1 | 1 | P |
ORL A,#const8 | Der Akkumulator wird überschrieben durch das Ergebnis der ODER-Verknüpfung von Akku und der 8-Bit-Konstanten. | 2 | 1 | P |
ORL dadr,A | Der Inhalt von dadr wird überschrieben durch die ODER-Verknüpfung von Akkumulator und dem Inhalt von dadr. | 2 | 1 | - |
ORL dadr,#const8 | Der Inhalt von dadr wird überschrieben durch die ODER-Verknüpfung der 8-Bit-Konstanten und dem Inhalt von dadr. | 3 | 2 | - |
XOr
Der Befehl
xrl op1, op2
ist ein bitweises XOr-Verknüpfung der Operanden
op1
und
op2
.
Das Ergebnis steht nach der Ausführung in
op1
.
Ein Bit im Ergebnis ist genau dann 1, wenn das ensprechende Bit entweder in
op1
auf 1 ist oder in
op2
auf 1 ist.
Anders formuliert: Sind die Bits in den Operanden unterschiedlich, so ist das Ergebnisbit 1, sind sie gleich ist das Ergebnis 0.
Abbildung 3 zeigt ein Beispiel für eine bitweise Xor-Verknüpfung.
Abb. 3: Bitweises XOr
Hier die XOr-Befehle in der Übersicht:
Mnemonic | Funktion | Bytes | MZ | Flags |
XRL A,Rr | Der Akkumulator wird überschrieben durch das Ergebnis der EXCLUSIVE-ODER-Verknüpfung von Akku und dem Inhalt von Rr. | 1 | 1 | P |
XRL A,dadr | Der Akkumulator wird überschrieben durch das Ergebnis der EXCLUSIVE-ODER-Verknüpfung von Akku und dem Inhalt von dadr. | 2 | 1 | P |
XRL A,@Ri | Der Akkumulator wird überschrieben durch die EXCLUSIVE-ODER-Verknüpfung von Akku und dem Inhalt der internen Datenspeicherzelle, die durch den Inhalt von Ri adressiert wird. | 1 | 1 | P |
XRL A,#const8 | Der Akkumulator wird überschrieben durch das Ergebnis der EXCLUSIVE-ODER-Verknüpfung von Akku und der 8-Bit-Konstanten. | 2 | 1 | P |
XRL dadr,A | Der Inhalt von dadr wird überschrieben durch die EXCLUSIVE-ODER-Verknüpfung von Akkumulator und dem Inhalt von dadr. | 2 | 1 | - |
XRL dadr,#const8 | Der Inhalt von dadr wird überschrieben durch die EXCLUSIVE-ODER-Verknüpfung der 8-Bit-Konstan-und dem Inhalt von dadr. | 3 | 2 | - |
Akku löschen/komplementieren
Der Befehl clr A
löscht den Akkumulator, d.h. er setzt alle Bits im Akku auf 0. Den selben Effekt haben die Befehle
mov A,#0
und anl A, #0
. Allerdings benötigt clr A
nur 1 Byte im ROM die anderen Befehle jeweils 2.
Der Befehl cpl A
invertiert den Akkumulator bitweise, d.h. jede binäre 1 im Akku wird zu 0 und jede 0 zu einer 1.
Denselben Effekt hätte z.B. der Befehl xrl A, #0FFh
.
Hier die zwei Befehle Clr und CPL:
Mnemonic | Funktion | Bytes | MZ | Flags |
CLR A | Der Akkumulator wird gelöscht. | 1 | 1 | P |
CPL A | Der Inhalt des Akkumulators wird invertiert. | 1 | 1 | P |