Forum: Mikrocontroller und Digitale Elektronik CPSE->CPNE?


von Christian Fuchs (Gast)


Lesenswert?

Hallo,

noch eine Frage von mir ;-)

Ich bin gerade ein wenig am Programmieren, und jetzt stellt sich mir die 
Gegebenheit, dass ich 2 Register vergleichen will, und wenn sie gleich 
sind, soll der in der nächsten Zeile stehende Befehl ausgeführt 
werden...

Einen solchen Assembler Befehl gibt es aber nicht! (AT90S2313)

Es gibt nur CPSE->Compare, Skip if Equal

Was ich bräuchte wäre "Compare, Skip if NOT Equal".

Ich überlege schon ne ganze Weile nach einem Workaround, aber das 
einzige was bis jetzt geklappt hat war mit den branch-Befehlen, aber 
dafür brauche ich dann ja wieder eine Sprungmarke, was das ganze 
unelegant macht.

Wäre nett, wenn jemand ein paar Zeilen dazu schreiben würde...


ciao

     Christian

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo Christian,

> Es gibt nur CPSE->Compare, Skip if Equal
>
> Was ich bräuchte wäre "Compare, Skip if NOT Equal".

gibts leider net.

> Ich überlege schon ne ganze Weile nach einem Workaround, aber
> das einzige was bis jetzt geklappt hat war mit den
> branch-Befehlen, aber dafür brauche ich dann ja wieder eine
> Sprungmarke, was das ganze unelegant macht.

Du brauchst nicht unbedingt Sprungmarken um zu springen. Mit <b>brne 
PC+2</b> wird z.B. der nächste Befehl übersprungen, wenn der Vergleich 
negativ ausfällt. <b>PC</b> bedeutet "Program Counter", <b>PC+2</b> sagt 
dem Assembler, dass du 2 Adressen nach vorne springen möchtest. Am 
besten mal im AVR-Studio ausprobieren.

MfG
Andreas

von Christian Fuchs (Gast)


Lesenswert?

Danke für die Antwort, dass mit dem PC+... ist um einiges elleganter als 
mit der Marke ;-)

ciao

     Christian

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.