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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.