Przejdź do zawartości

Asembler x86/Instrukcje/Logiczne

Z Wikibooks, biblioteki wolnych podręczników.

Asembler X86 Instrukcje

transferowe
arytmetyczne
logiczne
różne
skokowe

and

[edytuj]

działanie: wykonuje operację AND (koniunkcja) na odpowiadających sobie bitach operandów A i B; wynik jest przechowywany w A (poprzednia wartość zostaje zamazana).
A: rejestr lub adres pamięci.
B: konkretna wartość, rejestr lub adres pamięci (ale tylko jeśli A również nie jest adresem pamięci).
modyfikowane flagi: OF i CF są zerowane; SF, ZF i PF nabywają wartość zależną od wyniku.
przykład: and edx ebx

neg

[edytuj]

działanie: wykonuje działanie 0-A (odwraca znak liczby) i wynik przechowuje w A. Inna nazwa tej operacji to uzupełnienie dwójkowe. Polega to na zanegowaniu danej liczby i dodaniu jeden. Odwrócenie procesu polega na wykonaniu tej samej czynności
A: rejestr lub adres pamięci.
przykład: neg edx

not

[edytuj]

działanie: neguje (odwraca) wartości wszystkich bitów w A (1->0; 0->1).W literaturze instrukcja ta zwana jest także uzupełnieniem jedynkowym
A: rejestr lub adres pamięci.
przykład: not edx

or

[edytuj]

działanie: wykonuje operację OR (alternatywa) na odpowiadających sobie bitach operandów A i B; wynik jest przechowywany w A (poprzednia wartość zostaje zamazana).
A: rejestr lub adres pamięci.
B: konkretna wartość, rejestr lub adres pamięci (ale tylko jeśli A również nie jest adresem pamięci).
modyfikowane flagi: OF i CF są zerowane; SF, ZF i PF nabywają wartość zależną od wyniku.
przykład: or edx ebx

shl

[edytuj]

działanie: przesuwa wszystkie bity A w lewo o ilość bitów zdefiniowaną przez B
A: rejestr lub adres pamięci.
B: konkretna wartość lub rejestr CL (8-bitowa część rejestru ECX).
modyfikowane flagi: CF (przyjmuje wartość ostatniego bitu "wyrzuconego" poza obręb); SF, ZF i PF (zależnie od wyniku), OF(tylko, gdy B=1; przyjmuje wartość 0, gdy dwa ostatnie bity przed przesunięciem były równe; przyjmuje 1 w przeciwnym przypadku).
przykład: shl edx 02h

shr

[edytuj]

działanie: przesuwa wszystkie bity A w prawo o ilość bitów zdefiniowaną przez B
A: rejestr lub adres pamięci.
B: konkretna wartość lub rejestr CL (8-bitowa część rejestru ECX).
modyfikowane flagi: CF (przyjmuje wartość ostatniego bitu "wyrzuconego" poza obręb); SF, ZF i PF (zależnie od wyniku), OF(tylko, gdy B=1; przyjmuje wartość ostatniego bitu A przed przesunięciem).
przykład: shr edx 02h

test

[edytuj]

działanie: wykonuje operację AND (koniunkcja) na odpowiadających sobie bitach operandów A i B; działa podobnie jak instrukcja and, jednak nie zapisuje nigdzie wyniku operacji. Ustawia jedynie stosowne flagi, w sposób identyczny w jaki robi to instrukcja and.
A: rejestr lub adres pamięci.
B: konkretna wartość, rejestr lub adres pamięci (ale tylko jeśli A również nie jest adresem pamięci).
modyfikowane flagi: OF i CF są zerowane; SF, ZF i PF nabywają wartość zależną od wyniku; stan AF staje się niezdefiniowany.
przykład: test edx ebx

xor

[edytuj]

działanie: wykonuje operację XOR (alternatywa wykluczająca) na odpowiadających sobie bitach A i B; wynik jest przechowywany w A (poprzednia wartość zostaje zamazana).
A: rejestr lub adres pamięci.
B: konkretna wartość, rejestr lub adres pamięci (ale tylko jeśli A również nie jest adresem pamięci).
modyfikowane flagi: OF i CF są zerowane; SF, ZF i PF nabywają wartość zależną od wyniku.
przykład: xor edx ebx