Sei sulla pagina 1di 51

DIPARTIMENTO

DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Fondamenti di INFORMATICA

L’architettura del calcolatore


Cos'è un computer?
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Cos'è un computer?
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

!  È un dispositivo in grado di
  Elaborare dati
  Memorizzare dati
  Trasferire dati da e verso l'esterno
  Eseguire operazioni di controllo e coordinamento tra le parti di cui è
composto

Controllo
Ambiente I/O
Esterno
Elaborazione Memoria
Architettura di Von Neumann
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

!  Dati e programmi sono


rappresentati allo stesso
modo (da sequenze di
bit) e contenuti nella
stessa memoria

János Lajos Margittai Neumann, 1903—


1957, nato in Ungheria e naturalizzato
americano col nome di John Von Neumann
La macchina di Von Neumann
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

RAM
CPU MEMORIA
CENTRALE

BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO

MM INPUT INPUT OUTPUT INTERFACCE

UNITA’
PERIFERICHE

7
Elementi principali
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  CPU o Unità di elaborazione


•  Elabora dati, coordina trasferimento dei dati
•  Esegue i programmi, cioè interpreta ed esegue le loro istruzioni

•  Memoria Centrale
•  Memorizza dati e programmi in esecuzione
•  Capacità limitata
–  Volatile
–  Accesso all’informazione molto rapido

10
Elementi principali
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Memoria secondaria o memoria di massa


"  Memorizza grandi quantità di dati e programmi
"  Persistente
"  Accesso molto meno rapido della memoria centrale
•  Unità periferiche (I/O)
"  Comunicazione con l’ambiente esterno
"  Tastiera, mouse, video, altoparlanti, stampanti
"  L’ambiente esterno non è sempre un utente umano (impianti
industriali, robot, strumenti di controllo)
•  Bus di sistema
"  Collega i componenti e consente scambio di dati

11
La macchina di Von Neumann
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

RAM
CPU MEMORIA
CENTRALE

BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO

MM INPUT INPUT OUTPUT INTERFACCE

UNITA’
PERIFERICHE

12
Le memorie di massa
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  L’informazione è memorizzata su supporto magnetico (o


ottico o altro...) di costo contenuto
•  Memoria permanente: le informazioni sono strutturate in file
gestiti dal sistema operativo
•  Tipi di memorie di massa:
"  Dischi rigidi: tempi di accesso dell’ordine della decina di millisecondi;
DIMENSIONE: Terabyte
"  Dischi stato solido (SSD): tempi d’accesso ridotti 0.1 millisecondi;
DIMENSIONI: centinaia di Megabyte
"  Nastri e Cartucce: per memorizzare informazioni “storiche” (back-up)
"  Chiavette USB: basate su memorie flash (2-64 GB)
"  CD-ROM e DVD-ROM: sola lettura

13
La macchina di Von Neumann
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

RAM
CPU MEMORIA
CENTRALE

BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO

MM INPUT INPUT OUTPUT INTERFACCE

UNITA’
PERIFERICHE

15
La memoria centrale
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Contiene le informazioni su cui la CPU sta operando


"  Contiene, cioè, sia i dati che le istruzioni dei programmi
"  Tutta l’informazione, per poter essere elaborata, deve passare dalla
memoria centrale (e successivamente caricata in uno dei registri della
CPU)
•  Dimensioni: Ordine dei GigaByte
•  Tempi di accesso: Ordine delle decine di nanosecondi
•  Memoria volatile: Se spengo il calcolatore si cancella

•  Rispetto alla memoria di massa


"  Molto più piccola
"  Non persistente
"  Decine/centinaia di migliaia di volte più veloce

16
La memoria centrale
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  La memoria è organizzata come una tabella


"  Ogni riga è detta cella e può contenere una parola
"  Una parola è una sequenza di n bit
"  Tutte le celle sono della stessa lunghezza (8, 16, 32, 64 bit)
"  La posizione di una cella è identificata da un indirizzo

•  Esistono due specifici registri per comunicare con la memoria


"  Registro indirizzi (AR) di dimensioni k (permette di specificare 2k indirizzi)
"  Registro dati (DR) di dimensione pari a quella della cella

•  Si possono eseguire due sole operazioni


"  Load: copia il contenuto della cella il cui indirizzo è specificato nel registro AR
nel registro DR
"  Store: copia il contenuto del registro DR nella cella di memoria il cui indirizzo
è specificato nel registro AR

17
La memoria centrale
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

h = 16 bit Parola (word)


Dati e
istruzioni 0
1

Registro indir. (AR) Registro dati (DR)


store

k = 10 bit load h = 16 bit

Indirizzo cella
Dato da
leggere/scrivere
1023
Spazio di
indirizzamento
210=1024
18
Organizzazione ed indirizzamento della memoria centrale
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Esempio di RAM
indirizzi delle celle 0

h =16 bit

Registro Indirizzi Registro Dati


(AR) (DR)
000100110010 1001011001010010

k = 12 bit 562
h = 16 bit
1001011001010010

cella selezionata

4.096 celle
4.095

19
Tecnologie di memoria centrale
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  La memoria centrale è realizzata con una tecnologia


chiamata RAM (Random Access Memory)
"  È realizzata mediante circuiti a transistor
"  È modificabile (leggibile e scrivibile) ma deve essere continuamente
alimentata per mantenere le informazioni (volatile)
"  All’accensione il suo contenuto è una sequenza casuale di 0 e 1
"  Le celle sono indirizzabili in un ordine qualunque (accesso random =
diretto)
"  Il tempo di accesso non dipende dalla cella

20
Tecnologie di memoria centrale
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Nel computer è presente anche un’altra memoria detta ROM


(Read-Only Memory)
"  È solo leggibile: le informazioni sono di solito scritte in modo
permanente dal costruttore
"  È caricata al momento della produzione del calcolatore
"  Vi si accede ogni qualvolta questo viene acceso
"  Per programmi protetti e definiti dal costruttore
•  Il BIOS (Basic I/O System) che carica in memoria il sistema
operativo quando la macchina viene accesa
"  Esistono di diversi tipi
•  “Erasable”, “Programmable”, (EPROM)
•  Memorie flash (evoluzione delle EPROM)
•  Una via intermedia tra Hardware e Software (Firmware)

21
La macchina di Von Neumann
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

RAM
CPU MEMORIA
CENTRALE

BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO

MM INPUT INPUT OUTPUT INTERFACCE

UNITA’
PERIFERICHE

22
La CPU
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

23
La CPU
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Contiene gli elementi circuitali che regolano il funzionamento del


calcolatore:
"  L’unità di controllo è responsabile della decodifica e dell’esecuzione delle
istruzioni. È la parte che “dirige” l’esecuzione di tutte le altre parti
"  L’orologio di sistema (clock) permette di sincronizzare le operazioni
temporizzando il funzionamento del calcolatore
"  L’unità aritmetico-logica (ALU) realizza le operazioni aritmetiche e logiche
eventualmente richieste per l’esecuzione dell’istruzione. È priva di facoltà di
scelta
"  I registri sono piccole memorie velocemente accessibili, utilizzate per
memorizzare risultati parziali o informazioni necessarie al controllo. L’insieme
dei valori contenuti nell'insieme di tutti i registri in un dato istante
dell’elaborazione viene chiamato contesto

25
La CPU
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  I registri della CPU:


"  Registro contatore di programma (PC) contiene l’indirizzo di memoria della
prossima istruzione da eseguire
"  Registro istruzione corrente (CIR) contiene l’istruzione correntemente in
esecuzione
"  Registri operandi (A, B) contiene gli operando su cui eseguire la prossima
operazione con la ALU
"  Registri di lavoro contengono i dati utilizzati di frequente nelle operazioni o
risultati intermedi (in genere i registri operandi e i registri di lavoro sono stati
uniti in un’unica struttura contenente una serie di registri chiamato banco di
registri)
"  Registro di stato (SR) contiene alcune informazioni sull’esecuzione dell’ultima
operazione della ALU (bit di overflow, bit di segno, bit zero)
"  Registro indirizzi (AR) contiene un indirizzo di memoria in cui fare
un’operazione di lettura/scrittura
"  Registro dati (DR) contiene un dato da trasferire alla memoria o ricevuto dalla
memoria
"  Registro interruzioni (INTR) contiene informazioni sullo stato di
funzionamento delle periferiche

27
Formato delle istruzioni in linguaggio macchina
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Costituite (ovviamente) da sequenze di 0 e 1


"  Campo codice operativo (obbligatorio) specifica l’operazione da
eseguire
"  Campo operandi (facoltativo) indica i dati da utilizzare (gli operandi
possono essere uno o due)
•  Può contenere direttamente il valore o l’indirizzo della cella che contiene
il valore (riferimento a una variabile)
"  FORMATO ISTRUZIONE:

Cod. operativo Operandi

28
Formato delle istruzioni in linguaggio macchina
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Istruzioni di elaborazione dei dati


"  Eseguono un’operazione aritmetico/logica/relazionale su due dati
specificati in due registri (in genere A e B) o in un registro ed una
costante e salvano il risultato in un registro (A)
•  Istruzioni di trasferimento dei dati
"  Eseguono un’operazione di trasferimento di un dato da un registro di
lavoro alla memoria o viceversa
"  Possono esserci anche operazioni di trasferimento più complesse con
le periferiche
•  Istruzioni di salto (modifica del flusso di controllo)
"  Valutano una condizione semplice (in genere confrontano il
contenuto di un registro con il valore 0) e se la condizione risulta vera
modificano il contenuto del registro PC con un valore contenuto in un
altro registro o specificato nell’istruzione stessa

29
Fasi del Ciclo di CPU
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  La CPU esegue ciclicamente tre fasi


"  Durante una fase viene eseguita un’istruzione

•  Prelievo (o Fetch):
"  Contenuto di registro PC trasferito in registro AR
"  Lettura da memoria centrale trasferito in registro DR
"  Contenuto del registro DR trasferito in registro CIR
"  Incremento del contenuto di registro PC
•  Decodifica: interpretazione codice operativo
•  Esecuzione: attivazione esecuzione pertinente all’operazione
"  Dipendono dal tipo di istruzione

30
Fasi del Ciclo di CPU
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Esecuzione delle istruzioni di elaborazione


"  Il contenuto di due registri (A e B o anche un registro di lavoro) viene
inviato alla ALU
"  L’ALU esegue l’operazione
"  Il risultato viene salvato in un registro di lavoro (A o B o un altro
registro di lavoro)

•  Esecuzione delle istruzioni di scrittura in memoria


"  Il contenuto di un registro di lavoro viene trasferito al registro DR
"  L’indirizzo viene trasferito nel registro AR
"  Viene richiesta l’operazione di scrittura

31
Fasi del Ciclo di CPU
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Esecuzione delle istruzioni di lettura da memoria


"  L’indirizzo viene trasferito nel registro AR
"  Viene richiesta l’operazione di lettura
"  Il contenuto del registro DR viene trasferito in un registro di lavoro

•  Esecuzione delle istruzioni di salto


"  Il contenuto di un registro viene inviato alla ALU
"  La ALU valuta la condizione (e.g. valore del registro == 0 ?)
"  Se il risultato è vero (si controlla il registro di stato), il contenuto del
registro PC viene modificato copiandoci il contenuto di un altro
registro di lavoro o una costante specificata nell’istruzione

32
Esempio di esecuzione di un programma
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Esempio di esecuzione di istruzioni:

leggi un valore da input e mettilo nella variabile a


leggi un valore da input e mettilo nella variabile b
leggi un valore da input e mettilo nella variabile c
leggi un valore da input e mettilo nella variabile c
Calcola (a+b)*(c+d) e metti il risultato in z
Stampa il contenuto di z

33
Esempio di esecuzione di un programma
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Esempio di segmento di codice C:

scanf(“%d”,&a);
scanf(“%d”,&b);
scanf(“%d”,&c);
scanf(“%d”,&d);
z=(a+b)*(c+d);
printf(“%d”,z);

34
Esempio di esecuzione di un programma
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Codice macchina risultante (semplificazione…):


0100000000010000 Leggi un valore dall’input e mettilo nella cella 16 (a)
0100000000010001 Leggi un valore dall’input e mettilo nella cella 17 (b)
0100000000010010 Leggi un valore dall’input e mettilo nella cella 18 (c)
0100000000010011 Leggi un valore dall’input e mettilo nella cella 19 (d)
0000000000010000 Carica il contenuto della cella 16 (a) nel registro A
0001000000010001 Carica il contenuto della cella 17 (b) nel registro B
0110000000000000 Somma i registri A e B
0010000000010100 Deposita il contenuto di A nella cella 20 (z) (ris.parziale)
0000000000010010 Carica il contenito della cella 18 (c) nel registro A
0001000000010011 Carica il contenito della cella 19 (d) nel registro B
0110000000000000 Somma i registri A e B
0001000000010011 Carica il contenuto della cella 20 (z) (ris. parziale) in B
1000000000000000 Moltiplica i registri A e B
0010000000010100 Deposita il contenuto di A nella cella 20 (z) (ris. totale)
0101000000010100 Scrivi il contenuto della cella 20 (z) (ris. totale) in output
1101000000000000 Halt

35
Esempio di esecuzione di un programma
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Organizzazione dei Cella 0 0100000000010000


1 0100000000010001
dati in memoria: 2 0100000000010010
3 0100000000010011
4 0000000000010000
5 0001000000010001
6 0110000000000000
7 0010000000010100
8 0000000000010010
9 0001000000010011
10 0110000000000000
11 0001000000010011
12 1000000000000000
13 0010000000010100
14 0101000000010100
15 1101000000000000
Spazio riservato per a 16
Spazio riservato per b 17
Spazio riservato per c 18
Spazio riservato per d 19
Spazio riservato per z 20

36
Esempio di esecuzione di un programma
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Fetch della prima istruzione:


Passo 1 Memoria centrale (MM)
0 0100000000010000
Passo 2

PC 0000000000

Passo 4
Il valore di AR 0000000000
PC viene
incrementato
0000000001 1023

DR 0100000000010000

Passo 3
CIR 0100000000010000
37
Esempio di esecuzione di un programma
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Decode della prima istruzione:

CIR 0100000000010000

Codice operativo 0100 = leggi da input


La seconda parte dell’istruzione permette
di stabilire l’indirizzo di memoria dove
salvare il dato letto dall’input
000000010000 = 16

38
Esempio di esecuzione di un programma
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Execute della prima istruzione:


Memoria centrale (MM)
0
Indirizzo operando
00000010000 = cella 16
Passo 3

CIR 0100000000010000 16 0001000000011111

Passo 1

AR 0000010000 1023

DR 0001000000011111
Passo 2

Valore di a letto dall’input (es. 4127) PDR 0001000000011111


39
La macchina di Von Neumann
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

RAM
CPU MEMORIA
CENTRALE

BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO

MM INPUT INPUT OUTPUT INTERFACCE

UNITA’
PERIFERICHE

40
Il bus di sistema
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Insieme di connettori (conduttori elettrici) che trasportano


bit di informazioni collegando fra di loro l’unità di
elaborazione, la memoria e le varie interfacce di ingresso/
uscita

•  I trasferimenti sono gestiti dalla CPU (modalità master/slave)


e si chiamano cicli del bus, che con la sua capacità ne
determina la velocità

41
Componenti del bus di sistema
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Bus Dati
"  Trasferisce dati da master a slave e viceversa

•  Bus Indirizzi
"  Trasferisce indirizzi, per esempio l’indirizzo di un dato dal registro
indirizzi alla memoria, per accedere al dato stesso

•  Bus di Controllo
"  Read/Write
"  Errore
"  Richiesta e risposta (lavoro eseguito)
"  Memoria o I/O

42
Componenti del bus di sistema
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

CPU
Registro di stato (SR)
Registro contatore
di programma (PC)
A Unità
aritmetico
Registro logica
interruzioni (INTR) (ALU)
B

Registro istruzione
corrente (CIR)
Unità di controllo
(CU)
Clock

Registro indirizzi
Registro dati (DR) (AR)

Bus di sistema
43
Operazioni di trasferimento sul bus
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Operazione di lettura da memoria centrale (LOAD):


1.  la CPU carica l’indirizzo della parola di memoria nel registro AR e lo
trasmette alla memoria via bus indirizzi
2.  la CPU invia il comando di Read Memory sul bus di controllo
3.  la memoria trasmette sul bus dati il contenuto della parola verso il
registro DR
4.  la memoria segnala al processore sul bus di controllo che l’operazione
è stata completata con successo: il dato si trova nel registro dati

44
Operazioni di trasferimento sul bus
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Passo 3 Passo 1
0
SR Passo 2
PC
A
ALU Passo 4
INTR B
123
123 42
CIR
CU
Ck

42
DR 123
AR
1023
READ
OK

45
Operazioni di trasferimento sul bus
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Operazione di scrittura in memoria centrale (STORE):


1.  la CPU carica indirizzo della parola di memoria dove si vuole scrivere
nel registro AR e lo trasmette alla memoria via bus indirizzi
2.  la CPU carica nel registro DR la parola da scrivere in memoria e tramite
il bus dati il valore viene trasmesso alla memoria
3.  la CPU invia il comando di Write Memory sul bus di controllo
4.  La memoria esegue l’operazione di scrittura del valore ricevuto sul bus
dati all’indirizzo di memoria segnalato
5.  la memoria segnala al processore sul bus di controllo che l’operazione
è stata completata con successo: il dato si trova nella parola di
memoria destinazione

46
Operazioni di trasferimento sul bus
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Passo 1
Passo 2
SR Passo 30
PC
A Passo 5
ALU
INTR B
123
123 70
42
CIR
CU
Ck Passo 4

70
DR 123
AR
1023
WRITE
OK

47
La macchina di Von Neumann
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

RAM
CPU MEMORIA
CENTRALE

BUS INDIRIZZI
BUS DATI
BUS DI CONTROLLO

MM INPUT INPUT OUTPUT INTERFACCE

UNITA’
PERIFERICHE

48
Interfacce di I/O
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Consentono il collegamento tra elaboratore e periferiche


•  Possono essere dispositivi elettromeccanici
•  Contengono registri accessibili dalla CPU per
"  Inviare comandi alla periferica
•  Registro comandi periferica (PCR) – collegato al bus di controllo
"  Scambiare dati
Interfaccia periferica 1
•  Registro dati della periferica (PDR) –
collegato al bus dati Peripheral Data
Register (PDR)
"  Controllare il funzionamento della periferica Peripheral Command
•  Registro stato periferica (PSR) – pronto, Register (PCR)
occupato, errore, ... Peripheral State
Register (PSR)

Bus di sistema

49
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

•  Linguaggio Assembly

50
Linguaggio Assembly
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

#  L’insieme di istruzioni accettate (cioè decodificate ed eseguite) da


una CPU + il sistema di codifica

#  Repertorio limitato, istruzioni classificabili in tre gruppi:


#  Trasferimento dati: movimenti di dati tra CPU e memoria e tra

CPU e dispositivi di I/O


#  Istruzioni aritmetico-logiche: operazioni richieste alla ALU

#  Istruzioni di controllo: operazioni che regolano l’esecuzione

del programma
Esempio di istruzioni in linguaggio assemblatore
(o “assembly” ) DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Cod. binario Cod. simbolico Significato


0000 LOADA poni in A il valore della cella <op> della RAM
0001 LOADB poni in B il valore della cella <op> della RAM
0010 STOREA poni nella cella <op> della RAM il valore in A
0011 STOREB poni nella cella <op> della RAM il valore in B
0110 ADD poni in A il valore di A+B restituito dalla ALU
0111 DIF poni in A il valore di A-B restituito dalla ALU
1010 JMP la prossima istr. da eseguire è nella cella <op>
1011 JMPZ se A=0, la prossima istr. da eseguire è in <op>
1101 HALT fine del programma
0100 READ leggi (I/O) un valore e ponilo nella cella <op>
0101 WRITE scrivi (I/O) il valore contenuto nella cella <op>
0110 ...

52
Piccolo esempio di programma assembly
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Cella di mem. Cod. Oper. Operando


0 READ 8
1 READ 9
2 LOADA 8
3 LOADB 9
4 ADD
5 STOREA 8
6 WRITE 8
7 HALT
8 (INT)
9 (INT)
Che cosa fa ?

53
Un altro esempio
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Calcolare l’espressione (x + y) - (z + w)
1.  poni in memoria centrale (rispettivamente nelle celle
16, 17, 18 e 19) i valori di x, y, z, e w
2.  esegui l’addizione di z e w:
1.  copia da cella 18 a registro A
2.  copia da cella 19 a registro B
3.  somma i due registri (operazione eseguita dalla ALU che
lascia il risultato nel registro A)
3.  immagazzina risultato (che ora è nel registro A) nella
cella 20

54
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

4.  esegui l’addizione di x e y:


1.  copia da cella 16 a registro A;
2.  copia da cella 17 a registro B;
3.  somma i registri (operazione eseguita dalla ALU
che lascia il risultato nel registro A);
5.  esegui la sottrazione di (x + y) e (z + w):
1.  copia da cella 20 a registro B;
2.  sottrai il contenuto dei due registri (operazione
eseguita dalla ALU che lascia il risultato nel reg. A);

55
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

4.  scrivi il risultato sul dispositivo di uscita:


1.  copia da registro A a cella 20;
2.  copia da cella 20 a registro dati della periferica
5.  arresta l’esecuzione del programma

56
Il programma in assembly
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

0-3: acquisizione dei dati


16-20: spazio per rappresentare i dati
"  le cinque variabili simboliche X, Y, Z, W, RIS
menzionate nel programma. Ognuna identifica una
cella di memoria
•  I nomi simbolici sono più comodi degli indirizzi, ma
bisogna supporre che qualcuno (il compilatore!)
gestisca la corrispondenza con un numero opportuno
di celle allocate per rappresentare i dati
4-6 e 8-10: Somme (Z+W e X+Y)
7: salvataggio del risultato intermedio
11: recupero del risultato intermedio
14: Visualizzazione del risultato

57
Il programma in assembly
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

0 READ X
1 READ Y
2 READ Z
3 READ W
4 LOADA Z
5 LOADB W
6 ADD
7 STOREA RIS
8 LOADA X
9 LOADB Y
10 ADD
11 LOADB RIS
12 DIF
13 STOREA RIS
14 WRITE RIS
15 HALT
16 ...int....(X)....
17 ...int....(Y)....
18 ...int....(Z)....
19 ...int....(W)....
20 ...int...(RIS)... 58

Potrebbero piacerti anche