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


von Mehmet K. (mkmk)


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

von johnny.m (Gast)


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

von johnny.m (Gast)


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

von Rolf Magnus (Gast)


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

von Mehmet K. (mkmk)


Lesenswert?

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

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.