Such-/Vergleichsbefehle:
Der Befehl CP dient zum Vergleich eines Registers oder eines Wertes mit dem A-Register. Stimmen die beiden Register überein, so wird das Null-Flag=1 (Z=1) gesetzt.
BSP .:
CP (IX+&22) | Der Inhalt der Adresse,auf die das Register IX+&22 zeigt, wird mit A verglichen. |
JP Z,&C3F2 | Wenn Übereinstimmung, weiter nach &C3F2. |
NOP | Wenn nicht, hier weiter. |
Die Befehle CPD, CPDR, CPI und CPIR gehören zu den
Suchbefehlen. Mit Ihnen kann man ganze Blöcke nach einem bestimmten
Wert durchsuchen. Bei den Befehlen CPDR (compare, decrement and repeat)
und CPIR (compare, increment and repeat) wird wiefolgt vorgegangen:
CPDR | CPIR |
wiederhole | wiederhole |
CP (HL) | CP (HL) |
HL=HL-1 | HL=HL+1 |
BC=BC-1 | BC=BC-1 |
bis BC=0 oder Z=1 | bis BC=0 oder Z=1 |
In HL muss die Anfangsadresse des zu durchsuchendes Bereiches stehen, in BC die Anzahl durchsuchende Bytes. Ist eine Adresse mit dem gleichen Wert wie im A-Register gefunden, bricht die Schlaufe ab und im HL-Register steht die Adresse. Die Schlaufe bricht ebenfalls ab, sofern BC=0 wurde, dann wurde der Wert nie gefunden.
Die Befehle CPD und CPI machen genau das gleiche, bis auf dass sie nicht repetieren, d.h. man kann die Repetitionsschleife beliebig vergrössern. Ist nämlich der Wert gefunden, wird Z=1 (das Nullflag) gesetzt oder wenn BC=0 wurde, wird das Übertragflag=0 gesetzt.