004_ArchitetturaCalc
Download
Report
Transcript 004_ArchitetturaCalc
Architettura di un calcolatore
Indice
• Sistema di Elaborazione
• La macchina di Von Neumann
–
–
–
–
Memoria
CPU
Bus
Interfacce
• Esempio
– L’algoritmo
– Il programma
– Fasi di esecuzione di un’istruzione
2
Il Sistema di Elaborazione
Computer
Hardware
Software
3
Hardware
Struttura fisica (architettura) del
calcolatore formata da parti meccaniche,
elettriche, elettroniche
4
Software
• Componente del calcolatore costituita dai:
– Programmi di base per la gestione del
sistema
– Programmi applicativi per l’uso del sistema
(possono usare i programmi di base)
5
Il Sistema di Elaborazione
Computer
Hardware
Software
6
HARDWARE:RAPPRESENTAZIONE
SCHEMATICA
CPU
INPUT
OUTPUT
Istruzioni
Dati
MEMORIA
7
DALLA MACCHINA DI TURING ALLA
MACCHINA DI VON NEUMANN
• La macchina di Turing aiuta a capire come
sia possibile manipolare informazione in base
a un programma, leggendo e scrivendo due
soli simboli: ‘0’e ‘1’
• Da questo punto di vista, pur essendo un
dispositivo ideale, la macchina di Turing è
strettamente imparentata col computer
8
Dalla macchina di Turing
alla CPU
• Un passo ulteriore, volendoci avvicinare
al funzionamento di un vero computer, è
costituito dalla
MACCHINA DI VON NEUMANN
9
La macchina di Von Neumann
Collegamento
Bus di sistema
Unità di
Elaborazione
(CPU)
Memoria
Centrale
(MM)
Interfaccia
Periferica P1
Esecuzione istruzioni Memoria di lavoro
Interfaccia
Periferica P2
Memoria di massa,
stampante, terminale…
10
La macchina di Von Neumann
• Il processore estrae le istruzioni dalla memoria e le
esegue
– Le istruzioni possono comportare operazioni di
manipolazione dei dati
– Oppure operazioni di trasferimento dei dati
• I trasferimenti di dati attraverso elementi funzionali
diversi avvengono attraverso il bus di sistema
• Le fasi di elaborazione si susseguono in modo
sincrono rispetto ad un orologio di sistema
• Durante ogni intervallo di tempo l’unità di controllo
(parte del processore) stabilisce la funzione da
svolgere
• L’intera macchina opera in maniera sequenziale
11
ARCHITETTURA DI VON
NEUMANN: UNITA’ CENTRALE
CPU
Preleva istruzione
I/O Memoria
Esegue
Memorizza risultato
BUS
12
MACCHINA DI VON NEUMANN: IL
PROCESSORE (CPU)
13
COMPONENTI DELLA CPU
• La CPU non è un unico componente ma è costituita
da componenti diversi che svolgono compiti diversi
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
14
Componenti del processore
(CPU)
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
15
Registri
• I registri sono delle unità di memoria
estremamente veloci
• Sono usate per mantenere le informazioni di
necessità immediata per il processore
• Le dimensioni dei registri variano da 16, 32,
64 bit
– Sono una parte fondamentale del processore
16
Registri
• Per esempio: Program Counter
– L’indirizzo della “prossima” istruzione da
eseguire è memorizzato nel registro
Program Counter
• Per esempio: i Registri Generali
– I registri che possono essere utilizzati
come memorie temporanee per svolgere le
operazioni matematiche
17
Componenti del processore
(CPU)
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
18
Unità di controllo
• L’unità di controllo è la parte più
importante del processore
– Esegue le istruzioni dei programmi
– Coordina le attività del processore
– Controlla il flusso delle istruzioni tra il
processore e la memoria
19
Unità di controllo
• Svolge la sua attività in modo ciclico
– Preleva dalla memoria principale la
“prossima” istruzione da eseguire
– Preleva gli operandi specificati
nell’istruzione
– Decodifica ed esegue l’istruzione
– Ricomincia
20
Unità di controllo
• L’esecuzione comporta l’invio di
comandi opportuni all’unità relativa
– Calcoli Unità aritmetico logica
– Lettura/scrittura dati memoria
– Acquisizione/stampa dispositivi di I/O
21
Componenti del processore
(CPU)
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
22
Unità aritmetico logica
• L’Unità aritmetico logica si occupa di eseguire
le operazioni di tipo aritmetico/logico
– Somme, sottrazioni, …, confronti, …
• Preleva gli operandi delle operazioni dai
Registri Generali
• Deposita il risultato delle operazioni nei
Registri Generali
• Insieme all’unità di controllo collabora al
completamento di un ciclo della macchina
23
Clock
• Abbiamo visto che il processore svolga la sua
attività in modo ciclico
– Ad ogni ciclo corrisponde l’esecuzione di
un’operazione elementare (un’istruzione
macchina)
• Il clock fornisce una cadenza temporale per
l’esecuzione delle operazioni elementari
• La frequenza del clock indica il numero di
operazioni elementari che vengono eseguite
nell’unità di tempo
24
Clock
• Consideriamo una ipotesi semplificata in cui
ogni battito di clock corrisponde esattamente
l’esecuzione di una sola istruzione macchina
– La frequenza del clock indica il numero di
operazioni elementari che vengono eseguite
nell’unità di tempo
– Per esempio: il clock che ha circa 66 milione battiti
per secondo il computer può eseguire circa 66
milione operazioni per secondo
25
Clock
• In realtà, questa ipotesi non è sempre vero
– L’esecuzione di una istruzione può richiedere più battiti di
clock
– Oppure nello stesso ciclo di clock si possono eseguire (parti)
di istruzioni diverse
– Dipende dal tipo di processore
• Per esempio:
– Il processore Intel 80286 richiede 20 battiti del clock per
calcolare la moltiplicazione di due numeri
– Il processore Intel 80486 può calcolare la moltiplicazione di
due numeri usando solo un battito del clock
26
Clock
• La frequenza del clock si misura in:
– MHz (1 MHz corrisponde circa a un milione di
istruzioni elementari/battiti al secondo)
– GHz (1 GHz corrisponde circa a un miliardo di
istruzioni elementari/battiti al secondo)
• Per esempio: se acquistate un calcolatore e
vi dicono che ha un processore a 3 GHz
– Vuol dire che il processore è in grado di eseguire
(circa) 3 miliardi di istruzioni al secondo
27
Stato CPU
Operazioni
Flag: C, Z, S, V
aritmetiche
e logiche
L’unità
di
elaborazione
(CPU)
Indirizzo prox istruzione
Registro di stato (SR)
Registro contatore
di programma (PC)
A
Registro
interruzioni (INTR)
B
Unità
aritmetico
Registri operandi
logica
(ALU)
Registri generali
Registro istruzione
corrente (CIR)
Istruzione in elaborazione
Sincronizzazione
Registro dati (DR)
Parola letta/da scrivere in MM
Unità di controllo
(CU)
Clock
Controllo:
Registro indirizzi
-Prelievo
(AR)
-Decodifica
Indirizzo cella MM-Esecuzione
28
ARCHITETTURA DI VON NEUMANN:
MEMORIA CENTRALE
29
Memoria principale (RAM)
• Perchè si chiama RAM (Random Access
Memory)?
– Si può accedere direttamente alle varie celle, una
volta noto il loro indirizzo
– Il tempo necessario per accedere ad una cella è lo
stesso, indipendentemente dalla posizione della
cella nella sequenza
– Il termine “random” (casuale) indica proprio il fatto
che non vi sono differenze nell’accesso alle varie
celle della memoria
30
Memoria principale (RAM)
• Alcune proprietà della memoria
principale
– Veloce: per leggere/scrivere una cella ci
vuole un tempo di accesso dell’ordine di
poche decine di nanosecondi (millesimi di
milionesimi di secondo = 10-9 sec.)
– Volatile: è fatta di componenti elettronici,
togliendo l’alimentazione si perde tutto
– (Relativamente) costosa
31
Memoria principale (RAM)
• Tutte le celle hanno la
stessa dimensione: 8, 16,
32, o 64 bit
• Le operazioni che si
eseguono sulla memoria
sono operazioni di lettura
e scrittura
• Una cella può contenere
un dato o un’istruzione
Indirizzi
0
1
2
3
4
5
Contenuto
345
13.200.985
3.890
LOAD 3568 R1
LOAD 56 R1
ADD R1 R2
N
32
Memoria principale (RAM)
• Ogni calcolatore usa un numero di bit
costante per rappresentare gli indirizzi
• Maggiore è il numero di bit usati, maggiore
sarà il numero di celle indirizzabili: spazio di
indirizzamento
– Se si usano 16 bit per codificare gli indirizzi, si
potranno indirizzare fino a 65.536 celle (circa 64
KB di memoria, nell’ipotesi di celle di memoria di 1
byte)
– Con 32 bit si potranno indirizzare fino a
4.294.967.296 celle (circa 4 GB di memoria)
33
Memoria principale (RAM)
• All’aumentare delle dimensioni della
memoria principale aumenta il numero
di programmi che possono essere
“contemporaneamente” attivi
• La RAM, fino ad un certo limite, è
espandibile (slot di espansione)
34
Memoria principale (RAM)
bit
1 cifra binaria
memorizza 0 oppure 1
byte
8 bit
memorizza un carattere
parola
da 16 a 64 bit
numeri e indirizzi di
memoria
Kilobyte (KB)
1024 byte
circa mezza pagina di testo
Megabyte (MB)
1024 KB
un libro di 200 pagine
Gigabyte (GB)
1024 MB
alcuni volumi
Terabyte (TB)
1024 GB
una biblioteca
Petabyte (PB)
1024 TB
molte biblioteche
35
ALTRI TIPI DI MEMORIA
NELL’UNITA CENTRALE
• Memoria di sola lettura (ROM)
• Memoria cache
• Buffer
36
Memoria di sola lettura (ROM)
•
•
•
•
Non può essere modificata
A differenza della RAM non è volatile
Veloce quasi come la RAM
Contiene le informazioni di
inizializzazione usate ogni volta che si
accende l’elaboratore (bootstrap)
37
Memoria cache
• Livello di memoria intermedio tra i
registri e la RAM
– Memorizza i dati usati più spesso senza
doverli recuperare tutte le volte dalla RAM
(che è più lenta)
– Influisce moltissimo sulle prestazioni e sul
costo della CPU (e quindi del computer)
• È molto più costosa della RAM
38
Memoria cache
• In genere è interna al processore
(cache L1)
• Esiste anche una cache secondaria (L2)
esterna al processore
• Le sue dimensione tipiche vanno dai
256KB a 1MB
39
La memoria centrale (MM)
h = 16 bit
RAM
Volatile
Dati
e ROM
e
istruzioni
Parola (word)
0
1
Registro indir. (AR)
store
load
k = 10 bit
Registro dati (DR)
h = 16 bit
Indirizzo cella
Dato da
leggere/scrivere
Spazio di
indirizzamento
210=1024
1023
40
La memoria centrale (MM)
• Il numero di bit che costituiscono l’indirizzo di un word
all’interno della memoria è caratteristico del
microprocessore e identifica lo spazio di indirizzamento
del microprocessore
– Esempio: Pentium 32 bit
– Avendo a disposizione k bit è possibile indirizzare 2k byte
• Si ricorda che:
–
–
–
–
210 byte = 1Kilo Byte
220 byte = 1Mega Byte
230 byte = 1 Giga Byte
240 byte = 1Tera Byte
41
La memoria centrale (MM) quindi...
• La memoria centrale si chiama usualmente ram o
memoria ad accesso casuale
– Viene cosi detta una memoria il cui tempo di accesso sia
indipendente dall’indirizzo della parola alla quale si vuole
accedere
– Si tratta di una memoria volatile
• Altri tipi di memoria presenti in un calcolatore sono le
rom
–
–
–
–
Hanno caratteristiche generali simili alle ram
Un tempo di accesso notevolmente maggiore
Si tratta di memorie permanenti
Sono tipicamente utilizzate per memorizzare quei dati e
programmi che servono al momento dell’accensione
dell’elaboratore, prima del caricamento del S.O.
– Esempio: Il BIOS (Basic Input Output System) che carica in
memoria il sistema operativo quando la macchina viene accesa
42
Memoria secondaria
• La memoria principale non basta (è volatile, costosa)
• In grado di memorizzare i programmi e i dati in modo
permanente
• È meno costosa che la memoria principale: le
dimensioni della memoria secondaria sono di solito
molto maggiori di quelle della memoria principale
• I supporti di memoria secondaria sono più lenti
rispetto alla memoria principale (presenza di
dispositivi meccanici)
• Non tutti i supporti di memoria secondaria permettono
l’accesso diretto ai dati
– Alcuni permettono solo un accesso sequenziale (per
esempio, nastri magnetici)
43
LA DIVISIONE DEI RUOLI TRA MEMORIA
PRINCIPALE E MEMORIA SECONDARIA
• I programmi e i dati risiedono nella memoria
secondaria
Processore
Stampante
Memoria
principale
Memoria
secondaria
44
LA DIVISIONE DEI RUOLI TRA MEMORIA
PRINCIPALE E MEMORIA SECONDARIA
• I programmi e i dati risiedono nella memoria
secondaria
• Per essere eseguiti (i programmi) e usati (i dati)
vengono copiati nella memoria principale
Processore
Stampante
Memoria
principale
Memoria
secondaria
45
LA DIVISIONE DEI RUOLI TRA MEMORIA
PRINCIPALE E MEMORIA SECONDARIA
• I programmi e i dati risiedono nella memoria
secondaria
• Per essere eseguiti (i programmi) e usati (i dati)
vengono copiati nella memoria principale
• Il processore è in grado di eseguire le istruzioni di cui
sono composti i programmi
Processore
Stampante
Memoria
principale
Memoria
secondaria
46
Memoria secondaria
• La memoria secondaria deve avere
capacità di memorizzazione permanente e
quindi per la sua produzione si utilizzano
tecnologie basate:
– sul magnetismo (tecnologia magnetica)
• dischi magnetici (hard disk e floppy disk)
• nastri magnetici
– sull’uso dei raggi laser (tecnologia ottica)
• dischi ottici (CD-ROM, DVD)
48
MACCHINA DI VON
NEUMANN: I BUS
49
Bus
• Permette la comunicazione tra i vari
componenti dell’elaboratore
CPU
RAM
Interfaccia
dati
indirizzi
controllo
50
Il bus di sistema
• Il bus di sistema collega tra loro i vari
elementi del calcolatore
• In ogni istante il bus è dedicato a collegare
due unità, una trasmette ed una riceve
– Il processore seleziona la connessione da attivare
e indica l’operazione da svolgere (bus mastering)
• Il bus è suddiviso in tre insiemi di linee:
– Bus dati
– Bus indirizzi
– Linee di controllo: trasportano informazioni relative
alla modalità di trasferimento e alla
temporizzazione
51
Il bus di sistema
CPU
Registro di stato (SR)
Registro contatore
di programma (PC)
A
Registro
interruzioni (INTR)
B
Unità
aritmetico
logica
(ALU)
Registro istruzione
corrente (CIR)
Clock
Registro dati (DR)
Unità di controllo
(CU)
Registro indirizzi
(AR)
Bus di sistema
Bus
Master/slave
dati, Bus indirizzi, Bus controlli
52
Sequenza di lettura
Passo 3
0
Passo 1
Passo 4
2
SR
PC
INTR
A
ALU
B
123
123
CIR
42
CU
Ck
42
DR
123
AR
1023
READ
OK
53
Sequenza di scrittura
Passo 2
0
Passo 1
Passo 5
3
SR
PC
INTR
A
ALU
B
123
123
CIR
CU
Passo 4
Ck
70
DR
70
42
123
AR
1023
WRITE
OK
54
Le interfacce delle periferiche
• Si occupa della gestione dello scambio di dati tra processore e
periferiche
• E’ possibile avere una interfaccia diversa per ogni periferica...
...ma è più logico avere delle interfacce standard per periferiche
simili
• Esempi di interfacce standard:
–
–
–
–
–
–
–
Interfaccia seriale RS-232-C (mouse, modem, ...)
Interfaccia PS2 (mouse, tastiera, ...)
Interfaccia USB (mouse, telecamere, stampanti, scanner, ...)
Interfaccia parallela Centronix (stampante, scanner, ...)
Interfaccia ISA (modem, schede audio, ...)
Interfaccia SCSI (hard-disk, CD-ROM, scanner, ...)
Interfaccia EIDE (hard-disk, CD_ROM, ...)
• Ogni interfaccia contiene registri per:
– Inviare comandi alla periferica
– Scambiare dati
– Controllare il funzionamento della periferica
55
Le interfacce delle periferiche
Interfacccia periferica 1
Peripheral Data
Register (PDR)
Interfacccia periferica 2
Peripheral Data
Dato da leggere/scrivere
Register (PDR)
Peripheral Command
Register (PCR)
Peripheral
Command
Comando da
eseguire
Peripheral State
Register (PSR)
Peripheral State
Stato dellaRegister
periferica
(PSR)
Register (PCR)
Bus di sistema
56
Le interruzioni
• Al fine di gestire richieste provenienti dalle periferiche
può essere necessario interrompere la normale
esecuzione di un programma
• La periferica segnala sue particolari necessità
attraverso una interruzione
• Ad ogni passo di esecuzione la UC verifica lo stato
del registro delle interruzioni
• Se si è verificata una interruzione:
– Lo stato del processore (registri) viene salvato in memoria
– Viene attivata una speciale procedura di gestione delle
interruzioni (parte del S.O.)
– Quando la procedura di gestione delle interruzioni termina lo
stato del processore viene ripristinato ed il programma viene
ripreso
57
Es.: valutazione di espressione
• Vogliamo calcolare il valore
dell’espressione:
(a+b)·(c+d)
leggendo i valori delle variabili a, b, c, d
dal dispositivo di ingresso e scrivendo il
risultato della valutazione sul dispositivo
di uscita.
58
Un algoritmo generale
1. Leggi dal dispositivo di ingresso il valore
delle variabili a, b, c, d
2. Somma il valore di a al valore di b
3. Salva il risultato parziale ottenuto
4. Somma il valore di c al valore di d
5. Moltiplica il risultato parziale appena ottenuto
con quello precedentemente salvato
6. Scrivi sul dispositivo di uscita il risultato della
valutazione complessiva
7. Termina l’esecuzione del programma.
59
L’algoritmo dettagliato (1)
1. Scrivi nella cella di memoria centrale riservata
al valore della variabile a il valore letto dal dispositivo di ingresso
(disponibile nel registro dati della periferica). Fai la stessa cosa per
b, c, d
2. Somma il valore di a al valore di b
2.1 Copia il contenuto della cella di memoria riservata
ad a nel registro A
2.2 Copia il contenuto della cella di memoria riservata
a b nel registro B
2.3 Somma il contenuto dei registri A e B
3. Salva il risultato parziale, contenuto nel registro A, in una cella di
memoria predisposta per il risultato (z).
60
L’algoritmo dettagliato (2)
4. Somma il valore di c al valore di d
4.1 Copia il contenuto della cella di memoria
riservata a c nel registro A
4.2 Copia il contenuto della cella di memoria
riservata a b nel registro B
4.3 Somma il contenuto dei registri A e B
5. Moltiplica il risultato parziale appena ottenuto con
quello precedentemente salvato
5.1 Copia il contenuto della cella riservata a z nel
registro B (z e B contengono ora a+b, mentre A
contiene c+d)
5.2 Moltiplica il contenuto dei registri A e B.
61
L’algoritmo dettagliato (3)
6. Scrivi sul dispositivo di uscita il risultato della
valutazione complessiva
6.1 Memorizza il risultato appena calcolato
(e disponibile nel registro A) nella cella
di memoria riservata a z
6.2 Copia il contenuto della cella di memoria
riservata a z nel registro dati della periferica
di uscita
7. Termina l’esecuzione del programma.
62
Tipologia delle operazioni svolte
• Operazioni di manipolazione
– Somma: 2.3, 4.3
– Moltiplicazione: 5.2
• Operazioni di trasferimento
– Da periferica-input a MM: 1
– Da MM a CPU: 2.1, 2.2, 4.1, 4.2, 5.1
– Da CPU a MM: 3, 6.1
– Da MM a periferica-output: 6.2
63
Le istruzioni macchina
• Un programma scritto in linguaggio macchina è
formato da una sequenza di istruzioni appartenenti al
set di istruzioni del particolare processore
• Ogni istruzione è formata da:
– Un codice operativo
– Zero o più operandi
• Tanto il codice operativo quanto gli operandi sono
rappresentati nella memoria del calcolatore sotto
forma di numeri binari
• Data la difficoltà per l’uomo di interpretare numeri
binari si usa l’assembler al posto del linguaggio
macchina codice operativo operando(i)
64
Le istruzioni macchina
• Il set di istruzioni di un qualsiasi
linguaggio macchina può essere diviso
in quattro classi principali di istruzioni:
– Istruzioni per il trasferimento dati tra
memoria e registri del processore e
viceversa
– Operazioni aritmetiche e logiche sui dati
– Istruzioni per il controllo del flusso di
programma
– Istruzioni per la gestione dell’I/ O
65
Forma binaria del programma
0100000000010000
0100000000010001
0100000000010010
0100000000010011
0000000000010000
0001000000010001
0110000000000000
0010000000010100
0000000000010010
0001000000010011
0110000000000000
0001000000010011
1000000000000000
0010000000010100
0101000000010100
1101000000000000
Leggi un valore dall’input e mettilo nella cella 16 (a)
Leggi un valore dall’input e mettilo nella cella 17 (b)
Leggi un valore dall’input e mettilo nella cella 18 (c)
Leggi un valore dall’input e mettilo nella cella 19 (d)
Carica il contenuto della cella 16 (a) nel registro A
Carica il contenuto della cella 17 (b) nel registro B
Somma i registri A e B
Scarica il contenuto di A nella cella 20 (z) (ris.parziale)
Carica il contenito della cella 18 (c) nel registro A
Carica il contenito della cella 19 (d) nel registro B
Somma i registri A e B
Carica il contenuto della cella 20 (z) (ris. parziale) in B
Moltiplica i registri A e B
Scarica il contenuto di A nella cella 20 (z) (ris. totale)
Scrivi il contenuto della cella 20 (z) (ris. totale) in output
Halt
66
Programma in memoria centrale
Spazio riservato per a
Spazio riservato per b
Spazio riservato per c
Spazio riservato per d
Spazio riservato per z
Cella 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
0100000000010000
0100000000010001
0100000000010010
0100000000010011
0000000000010000
0001000000010001
0110000000000000
0010000000010100
0000000000010010
0001000000010011
0110000000000000
0001000000010011
1000000000000000
0010000000010100
0101000000010100
1101000000000000
67
Fase di fetch 1a istruzione
Passo 1
Memoria centrale (MM)
0 0100000000010000
Passo 2
PC 0000000001
0000000000
Passo 4
AR 0000000000
1023
DR 0100000000010000
Passo 3
CIR 0100000000010000
68
Fase di interpretazione 1a
istruzione
CIR 0100000000010000
Codice operativo 0100 = leggi da input
69
Fase di esecuzione 1a istruzione
Memoria centrale (MM)
Indirizzo operando
00000010000 = cella 16
CIR 0100000000010000
0
Passo 3
16 0001000000011111
Passo 1
AR 0000010000
1023
DR 0001000000011111
Passo 2
Valore di a letto dall’input (es. 4127)
PDR 0001000000011111
70
Il linguaggio assembler
• Un esempio (didattico) di assembler potrebbe contenere le
seguenti istruzioni:
– Le istruzioni loada e loadb servono per spostare il contenuto di
una cella di memoria nei registri A e B rispettivamente
• Esempio: loada ind1
– Le istruzioni storea e storeb servono per spostare il contenuto dei
registri A e B rispettivamente in una cella di memoria il cui indirizzo
è indicato come parametro
• Esempio: storea ind1
– Le istruzioni per lo svolgimento delle operazioni aritmetiche di base
• Operazioni su interi: add, dif, mul, div
• Operazioni su reali: addr, difr, mulr, divr
• Le istruzioni operano sui registri A e B e pongono il risultato nel registro
A
• Nel caso di divisione tra interi il registro B viene usato per contenere il
resto dell’operazione
71
Il linguaggio assembler
– Le istruzioni per lo svolgimento delle operazioni logiche di base
• and, or, not
• Le istruzioni operano sui registri A e B e pongono il risultato nel registro A
• Nel caso di operazione not viene usato il solo registro A
– Le istruzioni per leggere/scrivere su periferiche
• L’istruzione read legge un dato dalla periferica di input e pone il dato letto nella
cella di memoria il cui indirizzo viene passato come parametro
• Esempio: read ind1
• L’istruzione write scrive il dato presente nella cella di memoria il cui indirizzo
viene passato come parametro sulla periferica di output
• Esempio: write ind1
– Le istruzioni per il controllo di flusso
• L’istruzione di salto incondizionato jump salta all’indirizzo specificato come
parametro
• L’istruzione di salto condizionato jumpz salta all’indirizzo specificato come
parametro se l’ultima operazione matematica ha dato risultato nullo
• Il processore controlla il valore del registro di stato del processore
• Il salto viene effettuato solo se il bit di zero vale 1
– Altre istruzioni
• L’istruzione halt termina l’esecuzione del programma
72
Linguaggio Macchina, Assembler e C
Linguaggio
Macchina
0100000000010000
0100000000010001
0100000000010010
0100000000010011
0000000000010000
0001000000010001
0110000000000000
0010000000010100
0000000000010010
0001000000010011
0110000000000000
0001000000010011
1000000000000000
0010000000010100
0101000000010100
1101000000000000
Linguaggio
Assembler
READ A
READ B
READ C
READ D
LOADA A
LOADB B
ADD
STOREA RIS
LOADA C
LOADB D
ADD
LOADB RIS
MUL
STOREA RIS
WRITE RIS
HALT
INT A
INT B
INT C
INT D
INT RIS
Linguaggio
C
int a, b, c, d, ris;
scanf("%d%d%d%d", &a, &b, &c, &d);
ris = (a+b)*(c+d);
printf("ecco il risultato %d", ris);
73
Esercizi
• 1) Si usi il linguaggio assembler
presentato per scrivere un programma
che legge due numeri A e B e scrive a
video B volte il primo numero A
• 2) Si usi il linguaggio precedente per
scrivere un programma che legge due
numeri A e B e scrive a video il prodotto
di A per B
– Non si faccia uso dell’istruzione mul ma
delle sole istruzioni add e dif
74