# Calcolatori elettronici/Istruzioni per la manipolazione dei bit

Calcolatori elettronici
Copertina Tutti i moduli · Sviluppo
    CopertinaCalcolatori elettronici/Copertina
* L'evoluzione dei sistemi di elaborazioneCalcolatori elettronici/L'evoluzione dei sistemi di elaborazione
* Il progetto di circuiti logiciCalcolatori elettronici/Il progetto di circuiti logici
* I processoriCalcolatori elettronici/I processori
* Architettura 8086Calcolatori elettronici/Architettura 8086
* Unità di controlloCalcolatori elettronici/Unità di controllo
* Introduzione alle memorieCalcolatori elettronici/Introduzione alle memorie
* Le memorie ad accesso casualeCalcolatori elettronici/Le memorie ad accesso casuale
* Le memorie cacheCalcolatori elettronici/Le memorie cache
* Le memorie ad accesso serialeCalcolatori elettronici/Le memorie ad accesso seriale
* La memoria virtualeCalcolatori elettronici/La memoria virtuale
* La gestione dei dispositivi input/outputCalcolatori elettronici/La gestione dei dispositivi input/output
* Intel 8255Calcolatori elettronici/Intel 8255
* Intel 8259Calcolatori elettronici/Intel 8259
* I busCalcolatori elettronici/I bus
* Le architetture a pipelineCalcolatori elettronici/Le architetture a pipeline
* Assembler 8086
          IntroduzioneCalcolatori elettronici/Introduzione
   * Informazioni generaliCalcolatori elettronici/Informazioni generali
   * Istruzioni di trasferimento datiCalcolatori elettronici/Istruzioni di trasferimento dati
   * Istruzioni aritmeticheCalcolatori elettronici/Istruzioni aritmetiche
   * Istruzioni per il controllo del flussoCalcolatori elettronici/Istruzioni per il controllo del flusso
   * Istruzioni per la manipolazione dei bitCalcolatori elettronici/Istruzioni per la manipolazione dei bit
   * Le procedureCalcolatori elettronici/Le procedure
   * Istruzioni per il controllo del processoreCalcolatori elettronici/Istruzioni per il controllo del processore
   * Formato delle istruzioni macchina, tempi di esecuzioneCalcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione
Modifica il sommario
Le istruzioni per la manipolazione dei bit si suddividono in:
* istruzioni logiche: permettono di modificare o controllare uno o più bit;
* istruzioni di scorrimento: permettono di cambiare la posizione dei bit.

## Istruzioni logiche

Oltre ai registri per il trasferimento dei dati tra il processore e la periferica, vi sono dei registri di controllo/stato in cui ciascun bit informa il processore secondo un parametro sul funzionamento della periferica → il processore deve poter operare su singoli bit.
Le istruzioni logiche (bit a bit) permettono di operare su un singolo bit di una word per volta. La maschera seleziona i bit su cui operare: OR forza a 1 i bit selezionati dalla maschera, NOT inverte tutti i bit, e così via.
L'istruzione TEST esegue l'AND bit a bit restituendo attraverso il flag ZF se un bit vale 1.

## Istruzioni di scorrimento

Le istruzioni di scorrimento permettono di effettuare lo shift dei bit. Si suddividono in:
* istruzioni di shift
* istruzioni di rotazione
Il secondo operando contatore può essere un immediato o il registro CL.

### Istruzioni di shift

Le istruzioni SHL e SHR effettuano lo scalamento puro rispettivamente a sinistra e a destra, inserendo il valore 0 nel bit liberato e salvando il bit espulso nel flag CF.
Se i numeri sono senza segno, lo scalamento coincide con la moltiplicazione/divisione per 2.
Le istruzioni SAL e SAR effettuando moltiplicazioni/divisioni per 2 tenendo conto del segno del numero in complemento a 2: l'istruzione SAL è equivalente alla SHL, ma la SAR (verso destra) opera sui numeri negativi inserendo 1 nel bit liberato.

### Istruzioni di rotazione

Le istruzioni ROL e ROR reimmettono il bit espulso nel bit liberato, e lo salvano nel CF sovrascrivendo il valore precedente. Le istruzioni RCL e RCR sovrascrivono il CF dopo aver inserito lo stesso suo valore precedente nel bit liberato.