Forum: Mikrocontroller und Digitale Elektronik Operand in Assembler Sprache


von Theo K. (bluebird)


Angehängte Dateien:

Lesenswert?

Hy,

da meine erste Frage so schnell und echt klasse beantwortet wurde, das 
sie mir wirklich weitergeholfen hat, Hoffe ich das man mir nochmal auf 
die Sprünge helfen kann :)

Bin immernoch dabei mich mit Hilfe eines Lehrbuchs in Assembler 
einzuarbeiten, da ist jetzt im quelltext ein hochkanter strich "|" 
(Siehe bild) aber leider nirgens ne erklärung was da mit den beiden 
Variablen passiert, :-(

habe das ganze mal auf den ATmege gebrant und er macht auch das was er 
soll.


mfg
Theo

von Karl H. (kbuchegg)


Lesenswert?

Das ist ein bitweises Oder und wird vom Assembler aufgelöst.

Du kannst ja auch schreiben

   ldi   r16,  2 + 3

und der Assembler rechnet 2+3 aus und erzeugt Code für

   ldi   r16, 5

Und hier ist es eben keine Addition, sondern ein bitweises Oder mit dem 
die beiden Konstanten zusammengeführt werden um zu bestimmen mit welchem 
Wert r16 geladen werden soll.

   TWINT   ist eine Konstante mit einem 1 Bit an einer Stelle
   TWEN    ist eine Konstante mit einem 1 Bit an einer anderen Stelle

die Veroderung ergibt dann ein Byte, in dem genau diese beiden 1 Bits 
gesetzt sind.


Und das nächste mal bitte kein Bild vom Code, sondern den Code in 
Textform. Dann kann man sich nämlich in der Antwort aus dem Original 
auch die Teile rauskopieren, die man zur Erklärung benötigt und muss 
nicht den halben Code neu tippen.

von da1l6 (Gast)


Lesenswert?

Hallo

Das dürfte eine logisches "oder " zweier Konstanten sein. Eine Bitweise 
Verknüpfung. Das passiert wohl schon im Assembler (die CPU sieht nur das 
Resultat).

da1l6

von Markus M. (adrock)


Lesenswert?

Hi,

1. bitte Codeschnipsel anstatt als Bild direkt in die Nachricht mit den 
Code-TAGS [ c ] und [ /c ] einfügen.

2. Das "|" steht für eine bitweise ODER-Verknüpfung der beiden Werte, 
diese wird zur übersetzungszeit vom Assembler vorgenommen und die daraus 
resultierende Konstante dann in den Code geschrieben.

Aber das hättest Du mit Google auch leicht finden können, dritter 
Treffer bei der Suche nach "avr assembler operands":

http://support.atmel.com/knowledgebase/avrstudiohelp/mergedprojects/avrasm/Html/expressions.html

Solltest Du den gcc-as verwenden, musst Du mal einen Blick in dessen 
Manual werfen (aber die Basisoperatoren sind die gleichen).

Grüße
Markus

von spess53 (Gast)


Lesenswert?

Hi

> da ist jetzt im quelltext ein hochkanter strich "|"

Eine OR-Verknüpfung. Solltest du in der Hilfe zu deinem Assembler 
finden. Im AVR Studio unter AVR Assembler->User's Guide->Expressions.

MfG Spess

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.