Befehl gesucht

OP #489892
Lesenswert?

Hallo ich siche einen befehl im AVR-Assembler, mit dem ich ganze 
register auf einen bestimmten inhalt prüfen kann und dementsprechend 
ragieren kann, also z.b. wenn r16 gerade 0b01011010 hat, dann z.B. der 
nächste befehö übersprungen werden. wenn nicht, dann wird nicht 
gesprungen.

WIe kann ich, wenn die Zahl 2 8bit register benötigt überprüfen? Gibt es 
da einen extra befehl? oder muss ich einfach beide einzeln überprüfen?
Gast #489895
Lesenswert?

Wie wärs mit einem Vergleich und anschließendem bedingten Sprung?
Oder Wert abziehen und Sprung falls Null?
Wenn du zwei Register überprüfen willst, musst du (soweit ich weiss) 
beide nacheinander testen.

Gruss
OP #489917
Lesenswert?

ok, dasist gut, vielen dank, aber eine frage bekam ich beim testen ich 
hab bei einem älteren projekt gesehen, da wollte ich die interne 
taktfrequens vom mega8 eintellen. und habe dafür die bits CKSEL0, 
CKSEL1, CKSEL0 und CKSEL3 geändert, aber das alles mit dem befehl cpi, 
also so:

cbi CKSEL0, 0
cbi CKSEL1, 0
cbi CKSEL2, 1
cbi CKSEL3, 0

und das hat auch funktioniert, ibwohl ich doch nur das bit CKSEL0 mit 
der Konstanten 0 vergleichen habe, oder?
(Firma: ZeuSWarE GmbH) #489925
Lesenswert?

wenn es nur ein Bit zum vergleichen geht dann
sbrc r16,7 ;skip if bit in register is cleared
rjmp bla   ;if bit 7 in r16 is cleared this will be skiped
mov.....   ;lala
ansonsten
cpi r16,0xf0  ;compare
breq lala     ; if true jump
              ;else do this ...

grüüße
#489928
Lesenswert?

@Lukas:
Am Ende des Datenblatts befinden sich zwei Tabellen. Eine listet den 
Befehlssatz auf, die andere die I/O-Adressen. Beide solltest Du Dir als 
Arbeitsunterlage (Handzettel) ausdrucken. Weiterführende Informationen 
zu den Befehlen gibt es dann in der Hilfe zum AVR-Studio. Dazu einfach 
Befehl eintippen, Cursor draufstellen, F1-Taste drücken, lesen, 
verstehen.

...
Gast #490119
Lesenswert?

>wollte ich die interne taktfrequens vom mega8 eintellen.

>---------
cbi CKSEL0, 0
cbi CKSEL1, 0
cbi CKSEL2, 1
cbi CKSEL3, 0
>---------

CKSELx klingt nach Fusebits, geht das überhaupt aus dem laufenden 
Programm heraus??
Gast #490130
Lesenswert?

> geht das überhaupt aus dem laufenden Programm heraus??
Nein, natürlich nicht. Und wenn es ginge, dann wäre die Syntax falsch.

@Lukas:
1.: Die Taktquelle lässt sich nicht aus dem Programm heraus ändern.
2.: Versuch mal, die Beschreibung der Befehle im Tut und in der Hilfe zu 
verstehen. Und nicht nur die Befehle, sondern auch den Unterschied 
zwischen Registern, Bits und Fusebits...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren