# Calcolatori elettronici/Introduzione

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

## Struttura generale di un programma

Un programma è sempre composto da tre pseudo-istruzioni, dette direttive, che non sono delle istruzioni per il processore ma solo delle indicazioni specifiche dell'assemblatore:
* .STACK indica il contenuto del segmento (= parte di memoria) stack;
* .DATA indica il contenuto del segmento per le variabili, dichiarate con <nome_simbolico> <tipo> <valore_di_inizializzazione|?>;
* .CODE indica il contenuto del segmento per il codice. All'interno della porzione .CODE, le istruzioni .STARTUP e .EXIT si occupano di comunicare al sistema operativo l'avvio e il termine dell'esecuzione.

## Istruzioni

Le variabili simboliche evitano di richiedere l'uso diretto degli indirizzi.
* MOV scrive un valore in memoria: MOV <cella_di_destinazione> <valore>
* ADD somma due valori e memorizza il risultato all'interno della cella di memoria del primo operando: ADD <primo_operando> <secondo_operando>

### Input/output

Il sistema operativo offre delle procedure di tipo driver che aiutano le applicazioni a comunicare con le periferiche. I driver si preoccupano di compiere direttamente le operazioni di input/output, conoscendo gli indirizzi di periferica.
L'istruzione INT 21h (interrupt) simula l'input di una periferica, interrompendo il programma in esecuzione e attivando una procedura driver, la quale recupera il valore contenuto nel registro AH:
* 1: non appena viene digitato un carattere sulla tastiera esso viene memorizzato in AL in codifica ASCII;
* 2: su schermo viene visualizzato il contenuto di DL.
I numeri devono sempre essere convertiti in codifica ASCII.