Tutorial |
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 007 di 198] |
|
|
Questa istruzione esegue la and logica dei 2 operandi (destinazione e sorgente). Il risultato è lasciato nell'operando di destinazione, al posto di quello di partenza. | |
Gli operandi possono avere dimensione di un byte, di una word o di una doubleword ( con 80386/486). | |
Le sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni ): |
AND Destinazione, Sorgente AND 1° dato, 2° dato |
Destinazione << Destinazione AND Sorgente | |||||||||||||||
Esempio di Applicazione |
Cicli di Clock | Mem Acces |
N° Bytes |
Flag influenzate | ||||||||||||
Mnemonico | Operandi | 86 | 268 | 386 | 486 | O | D | I | T | S | Z | A | P | C | ||
AND |
DX,BX |
3 | 2 | 2 | 1 | no | 2 | 0 | # | ? | # | # | 0 | |||
AND |
CL,[Depo01] |
9+EA | 7 | 6 | 2 | 1 | 2,4 | |||||||||
AND |
CX,[Depo02] |
13+EA | ||||||||||||||
AND |
[Depo01],BL |
16+EA | 7 | 7 | 3 | 2 | 2,4 | |||||||||
AND |
[Depo02],BX |
24+EA | ||||||||||||||
AND |
SI,1234H |
4 | 3 | 2 | 1 | no | 3,4 | |||||||||
AND |
[Depo01],02H |
17+EA | 7 | 7 | 3 | 2 | 3,6 | |||||||||
AND |
[Depo02],1234H |
24+EA | ||||||||||||||
AND |
AL,02 |
4 | 3 | 2 | 3 | no | 2,3 |
La tabella evidenzia le 3 tipologie degli
operandi di questa istruzione:
|
Il meccanismo della and logica (vedi figura) sottolinea uno degli usi più raffinati di questa istruzione: quello di mascherare alcuni bit di un determinato dato; la figura mostra chiaramente che i bit che corrispondono ai bit a 0 della maschera sono azzerati (mascherati) mentre gli altri mantengono il loro valore. |
55H
0101 0101 AND F0H 1111 0000 = ------------- 50H = 0101 0000 |
Spesso questa tecnica è utilizzata per testare il valore logico di un determinato bit di un registro. Supponendo di assumere un dato a 8 bit da una periferica puntata da DX in AL, la maschera (AND) del dato ricevuto con 0000 0100 (=04H) forza a zero tutti i bit di AL meno quello sotto test, il bit2, che mantiene il suo valore. | ||||||||||||||||||||||||||||||||||||
Possiamo dunque collaudare questa tecnica nei
2 modi possibili; il codice che offre questo servizio è mostrato qui di
seguito: il programma continua a leggere la periferica e a mascherare il
risultato con 0000 0100 (=04H),
aspettando che il bit passi a 1 o
a 0:
| ||||||||||||||||||||||||||||||||||||
Un altro significativo uso di questa
istruzione consiste nel 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 o disattivo; la maschera con 1101
1111 (=DFH) forza
comunque a 0 il bit5 del dato letto,
trasformando appunto le minuscole (es: "a" = 61H
= 0110 0001) in maiuscole (es"A"
= 41H = 0100
0001):
|
La figura seguente mostra le risorse richieste da questa istruzione in funzione degli operandi e del tipo di indirizzamento istruzioni): |
|
|
Scheda n° 07 | Istruzioni Cpu 80x86 | |||||||
Istruzione 007 - AND |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|