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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.