Calcolatori elettronici/Introduzione

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
CopertinaCalcolatori elettronici/Copertina
  1. L'evoluzione dei sistemi di elaborazioneCalcolatori elettronici/L'evoluzione dei sistemi di elaborazione
  2. Il progetto di circuiti logiciCalcolatori elettronici/Il progetto di circuiti logici
  3. I processoriCalcolatori elettronici/I processori
  4. Architettura 8086Calcolatori elettronici/Architettura 8086
  5. Unità di controlloCalcolatori elettronici/Unità di controllo
  6. Introduzione alle memorieCalcolatori elettronici/Introduzione alle memorie
  7. Le memorie ad accesso casualeCalcolatori elettronici/Le memorie ad accesso casuale
  8. Le memorie cacheCalcolatori elettronici/Le memorie cache
  9. Le memorie ad accesso serialeCalcolatori elettronici/Le memorie ad accesso seriale
  10. La memoria virtualeCalcolatori elettronici/La memoria virtuale
  11. La gestione dei dispositivi input/outputCalcolatori elettronici/La gestione dei dispositivi input/output
  12. Intel 8255Calcolatori elettronici/Intel 8255
  13. Intel 8259Calcolatori elettronici/Intel 8259
  14. I busCalcolatori elettronici/I bus
  15. Le architetture a pipelineCalcolatori elettronici/Le architetture a pipeline
  16. Assembler 8086
IntroduzioneCalcolatori elettronici/Introduzione
  1. Informazioni generaliCalcolatori elettronici/Informazioni generali
  2. Istruzioni di trasferimento datiCalcolatori elettronici/Istruzioni di trasferimento dati
  3. Istruzioni aritmeticheCalcolatori elettronici/Istruzioni aritmetiche
  4. Istruzioni per il controllo del flussoCalcolatori elettronici/Istruzioni per il controllo del flusso
  5. Istruzioni per la manipolazione dei bitCalcolatori elettronici/Istruzioni per la manipolazione dei bit
  6. Le procedureCalcolatori elettronici/Le procedure
  7. Istruzioni per il controllo del processoreCalcolatori elettronici/Istruzioni per il controllo del processore
  8. Formato delle istruzioni macchina, tempi di esecuzioneCalcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

Struttura generale di un programma[modifica]

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[modifica]

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[modifica]

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.