Ik begin met assembleren en kom steeds xor tegen, bijvoorbeeld:
xor ax, ax
Wist het alleen de waarde van het register?
Antwoord 1, autoriteit 100%
A XOR B
in het Engels zou worden vertaald als “zijn A en B niet gelijk”. Dus xor ax, ax
zal ax
op nul zetten aangezien ax altijd gelijk is aan zichzelf.
A B | A XOR B
0 0 | 0
1 0 | 1
0 1 | 1
1 1 | 0
Antwoord 2, autoriteit 39%
xor reg, reg
wordt vaak gebruikt om het register te wissen. Het kan een alternatief zijn voor mov reg, 0
AFAIR, het was in sommige gevallen sneller (of korter).
En natuurlijk is XOR zelf een exclusieve OR (ook wel: exclusieve disjunction) operatie (maar het is jammer om hier dergelijke basisprincipes te beschrijven – gebruik Wikipedia)
Antwoord 3, autoriteit 21%
xor ax, ax
is de snelst mogelijke manier om het bijlregister op 0
te zetten. Snelst in termen van de grootte van de instructie en het aantal instructies. Voor details over hoe het werkt, heb je een beetje kennis van beetje rekenen nodig.
XOR-bewerking tussen twee bits retourneert 1 als één en slechts éénvan de twee bits 1 is; 0 anders. Een andere manier om uit te leggen is dat het 1 retourneert als de twee bits verschillend zijn; 0 anders.
XOR-bewerking tussen twee binaire getallen van dezelfde lengte werkt eveneens bit-voor-bit. XOR twee getallen krijg je een getal met bits ingesteld op 1 waar corresponderende bits van de twee operanden verschillen, 0 wanneer corresponderende bits hetzelfde zijn.
Vanuit deze kennis is het vrij eenvoudig in te zien dat als de twee operanden hetzelfde zijn (ax en ax bijvoorbeeld), het resultaat 0 zal zijn.
Antwoord 4, autoriteit 11%
xor register, register
wordt vaak gebruikt om een register te ‘nul’, omdat alle bits met elkaar worden vergeleken:
0-bits verblijf nul.
1-bits worden nul, omdat 1 XOR 1 ook 0 is 0.
Antwoord 5, Autoriteit 7%
xor = exclusief of. Zie de definitie van Wikipedia voor exclusief of .
Als u XOR een register met zichzelf wilt registreren, zal deze nul dat registreren.
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
Laten we de waarde 41 innemen zoals voorbeeld (in binair):
101001
xor 101001
= 000000
Antwoord 6, Autoriteit 5%
A B | XOR
0 0 | 0
1 0 | 1
0 1 | 1
1 1 | 0
De XOR-instructie doet de bovenstaande bediening op elk paar bits in de twee operanden. Dus 0xFF xor 0xFF
ZOU ZIJN 0x00
EN 0x55 xor 0xAA
ZOU ZIJN 0xFF
. En ja, xor ax ax
Wist ax
.
Antwoord 7, Autoriteit 4%
In dit geval zal het het register wissen … XOR is een “exclusieve of” … dus als bijl 1010 bevat en u exclusief of dat met 1010 0000 (gewist)
Antwoord 8, Autoriteit 4%
Toen ik lang geleden begon te programmeren, was er geen exclusief of op de processor of in de compiler. Toen ik erop aankwam, bleef ik aan de beschrijvingen:
- of: true als a = 1 of b = 1 of beide = 1
- XOR: TRUE als A = 1 of B = 1 maar niet beide = 1
Dus:
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1
en
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
Antwoord 9, Autoriteit 2%
Het bepaalt de logische exclusieve of
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
Dus, alleen WAAR als een van de uitdrukkingen waar is, niet beide.
Antwoord 10, autoriteit 2%
Als ik het me goed herinner, is xor ax, axeen montage-instructie van één byte, terwijl mov ax, 0minstens 3 zou zijn en waarschijnlijk iets langer zou duren om uit te voeren . Het zal zeker langer duren om te decoderen dan de xor-instructie.
Antwoord 11, autoriteit 2%
xor ax,ax wordt gebruikt om ax op 0 te zetten.
Reden: typisch xor-instructies op een processor nemen minder bytes in beslag dan bij het gebruik van movl 0,%ax