49
1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

Embed Size (px)

Citation preview

Page 1: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

1

STRUTTURA E LOGICA DI FUNZIONAMENTO

DEL COMPUTER

Page 2: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

2

Un computer e’ una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono portati in uscita. Per esempio, se voglio sommare due numeri, prima devo inserire all’interno del computer i due numeri che devono essere sommati, poi eseguo l’operazione di somma e quindi porto in uscita, all’esterno, il risultato dell’operazione. Un computer e’ composto dalle seguenti unita’:

OUTPUT

INPUT

MEMORIA CONTROLLO ARITMETICO LOGICA

Page 3: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

3

UNITA’ DI INPUT L’unita’ di input rappresenta la porta d’ingresso del computer. Attraverso questa unita’ entrano dall’esterno le informazioni che verranno successivamente elaborate. UNITA’ DI OUTPUT

Questa unita’ rappresenta la porta d’uscita del computer. Attraverso questa unita’ vengono portati all’esterno i risultati finale delle elaborazioni eseguite sui dati in ingresso.

INPUT

OUTPUT

Page 4: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

4

UNITA’ DI MEMORIA Questa unita’ viene utilizzata per depositare e conservare tutte le informazioni utilizzate dal computer. La memoria e’ composta da tante celle ognuna delle quali e’ contraddistinta da un numero progressivo detto indirizzo. Le informazioni che vi sono depositate vengono reperite attraverso l’indirizzo della cella occupata. Quando il computer viene spento tutte le informazioni presenti nella memoria svaniscono.

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

Page 5: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

5

UNITA’ ARITMETICO-LOGICA Sezione Sezione Aritmetica Logica Questa unita’ e’ divisa in due sezioni: sezione aritmetica e sezione logica. Nella sezione aritmetica vengono eseguite le quattro operazioni fondamentali (somma, sottrazione, moltiplicazione e divisione) sui valori presenti nei primi due registri. Il risultato viene collocato in un registro detto registro accumulatore. Un registro e’ una cella che contiene informazioni; questa celle particolari si trovano nell’unita’ aritmetico-logica e nella unita’ di controllo. Nella sezione logica avvengono i confronti (maggiore, minore, uguale, diverso) tra le informazioni contenute nei primi due registri. Il risultato e’ un SI o un NO (0, 1) e viene depositato in un apposito registro.

Page 6: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

6

UNITA’ DI CONTROLLO L’unita’ di controllo governa il funzionamento del computer, esegue cioe’ le operazioni che consentono di elaborare i dati in ingresso secondo una sequenza prestabilita per produrre i risultati desiderati. Questa sequenza di operazioni viene detta programma. In altre parole l’unita’ di controllo esegue le istruzioni del programma. L’unita’ di controllo contiene due registri fondamentali: - il Program Counter che contiene l’indirizzo della prossima istruzione, - il Registro Istruzione che contiene l’istruzione in esecuzione.

Page 7: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

7

SCHEMA LOGICO DI UN COMPUTER.

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

INPUT

OUTPUT

Page 8: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

8

Vediamo, ora, alcune delle principali operazioni o istruzioni che un computer e' in grado di eseguire: LETTURA Questa istruzione permette di depositare un dato, proveniente dall’esterno attraverso l’unita’ di input, in una determinata cella di memoria. Questa operazione viene eseguita, come sempre, dall’unita’ di controllo che provvede a collegare le unita’ di input con la memoria. Il dato che viene inserito all’interno del computer prende il nome di variabile in quanto potra’ assumere di volta in volta diversi valori. Il programmatore assegnera’ ad ogni variabile del programma un nome adatto a facilitarne la sua individuazione. L’unita di controllo, invece, individua le diverse variabili in base al numero delle celle di memoria in cui vengono conservate. In altre parole l’unita’ di controllo riconosce le diverse variabili in base al loro indirizzo di memoria. Pertanto, prima di eseguire un qualsiasi programma, occorre associare ad ogni variabile l’indirizzo della cella di memoria in cui verra’ depositata. Per ordinare al computer l’esecuzione di questa operazione occorre utilizzare un nome simbolico in grado di identificarla senza equivoci. Supponiamo di utilizzare per l’operazione di lettura la parola READ seguita dal nome della variabile.

Page 9: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

9

Esempio: READ A (supponiamo di inserire la variabile A nella cella 1100)

0000

0100

1000

0001

1100

2

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

READ 1100

INPUT

OUTPUT

2

Page 10: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

10

S O M M A Questa istruzione permette di sommare il contenuto di due variabili numeriche. L’operazione di somma viene eseguita attraverso le seguenti fasi: - Viene copiato dalla memoria il contenuto della prima variabile e portato nel primo registro

della sezione aritmetica dell’unita’ aritmetico logica. - Viene copiato dalla memoria il contenuto della seconda variabile e portato nel secondo registro

della sezione aritmetica dell’unita’ aritmetico logica. - Viene eseguita l’operazione di somma ed il risultato compare nel registro accumulatore. Supponiamo di utilizzare per l’operazione di somma la parola SUM seguita dai nomi delle due variabili contenenti gli addendi. Nell’esempio che segue si suppone di sommare il contenuto di due variabili chiamate A e B collocate in memoria rispettivamente all’indirizzo 1100 e 1101.

Page 11: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

11

Esempio: SUM A, B

0000

0100

1000

0001

1100

2

0101

1001

1101

3

0010

0110

1010

1110

0111

1011

1111

0011 2

3

5

SUM 1100, 1101

INPUT

OUTPUT

1

2

3

Page 12: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

12

MUOVI DAL REGISTRO ACCUMULATORE Questa istruzione consente di copiare il contenuto del registro accumulatore e di depositarlo all’interno di una determinata cella di memoria. Supponiamo di utilizzare per questa operazione la parola MOV_TO seguita dal nome della variabile associata alla cella di memoria in cui verra’ copiato il contenuto del registro accumulatore.

Page 13: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

13

Esempio: MOV_TO C (supponiamo che la variabile C sia nella cella 1110)

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

5

0111

1011

1111

0011

5

MOV_TO 1110

INPUT

OUTPUT

Page 14: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

14

SCRITTURA Questa istruzione permette di copiare un dato depositato in una determinata cella di memoria e di portarlo all’esterno, attraverso l’unita’ di output. Supponiamo di utilizzare per l’operazione di scrittura la parola WRITE seguita dal nome della variabile.

Page 15: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

15

Esempio: WRITE C (supponiamo che la variabile C sia nella cella 1110)

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

5

0111

1011

1111

0011

WRITE 1110

INPUT

OUTPUT

Page 16: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

16

ARRESTO DELL’ELABORAZIONE Questa istruzione consente di interrompere l’esecuzione di un programma. Viene di norma utilizzata alla fine di ogni programma. Supponiamo di utilizzare per l’operazione di arresto la parola STOP. Si noti che questa istruzione non e’ riferita ad alcuna variabile.

Page 17: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

17

Esempio: STOP Questa istruzione ordina all’unita’ di controllo di non eseguire altre istruzioni.

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

STOP

INPUT

OUTPUT

Page 18: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

18

Finora abbiamo visto come vengono eseguite le singole istruzioni, ma come viene eseguita una sequenza di istruzioni? In altre parole come viene eseguito un programma? Vediamo prima come si scrive un programma. Proviamo quindi a scrivere un programma che consente di calcolare la somma di due numeri inseriti da tastiera. Dobbiamo prima individuare i dati di input e di output: i dati di input sono rappresentati dai due addenti che chiamiamo A e B; il dato di output e’ rappresentato dal risultato della somma che chiamiamo C. Dobbiamo ora descrivere le operazioni che devono essere eseguite per risolvere il nostro problema:

- Inserisci da tastiera il primo addendo LEGGI A; - Inserisci da tastiera il secondo addendo LEGGI B; - Somma A e B e metti il risultato in C A + B = C; - Mostra il risultato sullo schermo SCRIVI C; - Fermasti STOP.

Abbiamo descritto le operazioni che dovranno essere svolte dal computer in due modi: il primo piu’ discorsivo, il secondo piu’ tecnico e sintetico. In tutti e due i casi abbiamo descritto un

algoritmo cioe’ una sequenza ordinata e finita di istruzioni, comprensibili ed eseguibili, in grado di risolvere una determinata classe di problemi.

Page 19: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

19

Il procedimento risolutivo cosi’ descritto non e’ pero’ comprensibile dal computer. Per fornire al computer una sequenza di istruzioni comprensibili dobbiamo procedere attraverso una serie di passaggi. Traduciamo l’algoritmo in un programma scritto in un linguaggio di programmazione ad alto livello rispettando rigorosamente le regole sintattiche del linguaggio stesso. Nel nostro esempio se utilizziamo il PASCAL avremo il seguente programma:

program somma; var a, b, c : integer; begin readln(a); readln(b); c := a + b; writeln(c); end.

Osserviamo pero’ che il computer non e’ in grado di eseguire direttamente l’istruzione

C := A + B

Page 20: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

20

Questa istruzione complessa deve essere scissa in due operazioni piu’ elementari direttamente eseguibili dal computer:

SUM A, B; MOV_TO C;

Il programma originale puo’ quindi essere riscritto nel seguente modo utilizzando i nomi simbolici che individuano le operazioni elementari svolte dal computer:

READ A; READ B; SUM A, B; MOV_TO C; WRITE C; STOP.

E’ facile osservare che le istruzioni che compongono il programma possono essere scomposte in due parti: CODICE OPERATIVO: indica l’operazione che deve essere eseguita. NOMI OPERANDI …...: indica le variabili selle quali viene eseguita l’operazione. Osserviamo inoltre che nel nostro programma sono presenti istruzioni con un solo operando, istruzioni con due operandi ed istruzioni senza operandi.

Page 21: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

21

Istruzione senza operandi: Codice operativo Istruzione con un solo operando: Codice operativo Operando Istruzione con due operandi: Codice operativo 1° Operando 2° Operando

Page 22: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

22

Abbiamo detto, precedentemente, che il calcolatore riconosce le variabili dall’indirizzo della cella di memoria occupata e non dal loro nome; possiamo quindi ipotizzare che le variabili del programma andranno ad occupare le seguenti posizioni:

A 1100 B 1101 C 1110

Sappiamo inoltre che il calcolatore riconosce soltanto l’alfabeto binario. Pertanto anche le istruzioni non possono essere riconosciute nel modo in cui le abbiamo scritte. Dobbiamo quindi associare ad ogni istruzione un codice binario in grado di rappresentarle. Supponiamo ora di rappresentare le istruzioni viste con i seguenti codici binari:

READ 0001 WRITE 0010 SUM 0100 MOVE_TO 1000 STOP 1111

Page 23: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

23

Il nostro programma puo’ ora essere riscritto nel seguente modo:

Codice operativo

1° operando

2° operando

0001 0001 0100 1000 0010 1111

1100 1101 1100 1110 1110

1101

Questa forma di rappresentazione del programma puo’ apparire per noi poco famigliare ma, in realta’, e’ l’unica forma direttamente comprensibile dal computer.

Page 24: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

24

Vediamo ora, passo per passo, come fa il calcolatore ad eseguire un programma. Il programma, per essere eseguito, deve essere prima di tutto caricato in memoria: Nel registro Program Counter viene posto l’indirizzo della prima istruzione.

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

0101 1111

1001

1101

0010 0100 1100 1101

0110

1010

1110

0111

1011

1111

0011 1000 1110

0000

INPUT

OUTPUT

Page 25: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

25

L’istruzione puntata la registro Program Counter viene copiata nel Registro Istruzione dell’unita di controllo. Subito dopo viene incrementato di una unita’ il contenuto del registro Program Counter.

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

0101 1111

1001

1101

0010 0100 1100 1101

0110

1010

1110

0111

1011

1111

0011 1000 1110

0001 1100

0001

INPUT

OUTPUT

1

2

Page 26: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

26

L’unita’ di controllo interpreta il significato del codice operativo presente nel Registro Istruzione (0001 1100 = LEGGI A) e quindi lo esegue.

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

00000010

0101 1111

1001

1101

0010 0100 1100 1101

0110

1010

1110

0111

1011

1111

0011 1000 1110

0001 1100

0001

INPUT

OUTPUT

0001 = LEGGI

2

Page 27: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

27

Si procede quindi all’esecuzione dell’istruzione successiva: (0001 1101 = LEGGI B)

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

00000010

0101 1111

1001

1101

00000011

0010 0100 1100 1101

0110

1010

1110

0111

1011

1111

0011 1000 1110

0001 1101

0010

INPUT

OUTPUT

3

1

23

Page 28: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

28

Si procede quindi all’esecuzione dell’istruzione successiva: (0100 1100 1101 = SOMMA A, B)

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

00000010

0101 1111

1001

1101

00000011

0010 0100 1100 1101

0110

1010

1110

0111

1011

1111

0011 1000 1110

0000010

00000011

0000101

0100 1100 1101

0011

INPUT

OUTPUT

2

1 5

4

3

Page 29: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

29

Si procede quindi all’esecuzione dell’istruzione successiva: (1000 1110 = MUOVI IL CONTENUTO DELL’ACCUMULATORE IN C)

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

00000010

0101 1111

1001

1101

00000011

0010 0100 1100 1101 0110

1010

1110

00000101

0111

1011

1111

0011 1000 1110 00000010

00000011

0000101

1000 1110

0100

INPUT

OUTPUT

2

3

1

Page 30: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

30

Si procede quindi all’esecuzione dell’istruzione successiva: (0010 1110 = SCRIVI C)

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

00000010

0101 1111

1001

1101

00000011

0010 0100 1100 1101 0110

1010

1110

00000101

0111

1011

1111

0011 1000 1110 00000010

00000011

0000101

0010 1110

0101

INPUT

OUTPUT

2

1

3

5

Page 31: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

31

Si procede quindi all’esecuzione dell’istruzione successiva: (1111 = STOP)

0000 0001 1100

0100 0010 1110

1000

0001 0001 1101

1100

00000010

0101 1111

1001

1101

00000011

0010 0100 1100 1101 0110

1010

1110

00000101

0111

1011

1111

0011 1000 1110 00000010

00000011

0000101

1111

0110

INPUT

OUTPUT

2

1

Page 32: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

32

CONFRONTO Questa istruzione permette di confrontare il contenuto di due variabili; il risultato dell’operazione e’ un calore booleano VERO o FALSO (1 o 0). E possibile effettuare uno dei seguenti confronti o combinazioni di essi:

- maggiore > - minore < - uguale = - diverso <> - maggiore uguale >= - minore uguale <=

Il risultato del confronto (0 se FALSO, 1 se VERO) viene depositato in un apposito registro della sezione logica dell’unita aritmetico logica. Supponiamo che l’operazione di confronto A > B venga codificata nel seguente modo:

COMP_MAX A, B 0110

Page 33: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

33

Questa operazione viene eseguita attraverso le seguenti fasi: - Viene copiato dalla memoria il contenuto della prima variabile e portato nel primo registro

della sezione logica dell’unita’ aritmetico logica. - Viene copiato dalla memoria il contenuto della seconda variabile e portato nel secondo registro

della sezione logica dell’unita’ aritmetico logica. - Viene eseguito il confronto ed il risultato (VERO o FALSO) compare nell’apposito registro.

Page 34: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

34

Esempio: COMP_MAX A, B

0000

0100

1000

0001

1100

2

0101

1001

1101

3

0010

0110

1010

1110

0111

1011

1111

0011

3

2

0

COMP_MAX 1100, 1101

INPUT

OUTPUT

1

2

3

Page 35: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

35

SALTO INCONDIZIONATO Questa istruzione consente all’unita’ di controllo di eseguire un’istruzione che si trova in un determinato indirizzo e non quella immediatamente seguente. Questa istruzione viene eseguita dall’unita’ di controllo semplicemente cambiando il contenuto del registro Program Counter. Pertanto l’operatore dell’istruzione non rappresenta l’istruzione di una variabile bensi’ l’indirizzo dell’istruzione che si vuole eseguire. Questo indirizzo prende il nome di etichetta. Supponiamo che l’operazione di salto incondizionato venga codificata nel seguente modo:

JUMP 0111 L’unita’ di controllo mettera’ nel registro Program Counter il valore 0111. In tal modo l’istruzione successiva sara’ quella posta all’indirizzo 0111.

Page 36: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

36

Esempio: JUMP 0111 Prima che l’istruzione venga eseguita il program counter indica che la prossima istruzione si trova all’indirizzo 0100.

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

JUMP 0111

0100

INPUT

OUTPUT

Page 37: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

37

Esempio: JUMP 0111 L’istruzione e’ stata eseguita e pertanto la prossima istruzione non sara’ quella posta all’indirizzo 0100 bensi’ quella che si trova all’indirizzo 0111.

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

JUMP 0111

0111

INPUT

OUTPUT

Page 38: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

38

SALTO CONDIZIONATO Questa istruzione consente all’unita’ di controllo di eseguire un’istruzione che si trova in un determinato indirizzo e non quella immediatamente seguente soltanto se si e’ manifestato un certo risultato nell’ultima operazione di confronto effettuata. Supponiamo che l’operazione di salto incondizionato venga codificata nel seguente modo:

JUMP_FALSE 0111 L’unita’ di controllo mettera’ nel registro Program Counter il valore 0111 se l’ultima operazione di confronto ha prodotto il risultato FALSE.

Page 39: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

39

Esempio: JUMP_FALSE 0111 L’istruzione e’ stata eseguita perche’ l’ultima istruzione di confronto ha dato risultato FALSE (0).

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

3

5

0

JUMP_FALSE 0111

0111

INPUT

OUTPUT

Page 40: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

40

Esempio: JUMP_FALSE 0111 L’istruzione non e’ stata eseguita perche’ l’ultima istruzione di confronto ha dato risultato TRUE (1).

0000

0100

1000

0001

1100

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

0011

7

5

1

JUMP_FALSE 0111

0100

INPUT

OUTPUT

Page 41: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

41

ASSEGNAZIONE Questa istruzione copia il contenuto di una cella di memoria e lo deposita in un'altra cella di memoria. In altre parole trasferisce informazioni all’interno della memoria. Questa operazione viene effettuata utilizzando come punto di appoggio il registro accumulatore dell’unita’ aritmetico-logica. Consideriamo le variabili A (indirizzo 1100) e B (indirizzo 1111). Supponendo di voler trasferire il contenuto di B in A scriveremo

A = B che significa A B cioe’ muovi B in A. Supponiamo che l’operazione di salto incondizionato venga codificata nel seguente modo:

MOVE 1100 1111

Dove l’indirizzo del secondo operando indica la cella di provenienza mentre l’indirizzo del primo operando indica la cella di destinazione.

Page 42: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

42

Esempio: MOVE 1100 1111

0000

0100

1000

0001

1100

125

0101

1001

1101

0010

0110

1010

1110

0111

1011

1111

125

0011

125

MOVE 1100 1111

INPUT

OUTPUT

1

2

Page 43: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

43

Possiamo ora riassumere nella tabella seguente tutte le operazioni fondamentali eseguibili da un calcolatore:

Nome simbolico

operazione

Numero di

operandi

Codice operativo in binario

Descrizione delle operazioni svolte dai codici operativi

READ

1

0001

LETTURA: Deposita all’indirizzo di memoria indicato dall’operando un dato proveniente dell’unita’ di input.

WRITE

1

0010

SCRITTURA: Preleva il dato presente all’indirizzo di memoria indicato dall’operando e lo porta in uscita attraverso l’unita’ di output.

MOVE

2

0011

ASSEGNAZIONE: Copia il contenuto della cella indicata dal secondo operando e lo deposita nella cella di memoria indicata dal secondo operando.

SUM

2

0100

SOMMA: Preleva i dati presenti negli indirizzi di memoria indicati dagli operandi e li deposita nei registri della sezione aritmetica dell’unita’ aritmetico-logica. Esegue la somma e mette il risultato nel registro accumulatore.

Page 44: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

44

MOV_TO

1

1000

MUOVI DA ACCUMULATORE: Copia il dato presente nel registro accumulatore e lo deposita nell’indirizzo di memoria indicato dall’operando.

COMP_MAX COMP_MIN COMP_EQ COMP_NEQ COMP_XEQ COMP_MEQ

2

1001 1010 1011 1100 1101 1110

CONFRONTO: Confronta il primo operando con il secondo e pone il risultato (VERO o FALSO) in un apposito registro. E possibile eseguire i seguenti confronti: >, <, =, <>, >=, <=.

JUMP

1

0101

SALTO INCONDIZIONATO: Pone nel registro Program Counter l’indirizzo dell’istruzione indicata dall’operando. In tal modo, subito dopo, viene eseguita una istruzione diversa da quella successiva.

JUMP_FALSE

2

0110

SALTO CONDIZIONATO: Pone nel registro Program Counter l’indirizzo dell’istruzione indicata dall’operando se l’ultima istruzione ha dato come risultato FALSE.

STOP

0

1111

ARRESTO: Arresta l’esecuzione di un programma.

Page 45: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

45

In maniera ancora piu’ stringata possiamo cosi’ riassumere le operazioni eseguite da un computer: LETTURA SCRITTURA ASSEGNAZIONE CALCOLO CONFRONTO DIRETTIVA

READ A WRITE A

A = B

C = A + B

A > B

BEGIN

END

Page 46: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

46

OSSERVAZIONI I blocchi di LETTURA, SCRITTURA, ASSEGNAZIONE, CALCOLO hanno un solo punto di entrata ed un solo punto di uscita. Il blocco di CONFRONTO ha un solo punto di entrata ed due punti di uscita, in altre parole, in base al risultato del confronto (VERO o FALSO) verranno eseguite due operazioni diverse: NO SI

A > B

A > B

Page 47: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

47

Utilizzando i diagrammi a blocchi l’algoritmo della somma puo’ essere rappresentato nel seguente modo: Si osservi quanto segue a proposito delle direttive: 1) Abbiamo la direttiva d’inizio che indica l’avvio del programma (RUN). 2) Abbiamo la direttiva di fine che indica l’arresto del programma. 3) Abbiamo le altre direttive che indicano che la prossima istruzione e’ quella immediatamente

successiva.

BEGIN

END

WRITE C

C = A + B

READ B

READ A

Page 48: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

48

Si capisce quindi il significato di direttiva: una particolare istruzione che indica al computer qual’e’ la prossima istruzione che deve eseguire. Proviamo ora a risolvere il seguente problema: Inserire due numeri interi da tastiera e stampare il maggiore.

program max; var a, b : integer; begin readln(a); readln(b); if a > b then writeln(a) else writeln(b); end.

BEGIN

END

WRITE A

READ B

READ A

WRITE B

SINO A > B

Page 49: struttura logica computer - Sito e-learninglnx.poggiodelpapa.com/appunti/struttura_logica_computer.pdf · STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER. 2 ... Per esempio, se voglio

49

Linguaggio assemblativo Linguaggio macchina Numero

istruzione Indirizzo

istruzioneCodice

operativo 1°

operando 2°

operando 1 2 3 4 5 6 7 8

READ A READ B COMP_MAX A, B JUNP_FALSE 7 WRITE A JUMP 8 WRITE B STOP

0000 0001 0010 0011 0100 0101 0110 0111

0001 0001 1001 0110 0010 0101 0010 1111

1100 1101 1100 0110 1100 0111 1101

1101