Lunedì, 23 Ottobre 2017 15:56

Esempio 02: la funzione logiche: XOR, AND, OR, NOT

Scritto da

Un esempio si un altro operatore binario, poco comune forse per gli sviluppatori ma che in assembly è utilizzato sia per eseguire operazioni logiche come lo OR ESCLUSIVO, XOR appunto, oppure per banalmente per sbiancare/svuotare un registro e riportarlo a zero.

 L'esempio che segue usa proprio la funzione xor che prende due parametri da confrontare e su cui eseguire l'operazione. Xor, o esclusivo restituisce vero o falso con la seguente tabella della verità 

XOR A Vero B Falso
A Vero Falso Vero
B Falso Vero Falso

Per noi, i registri non conterranno vero o falso ma analogo valore 1 se vero, 0 se falso. Scriviamo il seguente frammento di codice e guardiamo i registri come si evolvono istruzione per istruzione.

; esempio 02
; scrive A ovvero 10 esadecimale nel registro DX e poi lo sbianca con XOR

.DATA

.CODE
.STARTUP

MOV DX, 0Ah
XOR DX, AX

.EXIT
END 

La corrispondente versione in SASM aggiunge poco, ma è un altro spunto per vedere più facilmente con la barra laterale il valore del registro eax come si evolve istruzione singola dopo istruzione col pulsante "lancia debug"

Assieme allo XOR esistono tutte le vari operazioni dell'algebra di Boole che agiscono nello stesso modo con gli operatori: AND, OR, NOT.  AND e OR prendono sempre due registri come parametri, mentre il NOT nega un valore alla volta, quindi un solo parametro/registro. L'OpCode XOR, è spesso utilizzato per "sbiancare" una variabile o registro e riportarlo al valore zero poiché richiede meno cicli di clock/cpu di un mov con zero. (es. mov dx, 0)

Letto 303 volte
Prof. Alfredo Centinaro

Docente di "Scienze e tecnologie informatiche", "Tecnologie e progettazione di sistemi informatici", "Sistemi e Reti" presso IIS Alessandrini-Marino (Teramo), consulente e sviluppatore web. Ha collaborato per anni come sviluppatore presso MHT - Treviso, assistente Sistemi ed elaborazione dell'informazione in UniTE Corso di laurea in Scienze del turismo culturale, tutor presso Telecom Italia Learning Services (L'Aquila)

Joomla SEF URLs by Artio