Tutorial
|
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 162 di 198] |
|
![]() |
|
![]() | Questa istruzione (ROtate Right) esegue la rotazione verso sinistra dei bit dell'operando destinazione (un registro o una locazione di memoria); rispetto alla RCR non attraversa la flag di Carry, ma mantiene in essa la copia del bit estratto. |
![]() | 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 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 è 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ù ROR con contatore a 1 risulta più veloce e consuma meno bytes in memoria di programma rispetto alla ROR eseguita con il numero specificato in CL. |
![]() | Le sue caratteristiche sono riassunte nella
seguente tabella (leggi le istruzioni
![]() |
ROR Destinazione, NumeroVolte | Destinazione << NumeroVolte ROR 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 | ||
ROR |
DL,1 |
2 | 2 | 3 | 3 | no | 2 | # | # | |||||||
ROR | BX,1 | |||||||||||||||
ROR | [Depo01],1 | 15+EA | 7 | 7 | 4 | 2 | 2,4 | |||||||||
ROR | [Depo02],1 | 23+EA | ||||||||||||||
ROR |
DL,CL |
8+4/bit | 5+n | 3 | 3 | no | 2 | |||||||||
ROR | BX,CL | |||||||||||||||
ROR | [Depo01],CL | 20+EA | 8+n | 7 | 4 | 2 | 2,4 | |||||||||
ROR | [Depo02],CL | 28+EA | ||||||||||||||
ROR |
AL,02 |
no | 5+n | 3 | 2 | no | 2,3 | |||||||||
ROR | [Depo01],AL | 8+n | 7 | 4 | 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 ROR (vedi figura) sottolinea la capacità di questa istruzione favorire le decisioni in funzione del valore assunto dai singoli bit di un determinato dato; in realtà la sua utilità è molto più evidente nella capacità di scambiare la parte alta con la parte bassa di un registro; |
![]() | La figura mostra un esempio con operandi a 8 bit: se in ingresso AL=5AH, in uscita sarà AL=A5H: |
|
![]() | 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 162 - ROR |
|
|
|
Home
![]() |
|
|||||||
|
Motore Ricerca |
|