Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 151 di 198] 

    

    RCL - Rotazione verso sinistra attraverso la flag di carry
     
bulletQuesta istruzione (Rotate through Carry Left) esegue la rotazione verso sinistra dei bit dell'operando destinazione (un registro o una locazione di memoria) attraverso la flag di Carry.
bulletL'operando può avere dimensione di un byte, di una word o di una doubleword ( con 80386/486).
bulletIn pratica i bit coinvolti nella rotazione sono così uno in più rispetto a quelli previsti dal registro operando.
bulletIl meccanismo dell'istruzione risulta chiaro osservando il suo schema funzionale; con riferimento ad un operando a 8 bit, ogni volta che viene eseguita:
bullettutti i bit dell'operando vengono spostati (Shift) di un posto verso sinistra.
bulletil valore corrente della flag di Carry prende il posto lasciato libero dal bit meno significativo (bit0) dell'operando.
bulletil bit più significativo (bit7 a 8 bit) dell'operando sarebbe perduto, spinto fuori dall'operando, ma viene invece memorizzato nella flag di Carry, al posto di quello che è rientrato da destra.
     
     
bulletRisulta evidente che il valore iniziale della flag di Carry è determinante per il risultato di questa istruzione.
bulletIl 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).
bulletNonostante 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.
bulletNonostante l'apparenza l'esecuzione di più RCL con contatore a 1 risulta più veloce e consuma meno bytes in memoria di programma rispetto alla RCL eseguita con il numero specificato in CL.
bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
 RCL Destinazione,NumeroVolte  Destinazione  << NumeroVolte  RCL di  Destinazione  

Esempio di Applicazione

Cicli di Clock Mem
Acces

Bytes
Flag   influenzate
Mnemonico Operandi 86 268 386 486 O D I T S Z A P C

RCL

DL,1

2 2 9 3 no 2 #                      #
RCL BX,1
RCL [Depo01],1 15+EA 7 10 4 2 2,4
RCL [Depo02],1 23+EA
                    

RCL

DL,CL

8+4/bit 5+n 9 8,30 no 2
RCL BX,CL
RCL [Depo01],CL 20+EA 8+n 10 9,31 2 2,4
RCL [Depo02],CL 28+EA
                    

RCL

AL,02

no 5+n 9 8,30 no 2,3
RCL [Depo01],02 8+n 10 9 2 2,4
         
bulletLa 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).
bulletIl meccanismo logico della RCL (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:
     

Addr 

Codifica Masm

Istruzione

0100
0102
0105
0107
0109
010C
010E
B3 00         
B9 0008
D0 D0
73 03
80 C3 0A
E2 F7
90


cerca:



noAdd: 
MOV BL,00H        
MOV CX,8
RCL AL,1
JNC noAdd
ADD BL,10
LOOP cerca
NOP
     
bulletLa figura seguente mostra le risorse richieste da questa istruzione in funzione degli operandi coinvolti (leggi le istruzioni):
          

Addr

Codifica Masm

Sequenza Bytes

Istruzione

0100
0101
55
55AA
55
AA 55
Depo01 
Depo02
DB 55H
DW 55AAH
---- ---------------- ----------------- ------- ----------------------
0103
0105
0107
010A
010E
0112
0114
0116
0119
011D
0121
0124
0127
012B
0130
D0 D2
D1 D3
66 D1 D0
D0 16 0100 
D1 16 0101
D2 D2
D3 D3
66 D3 D0
D2 16 0100 
D3 16 0101
C0 D2 08
C1 D3 08
66 C1 D0 08
C0 16 0100 08
C1 16 0101 08
D0 D2
D1 D3
66 D1 D0
D0 16 00 01
D1 16 01 01
D2 D2
D3 D3
66 D3 D0
D2 16 00 01
D3 16 01 01
C0 D2 08
C1 D3 08
66 C1 D0 08
C0 16 00 01 08
C1 16 01 01 08
RCL DL,1
RCL BX,1
RCL EAX,1
RCL [Depo01],1
RCL [Depo02],1
RCL DL,CL
RCL BX,CL
RCL EAX,CL
RCL [Depo01],CL
RCL [Depo02],CL
RCL DL,8
RCL BX,8
RCL EAX,8
RCL [Depo01],8
RCL [Depo02],8

    

Pagina Precedente Scheda n° 07 Pagina Successiva Istruzioni Cpu 80x86 Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Istruzione 151 - RCL

    

SCHEDE » 1.Header EXE 2.PseudoOp MASM 3.Differenza tra Macro e Procedure
4.
Tabella Vettori 5.PSP 6.Stack 7.Istruzioni 80x86
8.La misura dell'Informazione 9.Numeri e Logica Binaria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati