Benutzen den 8252 von Atmel. Ich kann zwar zwei Werte vergleichen und springen, falls sie ungleich sind. Aber wie kann ich springen, wenn ein Wert kleiner oder größer als ein anderer ist?
Ich habe eine Idee: Man hat zwei Werte in R0 und R1 und will wissen, ob der Wert in R1 größer als der in R0 ist. Dazu kopiert man den Wert aus R1 in den ACCU und schaut, ob er 0 ist. Wenn der Wert im ACCU 0 ist, kann R1 nicht größer R0 sein. Ist der Wert aber nicht 0 und auch ungleich R0, dann erniedrigt man ihn um 1 und vergleicht ihn wieder mit R0. Ist er nun gleich R0, so ist R1 größer R0. Wenn nicht, fährt man weiter fort, bis der Wert im ACCU 0 erreicht hat. Wenn bis zu diesem Zeitpunkt keine Übereinstimmung mit R0 gefunden wurde, ist R1 größer R0. Hoffe, der Algorithmus ist ok. Ich kann mir keinen einfacheren vorstellen. Aber ich lasse mich gerne überraschen. Der Nachteil ist der Rechenaufwand. Im schlimmsten Fall muss der Algorithmus mehr als 250 Mal durchlaufen. Das ist eine Verschwendung.
Ich würde das ganz einfach per subtraktion prüfen. So ziemlich jeder Controller hat ein Statusregister, in dem ein Vorzeichenwechsel gespeichert wird. a - b rechnen, wenn negatives Vorzeichen, war b größer, bei positivem war es a oder beide sind gleich (wobei das z.T. vom Controller abhängt).
hast du im unterricht nicht aufgepasst, oder warum kannst du deine hausaufgaben nicht alleine loesen?
Im Unterricht haben wir sowas (noch) nicht durchgenommen und deshalb können es auch nicht die Hausaufgaben sein. Und warum bist du immer so ein Pessimist?
>Und warum bist du immer so ein Pessimist?
bedingte spruenge sind nunmal absolute grundlagen, stehen in jedem
asm-tutorial und sollten mit die ersten sachen sein, die man
lernt/beigebracht bekommt.
und da du dich hier im forum schon als schueler geoutet hast und wegen
jeder grundlegenden kleinigkeit einen thread eroeffnest anstatt google
zu benutzen oder tutorials zu lesen, lag es nahe anzunehmen, dass du ein
fauler schueler bist, der seine hausaufgaben vom forum machen lassen
will.
ok, scheinbar ist das nicht so. schande ueber mich.
Hm, faule Schüler machen die Hausaufgaben GAR nicht. Wie auch immer, ich stelle Fragen im Forum, weil ich gerne über solche Dinge diskutiere. Des Weiteren benutze ich sehr wohl Google und lese Datenblätter und Tutorials. Würde ich das nicht tun, wäre das Forum noch viel voller. ;-)
Du kannst SUBB oder CJNE nehmen und dann das Carry-Bit zum Springen benutzen. Bei SUBB aufpassen, vorher CLR C machen. Peter
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.