Forum: Mikrocontroller und Digitale Elektronik Speicherzelle vergleichen ?


von Mario Grimm (Gast)


Lesenswert?

Hallo
ich weis meine Fragen sind simpel, aber ich komme nicht weiter und im
Chat ist auch keiner.

Ich erhöhe eine Speicherzelle immer um 1 mit

INCFSZ 0x25,1

Wie kann ich abfragen, wenn in der Speicherzelle 99 steht.
Geht das nur mit einer AND Verknüpfung oder so ?
Ein paar Zeilen währen hilfreich.
(Prinzip: IF 0x25 = 99 Then.......nur in Assembler halt)

Vielen Dank!

von Chris (Gast)


Lesenswert?

Du solltest dazu schreiben, um welche Architektur es geht.

Gibt es keinen Opcode für "cmp", "compare", "compare immediate"
oder ähnliches?

von A.K. (Gast)


Lesenswert?

> Gibt es keinen Opcode für "cmp", "compare", "compare immediate"
> oder ähnliches?

Bei den PICs nicht. Da geht's offenbar nur über Subtraktion oder XOR.

Also: MOVLW 99, SUBFW/XORWF und das Z-Flag testen.

von Harald G. (Gast)


Lesenswert?

Hallo Mario

wenn du eine Variable  um 1 erhöhen willst verwende den Befehl

INCF 0x25,1

abfrage ob = 99 ist dann

movlw    .99       ;  Dez 99
xorwf    0x25,0    ;  Z-Flag wird bei Gleichheit gesetzt
btfsc    STATUS,Z  ;  überspringe nächsten Befehl wenn ungleich
goto     ziel      ;  verzweige zur adresse zB.ziel wenn gleich
nop                ;  hier geht  dan Programmm weiter (nop ist nur
                   ;  ein Beispiel.)


mfg
Harald

von Mario Grimm (Gast)


Lesenswert?

Hallo @Harald

Vielen Dank dafür !!
Jetzt sieht die Welt schon wieder anders aus.
Ich muss halt immer wieder Probieren ob es funktioniert, und wenn
nicht, dann kann der Fehler ja sonnst wo liegen.
Also besten Dank nochmals !!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.