Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Numeri e Logica Binaria |
SCHEDA n° 09 [ 9 di 20] |
|
|
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:
|
|
Scheda n° 09 | Numeri e Logica Binaria | |||||||
Scheda n° 09 - 9 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|