haker.info  — Etyczny hacking_

 haker.info Baza wiedzy

Asembler x86/x64 » Instrukcje logiczne
XOR
Składnia rozkazu:
XOR A, B

Instrukcja wykonuje sumę modulo 2 (alternatywę wykluczającą) operandów A i B. Wynik umieszcza w operandzie A.

A B A xor B
1 1 0
1 0 1
0 1 1
0 0 0
Pseudokod:
A = A xor B

Wpływ instrukcji na rejestr znaczników (flag):

  • Flagi PF, SF i ZF są ustawiane zgodnie z wynikiem operacji. Flagi CF i OF są zerowane. Flaga AF nieokreślona.

Przykładowy kod MASM64 (ml64.exe):

extrn ExitProcess : proc .data var1 dq 03h .code Main proc mov rax, 07h ;RAX = 07h = 00111b mov rcx, 14h ;RCX = 14h = 10100b xor rax, rcx ;RAX = 13h = 10011b mov rax, 05h ;RAX = 05h = 00101b mov rcx, var1 ;RCX = 03h = 00011b xor rax, rcx ;RAX = 06h = 00110b mov rax, 0FFFFFFFFFFFFFFFFh mov rcx, 000000000000000FFh xor rax, rcx ;RAX = 0FFFFFFFFFFFFFF00h ;XOR na dwóch takich samych wartościach daje zawsze zero mov rax, 07h ;RAX = 7 mov rcx, 07h ;RCX = 7 xor rax, rcx ;RAX = 0 mov rax, 03h ;RAX = 3 mov rcx, var1 ;RCX = 3 xor rax, rcx ;RAX = 0 _exit: sub rsp, 8h xor rcx, rcx call ExitProcess Main endp end

Kompilacja przykładowego kodu źródłowego:

ml64.exe prog1.asm /link /entry:Main /subsystem:windows /defaultlib:"kernel32.Lib" /LARGEADDRESSAWARE:NO

Dawid Farbaniec

Wszystkie treści umieszczone na tej witrynie są chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawartości tej witryny bez zgody autora. Wszelkie opublikowane tutaj treści (w tym kody źródłowe i inne) służą wyłącznie celom informacyjnym oraz edukacyjnym. Właściciele tej witryny nie ponoszą odpowiedzialności za ewentualne niezgodne z prawem wykorzystanie zasobów dostępnych w witrynie. Użytkownik tej witryny oświadcza, że z zamieszczonych tutaj danych korzysta na własną odpowiedzialność. Wszelkie znaki towarowe i nazwy zastrzeżone zostały użyte jedynie w celach informacyjnych i należą wyłącznie do ich prawnych właścicieli. Korzystając z zasobów witryny haker.info oświadczasz, że akceptujesz powyższe warunki.