Operand in Assembler Sprache

OP #3013475
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
Angehängte Dateien:
#3013479
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.
#3013486
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

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.