Istruzione RRC del Microprocessore 8085: Operazione, Flag e Applicazioni
L'istruzione RRC (Rotate Right through Carry) nel microprocessore Intel 8085 esegue una rotazione a destra di 8 bit dell'Accumulatore (registro A) attraverso il flag Carry.
Dettagli Operativi
Prima: A = [A7 A6 A5 A4 A3 A2 A1 A0] CY = [CY] Dopo: A = [CY A7 A6 A5 A4 A3 A2 A1] CY = [A0]
Ogni bit si sposta a destra di una posizione:
- Bit 0 (LSB) → Carry Flag
- Carry Flag → Bit 7 (MSB)
- Bit 7-1 → Bit 6-0
Codifica Istruzione
Opcode: 0FH Byte: 1 T-States: 4 (Opcode fetch 4T) Flag Affetti: solo CY Flag Non Affetti: S, Z, AC, P
Comportamento Flag
- Carry (CY): Impostato al valore originale di A0. Consente concatenazione rotazioni multi-byte.
- Sign (S), Zero (Z), Auxiliary Carry (AC), Parity (P): Non affetti — a differenza di istruzioni aritmetiche/logiche.
Applicazioni Pratiche
1. Rotazione Destra Multi-Byte (16/24/32-bit)
; Ruota 16-bit HL a destra attraverso carry RRC ; Ruota L (byte basso), LSB → CY MOV A, H RRC ; Ruota H (byte alto), CY (vecchio LSB di L) → MSB di H MOV H, A ; Risultato: HL ruotato a destra 1 bit
2. Trasmissione Dati Seriale (Bit-Banging)
; Trasmetti byte in A serialmente (LSB prima) MVI B, 8 ; 8 bit TX_LOOP: RRC ; Prossimo bit → CY JNC SEND_0 ; Imposta pin TX alto JMP NEXT SEND_0: ; Imposta pin TX basso NEXT: DCR B JNZ TX_LOOP
3. Divisione Efficiente per 2 (Non Segnato)
; RRC approssima /2 ma sposta LSB in MSB ; Per vero /2: RAR (Rotate Right through Carry) con CY=0 ; RAR: A = [CY A7 A6 A5 A4 A3 A2 A1], CY = A0 ; Con CY=0: A = [0 A7 A6 A5 A4 A3 A2 A1] = A/2
4. Algoritmi Bitwise: CRC, Checksum, Crittografia
RRC/RAL (Rotate Left through Carry) sono elementi costitutivi per controlli di ridondanza ciclica, cifrari semplici e funzioni hash.
Istruzioni Correlate
| Istruzione | Operazione | Flag |
|---|---|---|
| RLC | Rotate Left (A7→CY, CY→A0) | solo CY |
| RAL | Rotate Left through Carry (CY→A0, A7→CY) | solo CY |
| RAR | Rotate Right through Carry (CY→A7, A0→CY) | solo CY |
| RRC | Rotate Right (A0→CY, CY→A7) | solo CY |
Distinzione Chiave: RRC vs RAR
- RRC: Circolare all'interno di A + CY. MSB riceve vecchio CY. Nessun input esterno.
- RAR: CY agisce da input. MSB riceve CY. Richiede setup CY. Usa RAR per divisione /2 pulita con CY=0.
Riepilogo
RRC è un'istruzione di 1 byte, 4 cicli che ruota l'accumulatore a destra attraverso il flag carry, influenzando solo CY. Essenziale per rotazione multi-precisione, I/O seriale e algoritmi bit-level sull'8085.