www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Redundanz im AVR-Assembler?


Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmiere nur in C, aber werfe hin und wieder auch mal ein Blick in
den Assembler Befehlssatz.
Was ich schon immer mal nachfragen wollte:
Was ist eigentlich der Unterschied zwischen den Befehlen >BCLR 0< und
>CLC<
Oder zwischen den Befehlen >BCLR 5< und >CLH< usw. usf.
Beide sind 1 Wort lang und werden in einem Maschinenzyklus
abgearbeitet.
Wozu also diese 2 verschiedene Befehle, die (meiner Meinung nach)
dasselbe tun?
Auch bei anderen Befehlen hatte ich den Eindruck, als waere da eine
Redundanz. Dank im voraus für die Aufklaerung.

MfG

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Befehle zur Manipulation einzelner Flags sind lediglich Kurzformen,
die die Lesbarkeit des Assembler-Codes verbessern. Wenn Du Dir den Hex-
bzw. Binär-Code für die Befehle anschaust (im Instruction Set Manual),
wirst Du feststellen, dass die Befehle in der Tat identisch sind. In
Deinem Beispiel: BCLR ist binär mit '1001 0100 1sss 1000' definiert,
wobei 'sss' die Nummer des Bits im SREG ist. Soll das Carry-Flag (Bit
Nr. 0) gelöscht werden, lautet der Befehl '1001 0100 1000 1000' oder
9488h. Für CLC ist exakt der selbe Opcode definiert, es ist aber auf
den ersten Blick zu erkennen, was der Befehl macht, im Unterschied zu
BCLR 0. Wenn Du den Assembler-Befehlssatz durchgehst, wirst Du noch
andere Beispiele finden, bei denen das ähnlich gemacht wird. Die
Befehle SBR und CBR sind z.B. identisch mit ANDI bzw. ORI.

Gruß und frohe Ostern

Johnny

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Upps, hab grad gesehen, dass ich beim Tippen die Reihenfolge vertauscht
hab. Nicht dass es zu Missverständissen kommt: CBR entspricht ANDI mit
dem Komplement des Operanden und SBR entspricht ORI.

Gruß

Johnny

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt noch einige andere Befehle mit identischem Opcode. Als Beispiele
könnte man noch nennen:

   lsl rXX   =  add rXX, rXX
   rol rXX   =  adc rXX, rXX
   tst rXX   =  and rXX, rXX
   clr rXX   =  eor rXX, rXX

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf die Idee, den HexCode anzuschauen, bin ich nicht gekommen.
Herzlichen Dank.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.