HI Wie kann ich eine grösser oder gleich Abfrage am einfachsten realisieren? Ich muss eine Abfrage haben, die ein 16- Bit Register überprüft, ob es grösser oder gleich 10'000 ist!!! Wie kann ich ein 16- Bit Register vergleichen??? thanks IZU
so wie's aussieht gibt's da keine funktion für... ich würd (vielleicht) einfach 10000 von den registern abziehen. also seien die regs wieder Xh und XL. 10'000=0x2710 dann ziehste 0x27 von XH ab, und dann 0x10+Carry von XL. dann checkst du das Zero-Flag. Wenn das gesetzt ist, war die zahl in XH:XL gleich 10'000. Wenn das carry flag gesetzt ist (dann ist XL untergelaufen), war die zahl größer. vielleicht geht's einfacher, wenn also jemand ne idee hat, würd mich auch interessieren. Gute n8
>Wenn das carry flag gesetzt ist (dann ist XL untergelaufen), war die zahl größer.
es muss natürlich heißen:
Wenn das carry flag gesetzt ist (dann ist XL untergelaufen), war die
zahl kleiner, wenn beide flags (Z und C) nicht gesetzt sind, war die
zahl größer als 10'000.
Das funzt ähnlich der Subtraktion/Addition LDI DL, 0x50 LDI DH, 0xC3 CP DL, CL <-------- CPC DH, CH <-------- BRLO overflow (CL,CH,DL,DH sind R20-23)
Vielen Dank für die Antwort!!!! Jedoch funzt es bei mir immer noch nicht, ist es nicht so, dass der BRLO Befehl springt, wenn das Carry Bit gesetzt ist??? Das Carry Bit wird also nur abhängig vom High Byte gesetzt!!! Darum erkennt diese Abfrage diese 10'000 nicht!!!! Oder sehe ich das falsch??? Vielen Dank! Izoard
doch, also eigentlich müsste es klappen... das carry bit wird ggf von cp gesetzt, und dann von cpc ggf nochmals.
jetzt habe ich es gesehen, das mit dem Carry Bit klappt, doch wenn die zahl genau gleich gross ist, springt er nicht!!!
brlo springt, wenn die eine zahl kleiner ist als die andere. nimm stattdessen brsh (oder?).
ich habe nun den Vergleichs- Wert um eins verkleinert, nun spring er auch, wenn es gleich ist.... Noch eine Frage: Wenn ich nun das ganze mit 100 machen möchte, könnte ich doch mit dem CPI XL, 0x64 vergleichen und dann mit BRSH springen???? Wieso geht das bei mir nicht??? Funktioniert CPI mit XL nicht???' IZo
Hi, Ich frage bei >= immer nur das C-Flag ab. Bei <= dreht man eben die Abfrage um. (cp r1,r2 ; cp r2,r1) a<b,C=1 a=b,C=0 a>b,C=0 Gruß Uwe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.