Ogni processore viene progettato è realizzato con una libreria di istruzioni specifica detta Isa, in corrispondenza di ogni istruzione la Alu esegue un micro algoritmo che compie qualche cosa.
Ogni istruzione del lista è caratterizzata da un codice detto Operation code ed ogni istruzione ha bisogno di un numero specifico di operandi su cui lavorare. Il numero di operandi ed il tipo di istruzione determina anche quanto è lunga l’istruzione in byte. Oltre all Operation code possiamo usare il codice armonico che è un codice più vicino alla lingua naturale con cui richiamare l’istruzione.
All’interno del processore possiamo pensare ci siano tre unità funzionali l’unità di controllo UCI, l’aria dei registri, l’unità logico aritmetica Alu. L’unità di controllo ha il compito di inviare le istruzioni per gestire gli altri componenti e quindi si affaccia sul bus di sistema. Il bus di sistema si può dividere in tre parti dette Abus Dbus e Cbus, l’address abus è il bus su cui viaggiano gli indirizzi, il Dbus è costituito dalle linee del bus su cui viaggiano i dati virgola il Cibus è costituito dalle linee su cui viaggiano le istruzioni di controllo. Infine il processore possiede anche un regisro speciale PC detto programm counter che conta le istruzioni del programma già eseguite: in esso c’è il valore della cella di memoria con la prossima istruzione ancora da eseguire.
Esempio: consideriamo un calcolatore ad 8 bit, con Abus e Dbus da 8 linee e un Cbus da 3 linee, 2 registri ad 8 bit A e B, ed il set di 4 istruzioni che segue in tabella, come si fa a visualizzare sullo schermo la scritta HAL? (Si ipotizzi che il PC parta d 16 perché i primi 16 Byte in memoria servano per i dati).
op. code | codice mnemonico | operando 1 | operando 2 | descrizione |
0 | store | indirizzo | valore | store pone un valore in una cella di un dato indirizzo |
10 | loada | indirizzo | load A carica il valore posto nella cella con indirizzo indicato, nel registro A | |
20 | out | Visualizza sullo schermo il valore contenuto sul registro A | ||
50 | end | Termina il programma |
Soluzione:
indirizzi | memoria | |||||||
0 | H | A | L | |||||
8 | ||||||||
16 | 0 | 0 | ‘H’ | 0 | 1 | 65 | 0 | 2 |
24 | ‘L’ | 10 | 0 | 20 | 10 | 1 | 20 | 10 |
32 | 2 | 20 | 50 |
Che corrisponde al programma mnemonico:
- store 0 ‘H’
- store 1 65
- store 2 ‘L’
- loadA 0
- out
- loadA 1
- out
- loadA 2
- out
- end
oppure
indirizzi | memoria | |||||||
0 | H | |||||||
8 | ||||||||
16 | 0 | 1 | ‘H’ | 10 | 1 | 20 | 0 | 1 |
24 | ‘A’ | 10 | 1 | 20 | 0 | 1 | ‘L’ | 10 |
32 | 1 | 20 | 50 |
Che corrisponde al programma mnemonico:
- store 1 ‘H’ salva nella cella 1 la lettera ‘H’
- loadA 1 carica nel registro A il valore contenuto nella cella 1
- out visualizza il contenuto del registro A sul monitor
- store 1 ‘A’ salva nella cella 1 la lettera ‘A’
- loadA 1 carica nel registro A il valore contenuto nella cella 1
- out visualizza il contenuto del registro A sul monitor
- store 1 ‘L’ salva nella cella 1 la lettera ‘L’
- loadA 1 carica nel registro A il valore contenuto nella cella 1
- out visualizza il contenuto del registro A sul monitor
- end fine programma
Il programma inizia al indirizzo 16 e termina all’indirizzo 34, quindi è lungo 34-16+1=18 word cioè 19Byte.
Esempio: consideriamo un calcolatore ad 8 bit, con Abus e Dbus da 8 linee e un Cbus da 3 linee, 2 registri ad 8 bit A e B, ed il set di 4 istruzioni che segue in tabella, come si fa a visualizzare sullo schermo la scritta HAL solo se l’utente digita il tasto H? (Si ipotizzi che il PC parta d 16 perché i primi 16 Byte in memoria servano per i dati).
op. code | codice mnemonico | operando 1 | operando 2 | descrizione |
0 | store | indirizzo | valore | store pone un valore in una cella di un dato indirizzo |
10 | loadA | indirizzo | carica il valore posto all’indirizzo indicato, nel registro A | |
11 | loadB | indirizzo | carica il valore posto all’indirizzo indicato, nel registro B | |
20 | out | Visualizza sullo schermo il valore contenuto sul registro A | ||
21 | input | indirizzo | il codice ascii del tasto premuto viene inserito all’indirizzo indicato | |
30 | jmp | indirizzo | il Programm counter passa all’istruzione posta all’indirizzo indicato | |
31 | je | indirizzo | il PC salta all’indirizzo se Registro A = Registro B | |
50 | end | Termina il programma |
Soluzione: linguaggio mnemonico
16 store 0 ‘H’
19 store 1 ‘A’
22 store 2 ‘L’
25 input 3
27 loadA 0
29 loadB 3
31 je 35
33 jmp 44
35 loadA 0
37 out
38 loadA 1
40 out
41 loadA 2
43 out
44 end.
Soluzione: programma in memoria con codici numerici.
indirizzi | memoria | |||||||
0 | H | A | L | X | ||||
8 | ||||||||
16 | 0 | 0 | ‘H’ | 0 | 1 | ‘A’ | 0 | 2 |
24 | ‘L’ | 21 | 3 | 10 | 0 | 11 | 3 | 31 |
32 | 35 | 30 | 44 | 10 | 0 | 20 | 10 | 1 |
40 | 20 | 10 | 2 | 20 | 50 | |||
48 |