Forum: Mikrocontroller und Digitale Elektronik Bits drehen bzw. spiegeln


von runkelrübe (Gast)


Lesenswert?

Hallo,

ich habe z.B. folgende Bitkombination:

"01100100"

wie kann ich die Bits in ASM drehen bzw. spiegeln, so daß:

"00100110"

herauskommt ?


Achso, ich verwende einen PIC16F627.


von Blinklicht (Gast)


Lesenswert?

1
swapf file,w
2
movwf file

von Woodi (Gast)


Lesenswert?

Damit wird nur die untere und oberer Hälfte des Bytes getauscht, glaube 
ich...

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich würde in einer Schleife die Bits oben herausschieben und diese 
herausgeschobenen Bits unten wieder hereinschieben (Oder andersherum ;))

von A.K. (Gast)


Lesenswert?

Um Simons Luxus-NOP gradezuziehen: auf der gleichen Seite rein wie raus, 
sonst bleibt alles beim Alten.

von Florian (Gast)


Lesenswert?

8x hintereinander:
RLF f1, 1
RRF f2, 1

Gruß,

Florian

von ARM-Fan (Gast)


Lesenswert?

In "C" sähe das dann so aus. Vielleicht hilfts dem Verständnis
auch wenns kein ASM ist.
1
for ( i = 0; i < 8; i++ )
2
{
3
   gespiegelt |= original & 0x80;
4
   original <<= 1;
5
   gespiegelt >>= 1;
6
}

  

von Florian (Gast)


Lesenswert?

@ARM-Fan, das ist leider nicht richtig. Der dreht einmal zu oft.

So passt es:
1
for ( i = 0; i < 8; i++ )
2
{
3
   gespiegelt >>= 1;
4
   gespiegelt |= original & 0x80;
5
   original <<= 1;
6
}

Gruß,

Florian

von Simon K. (simon) Benutzerseite


Lesenswert?

A.K. wrote:
> Um Simons Luxus-NOP gradezuziehen: auf der gleichen Seite rein wie raus,
> sonst bleibt alles beim Alten.

HUST Ja... :-)

von Peter D. (peda)


Lesenswert?


von runkelrübe (Gast)


Lesenswert?

Danke.

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.