2017-01-09 6 views
-3

Weiß jemand, wie man die Kraft eines Wertes in x86-Assembler zu finden,Macht der Funktion x86 Assembly

Ist es möglich, durch die Anzahl der in einem Wert zu verschieben?

Zum Beispiel:

mov x, 30 

    shl eax, x 

Für mein Beispiel würde Ich mag 2 finden^^ 32,2 31,2^30 ..... 2^0.

Jede Hilfe würde sehr geschätzt werden.

Vielen Dank.

+0

http://stackoverflow.com/questions/12680303/power-of-in-x86-assembly, http://stackoverflow.com/questions/23412780/power-of-2-with-shr-and-shl- Assembly –

+0

Um Potenzen von zwei zu finden, verwenden Sie einfach bitweise Verschiebungen. – Jester

+1

Mögliches Duplikat von [power of in x86 assembly] (http://stackoverflow.com/questions/12680303/power-of-in-x86-assembly) –

Antwort

-3

mit einer shx-Anweisung können Sie nur 1 verwenden, weil die Bewegung von Bit rapresent.

für shl Sie letzten Bit auf der linken Seite und fügen Sie ein bisschen auf der rechten Seite. dafür Multiplayer ein Byte pro 2.

während shr Sie letzten Bit auf der rechten Seite und ein wenig auf der linken Seite einfügen. dividieren Sie ein Byte pro 2.

so, wenn Sie einen Speicher benötigen, müssen Sie Daten in andere Register berechnen. Beispiel 32-Bit-Assembler: 2^32

$ mov eax, 2

mov ECX, die Anzahl der Strom

xor ebx, ebx

loop_power: SHL eax, 1

add ebx, eax

Schleife loop_power $ Sie Potenz von 2 in ebx ha

+0

Das ist nicht wahr. x86 hat eine Anweisung zum Verschieben um eine variable Anzahl von Bits. Eine solche Anweisung ist z.B. 'shl r/m32, cl'. – fuz