# Bit spiegeln mit Assembler



## Spranta (8. November 2007)

Tag

ich brauche ein Funktion in Assembler das eine Bitfolge im Akkumulator spiegelt sprich
101100101(12345678) in 101001101(87654321) macht. Kann mir da einer helfen bekomme es net hin.

Gruß
Spranta


----------



## Looky (3. Dezember 2007)

Moins.

Spontan fällt mir das Stichwort Bit-Shifting dazu ein..

Siehe hier:
http://www.geocities.com/SiliconValley/Park/3230/x86asm/asml1005.html


----------



## stephsto (15. Dezember 2007)

Hallo,

ich würde jedes Bit einzeln testen und setzen. Für ein Word etwa so:


```
mov ax, bitfolge
mov bx, 0x0
mov cx, 1000000000000000b

loop1:
  and ax, cx
  cmp ax, 0
  je test1:
   stc
   shr bx
  test1:
 shr cx
 cmp cx, 0
  je ende
 jmp loop1
ende:
```


----------



## deepthroat (13. Februar 2008)

Hi.

Man kann das auch ohne Schleife und Bedingung machen:

```
x = (x >> 16) | (x << 16);
x = ((x & 0xFF00FF00) >> 8) | ((x & 0x00FF00FF) << 8);
x = ((x & 0xF0F0F0F0) >> 4) | ((x & 0x0F0F0F0F) << 4);
x = ((x & 0xCCCCCCCC) >> 2) | ((x & 0x33333333) << 2);
x = ((x & 0xAAAAAAAA) >> 1) | ((x & 0x55555555) << 1);
```
Das kann man sicherlich recht einfach in Assembler übersetzen...

Gruß


----------

