|
 |
Numeri
e Logica Binaria |
SCHEDA n° 09 [
9
di 20] |
 |
|
Operazioni Logiche su Numeri Binari:
la Funzione AND |
|
 | La funzione AND
descrive l'effetto prodotto
dalla
logica "e" (appunto "and"
in inglese..) sulle variabili coinvolte
(per esempio A e
B): |
|
la funzione
AND è vera se
A e
B sono (entrambe)
vere |
 | La Tabella di Verità
per la funzione AND di
A e B
è dunque la seguente: |
|
A |
B |
AND |
|
 |
|
0 |
0 |
0 |
|
0 |
1 |
0 |
|
1 |
0 |
0 |
|
1 |
1 |
1 |
 | E' facile verificare che la
definizione è ben rappresentata: solo se
A e
B sono entrambe a
1 (vere) la funzione
AND=f(A,B)
è a 1 (vera). |
 | Per capire la logica guarda lo schema allegato:
la lampada (funzione AND
di
A e
B) è accesa
(1=vera) solo
se l'interruttore A
e l'interruttore B
solo
entrambi chiusi (1=veri). |
 | L'osservazione della Tabella di
Verità mette in evidenza una importante particolarità: la funzione AND
si può ritenere il prodotto delle variabili
A
e B;
per questo è detta anche prodotto logico. |
 | Il processore 80x86 prevede
l'istruzione omonima,
AND,
con operandi di tutte le dimensioni (a 8, 16, 32 bit, ...); con operandi a 8
bit vale l'esempio: |
55H
0101 0101 AND
F0H
1111 0000 =
-------------
50H
= 0101 0000 |
 | Il funzionamento della
AND
sottolinea uno degli usi più raffinati di
questa istruzione: quello di mascherare
alcuni bit di un determinato dato; l'esempio mostra chiaramente che i
bit del primo operando (55H) che
occupano la stessa posizione dei bit a 0 della maschera
(F0H)
sono azzerati (mascherati) mentre gli
altri mantengono il loro valore. |
 | La tecnica appena descritta può essere facilmente
utilizzata anche per testare il
valore logico di un
determinato bit di un dato binario.
Supponendo di trattare con l'operando di prima (55H),
la maschera (AND)
0000 0100 (=04H)
forza a zero tutti i bit di AL
meno quello sotto test, il bit2,
che mantiene il suo valore. |
55H
0101 0101 AND
04H
0000 0100 =
-------------
04H
= 0000 0100 |
 | Basterà quindi una semplice verifica sul
risultato (di solito esercitata con un
confronto (CMP)
con 0): se esso vale
00H
significa che il bit sotto test è uguale a 0;
altrimenti, se è diverso da
00H,
significa che il bit sotto testo è uguale a 1. |
 | Con la stessa tecnica è facile
rendere maiuscole le lettere
minuscole; questa esigenza è molto sentita nella lettura
della
Tastiera, dato che è
pressocché impossibile prevedere se lo switch
CapsLock (il tasto con il lucchetto, a sinistra della
tastiera) è attivo (=maiuscole) o
disattivo (=minuscole). |
 | Di fatto basta conoscere il valore binario del
Codici Ascii
associato alle lettere per scoprire la
differenza tra una maiuscola (per esempio la
"A" =
41H
= 0100 0001) e la corrispondente minuscola
(la "a" =
61H
= 0110 0001): i 2 bytes differiscono solo
per il valore del rispettivo
bit5. |
61H
="a"
0110 0001 AND
DFH
=
1101 1111 =
-------------
41H
="A"
= 0100 0001 |
|
|
41H
="A"
0100 0001 AND
DFH
=
1101 1111 =
-------------
41H
="A"
= 0100
0001 |
 | La maschera con
1101 1111 (=DFH)
forza comunque a
0 il
bit5 del dato binario:
 | se è quello di una lettera dopo
l'operazione sarà certamente diventato quello della maiuscola corrispondente |
 | se non è quello di una lettera l'operazione
è controproducente, perchè il numero ottenuto non avrà più rapporti con
quello di partenza |
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|