Tutorial |
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 175 di 198] |
|
|
Questa istruzione (SHift logical Right) esegue lo spostamento (shift) verso destra dei bit dell'operando destinazione (un registro o una locazione di memoria) con ingresso di zero da sinistra. | |||||||
L'operando può avere dimensione di un byte, di una word o di una doubleword ( con 80386/486). | |||||||
Il meccanismo dell'istruzione risulta chiaro
osservando il suo schema funzionale; con riferimento ad un operando
a 8 bit, ogni volta che viene eseguita:
|
Risulta evidente che il valore iniziale della flag di Carry è ininfluente per il risultato di questa istruzione. | |
Il numero di volte che questo meccanismo viene eseguito dipende dal valore del secondo operando (contatore), di solito il numero 1 oppure il contenuto del registro CL; con processori dal 80286 è possibile specificare anche un numero fino a 255 (cioè esprimibile da un byte, come CL). | |
Nonostante il valore del secondo operando, comunque espresso, a partire dal 80286 il numero di volte massimo possibile è limitato dal processore a 31; in pratica i 3 bit più significativi del contatore vengono assunti comunque uguali a 000. Questa scelta si può far risalire alla necessità di mantenere basso il tempo totale d'esecuzione dell'istruzione e quindi il tempo d'attesa del servizio di una eventuale richiesta d'interruzione. | |
Nonostante l'apparenza l'esecuzione di più SHR con contatore a 1 risulta più veloce e consuma meno bytes in memoria di programma rispetto alla SHR eseguita con il numero specificato in CL. |
Le sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni ): |
SHR Destinazione,NumeroVolte | Destinazione << NumeroVolte SHR di Destinazione | |||||||||||||||
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 | ||
SHR |
DL,1 |
2 | 2 | 3 | 3 | no | 2 | # | # | # | ? | # | # | |||
SHR | BX,1 | |||||||||||||||
SHR | [Depo01],1 | 15+EA | 7 | 7 | 4 | 2 | 2,4 | |||||||||
SHR | [Depo02],1 | 23+EA | ||||||||||||||
SHR |
DL,CL |
8+4/bit | 5+n | 3 | 3 | no | 2 | |||||||||
SHR | BX,CL | |||||||||||||||
SHR | [Depo01],CL | 20+EA | 8+n | 7 | 4 | 2 | 2,4 | |||||||||
SHR | [Depo02],CL | 28+EA | ||||||||||||||
SHR |
AL,02 |
no | 5+n | 3 | 2 | no | 2,3 | |||||||||
SHR | [Depo01],02 | 8+n | 7 | 4 | 2 | 2,4 |
La tabella evidenzia che, oltre alla flag di Carry coinvolta fisicamente nello shift, vengono influenzate anche altreflag. | |
Il meccanismo logico della SHR (vedi figura) sottolinea che questa istruzione può essere usata per prendere decisioni in funzione del valore assunto dai singoli bit di un determinato dato, ma soprattutto si comporta come una divisione binaria per 2 con segno. | |
La figura mostra il codice necessario per sommare 10 a BL se i bit di AL sono trovati a 1: |
|
La figura seguente mostra le risorse richieste da questa istruzione in funzione degli operandi coinvolti (leggi le istruzioni): |
|
|
Scheda n° 07 | Istruzioni Cpu 80x86 | |||||||
Istruzione 175 - SHR |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|