Fragen zu Assembler

OP #3486966
Lesenswert?

Hallo,

zwei kurze Fragen:

1)
um in Assembler zwei Bits zu tauschen, bspw. das LSB und MSB wollte ich 
einefach eine Bitmaske verexoren. Kann ich das folgendermaßen ausführen?

ldi r17, 0b10000001
eor r16,r17

r16 hätte dann das erste und letzte Bit getauscht oder?

2)
wenn ein 16Bit-Wert in zwei Registern steht bspw r16-high und r17-low, 
wie kann ich eine Abfrage machen ob der Wert größer als zB 0x1753 ist 
und dann auf 0 zurücksetzen? Hierfür hab ich leider keinen Ansatz, außer 
dass ich wahrscheinlich mit BRSH arbeiten muss. Weiß leider nicht wie 
16Bit-Werte behandelt werden.

Danke schonmal
Gast #3486993
Lesenswert?

Wie wäre es mit einem kleinen, verschämten Hinweis zum Prozessortypen?

zu 1.
Wenn Du unter tauschen Invertieren 1 --> 0; 0 --> 1 verstehst: Ja

Wenn Du meinst Bit0 --> Bit7; Bit7 --> Bit0: dann nein.
Gast #3487045
Lesenswert?

Bei Atmels stehen dafür die Befehle: CP CPC und CPI zur Verfügung

Meist kommt bei Variablen
CP  Reg,Reg // gefolgt von
CPC Reg,Reg
zur Anwendung.

Im Zusammenhang mit Konstanten bietet sich die Sequenz:
CPI Reg,Const   // Low gefolgt von
CPC Reg,Reg     // High
an.
Gast #3488788
Lesenswert?

Johann L. schrieb:
> Wasn das für'n Mist? Ist es nun ein AVR oder nicht?

Zitat: (ist ne Klausur-Aufgabe)

Da erwartest du doch nicht ernsthaft etwas sinnvolles? Gab es eine 
Revolution in unserem Schulsystem?

Gruss Reinhard

Peter Smart schrieb:
> Kann ich die Aufgabe auch mit ror und rol realisieren? also übers
> carry-flag tauschen?

Klar, das funktioniert mit jedem Prozessor, denn Rotate-Befehle hat 
jeder.

Gruss Reinhard

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