Tutorial |
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 152 di 198] |
|
|
Questa istruzione (Rotate through Carry Right) esegue la rotazione verso destra dei bit dell'operando destinazione (un registro o una locazione di memoria) attraverso la flag di Carry. |
L'operando può avere dimensione di un byte, di una word o di una doubleword ( con 80386/486). | |||||||
In pratica i bit coinvolti nella rotazione sono così uno in più rispetto a quelli previsti dal registro operando. | |||||||
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 è determinante 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ù RCR con contatore a 1 risulta più veloce e consuma meno bytes in memoria di programma rispetto alla RCR eseguita con il numero specificato in CL. |
Le sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni ): |
RCR Destinazione, NumeroVolte | Destinazione << NumeroVolte RCR 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 | ||
RCR |
DL,1 |
2 | 2 | 9 | 3 | no | 2 | # | # | |||||||
RCR | BX,1 | |||||||||||||||
RCR | [Depo01],1 | 15+EA | 7 | 10 | 4 | 2 | 2,4 | |||||||||
RCR | [Depo02],1 | 23+EA | ||||||||||||||
RCR |
DL,CL |
8+4/bit | 5+n | 9 | 8,30 | no | 2 | |||||||||
RCR | BX,CL | |||||||||||||||
RCR | [Depo01],CL | 20+EA | 8+n | 10 | 9,31 | 2 | 2,4 | |||||||||
RCR | [Depo02],CL | 28+EA | ||||||||||||||
RCR |
AL,02 |
no | 5+n | 9 | 8,30 | no | 2,3 | |||||||||
RCR | [Depo01],AL | 8+n | 10 | 9 | 2 | 2,4 |
La tabella evidenzia che, oltre alla flag di Carry coinvolta fisicamente nella rotazione, viene influenzata anche la flag di Overflow: (assume valore definito solo se il secondo operando è diverso da 1, funzione del valore dei 2 bit più significativi; altrimenti è la flag è indefinita). | |
Il meccanismo logico della RCR (vedi figura) sottolinea uno degli usi più raffinati di questa istruzione: quello di prendere decisioni in funzione del valore assunto dai singoli bit di un determinato dato; 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 152 - RCR |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|