Asembler x86/Instrukcje/Logiczne
Asembler X86 Instrukcje | ||||
and
edytujdział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
edytujdział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
edytujdział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
edytujdział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
edytujdział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
edytujdział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
edytujdział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
edytujdział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