Bit spiegeln mit Assembler

Spranta

Erfahrenes Mitglied
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
 
Hallo,

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

Code:
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:
 
Hi.

Man kann das auch ohne Schleife und Bedingung machen:
C:
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ß
 

Neue Beiträge

Zurück