alcuni esercizi e domande per il compitino quali sono le parti principali dellarchitettura di von...
TRANSCRIPT
Alcuni esercizi e domande per il compitino
• quali sono le parti principali dell’architettura di von Neumann?
• citare le caratteristiche salienti della RAM
• quali sono le parti essenziali della CPU
• descrivere il ciclo che la CPU ripete in continuazione?
• a cosa servono i registri P e IP della CPU?
• quali sono gli esempi più comuni di memoria secondaria e perchè essa si chiama sequenziale?
• dare alcuni esempi di dispositivi di input e di output.
• determinare la tavola di verità del seguente circuito:
è una tavola nota?
B
A
R
• Utilizzando le porte logiche fondamentali AND, OR e NOT disegnare il circuito che realizza la formula logica :
(B A) [(NOT B) (NOT A)]
• Formalizzare la seguente asserzione con una formula logica:
“Siccome un rettangolo non è un quadrato se l'altezza è diversa dalla base allora un rettangolo con base e altezza uguali è un quadrato”
e calcolarne la tavola di verità.
• partendo dalla tavola di verità dell’esercizio precedente, costruite un circuito che la realizza seguendo il metodo di costruzione generale.
• usando la rappresentazione in complemento a 2, quali valori interi si possono rappresentare con 5 bit?
• con 5 bit, realizzare la somma: -5-8, come si controlla se c’è overflow o no?
• con 5 bit, realizzare 10+8. Come si controlla se c’è overflow o no?
• dare la rappresentazione in virgola mobile normalizzata dei valori 0.5, 1.5 e 10.543 avendo 8 bit per l’esponente e 8 per la mantissa.
• usando 8 bit per l’esponente e 8 per la mantissa quale numero è rappresentato da
1 01001011 00010111
•quali sono le novità principali dell’Assembler rispetto al linguaggio macchina?
•in un programma assembler, perchè si attaccano delle etichette a certe istruzioni?
•come si chiama in Assembler l’istruzione che trasferisce una parola dalla RAM ad un registro della CPU? E quella che compie il trasferimento inverso?
•In Assembler a cosa servono gli identificatori?
•scrivere un programma Assembler che legge due numeri reali e stampa il maggiore dei due.
•Scrivere un programma Assembler che legge due numeri interi e stampa la somma dei loro valori assoluti.
•Scrivere un programma Assembler che legge 10 numeri reali e stampa il massimo.
Mercoledì Laboratorio Guidato
Presso il Laboratorio del Dip. Matematica11.30-12.30 Chimica Industriale 12.30-13.30 Sc. Materiali e Sc. Geologiche16.00-17.00 Chimica
Via Paolotti
Via
Mar
zolo
Via
Bel
zoni
Lab.
Cose da Fare
1) Per chi non le ha già chiedere un nome di utenza (Username) ed una parola di accesso (Password) che permettono di accedere al laboratorio. Ricopiarle su di un foglio di carta e conservarle. Se le si perde non si può più accedere al laboratorio.
2) Usando username e password entrare nel sistema operativo Linux
3) Aprire una shell di Linux
4) Aprire emacs per scrivere un programma Assembler nel file medvar usando il comando:
emacs medvar &
Il programma deve: • leggere un intero n• leggere n numeri reali e calcolarne la media e la varianza• stampare media e varianza.
Prepararsi il programma assembler scritto su di un foglio di carta.
La media m e la varianza 2 di n numeri reali x1,x2,…,xn sono date dalle formule:
n
xxxm n
...21
222
22
1
222
212
...
)(...)()(
mn
xxx
n
mxmxmx
n
n
5) Eseguire tale programma nella shell usando il comando:
interprete medvar
6) Correggere eventuali errori e rieseguirlo finchè funziona.
7) Salvare il file medvar ed uscire da Linux.
Facciamo un esercizio dello stesso tipo: • leggere un intero n• leggere n numeri reali e calcolarne il minimo min e il massimo max• stampare il valore dei due prodotti n min ed n max.
n : INT ;zero : INT 0;uno : INT 1;x : FLOAT ;npermin : FLOAT ;npermax : FLOAT ;nf : FLOAT 0;unof : FLOAT 1.0; READ STINP n; LOAD R0 zero; LOAD R2 n; COMP R2 R0 ; BRGT OK; WRITE STOUT n; STOP;
Controllo che n > 0.Se non è così non si può calcolare minimo e massimo.
OK: READ STINP x; LOAD R3 nf; LOAD R4 unof; FADD R3 R4; LOAD R1 uno; SUB R2 R1; LOAD R5 x; LOAD R6 x;
n > 0 : posso leggere il primo
R3 è il numero di valori letti rappresentato come FLOAT
R5 è il minimo ed R6 il massimo dei valori letti
R2 è il numero di valori rimasti da leggere
Ciclo: COMP R2 R0; BRLE Esci; READ STINP x; FADD R3 R4; SUB R2 R1; LOAD R7 x; FCOMP R7 R5; BRGE NonMin; LOAD R5 x; BRANCH Ciclo;NonMin : FCOMP R7 R6; BRLE Ciclo; LOAD R6 x; BRANCH Ciclo;
R3 è il numero di valori letti rappresentato come FLOATR7 è l’ultimo valore letto
R2 è il numero di valori rimasti da leggere
R5 è il minimo ed R6 il massimo dei valori letti
Esci: FMULT R5 R3; FMULT R6 R3; STORE R5 npermin; STORE R6 npermax; WRITE STOUT npermin; WRITE STOUT npermax; STOP;
R3 è il numero di valori letti rappresentato come FLOAT
R5 è il minimo ed R6 il massimo dei valori letti
Esempio potenza
Leggere un reale x ed un intero positivo n e calcolare la potenza xn
Complessità
X: FLOAT ;N: INT ;Ris: FLOAT ;Uno : INT 1;Unofl: FLOAT 1.0;READ STINP X;READ STINP N;LOAD R0 Uno; SUB R0 R0;LOAD R1 Uno;LOAD R2 X;LOAD R3 N;LOAD R4 Unofl;
X: 3,0
N: 4
Ris: ?
R0: 0
R1: 1
?RC:
Uno: 1
Unofl: 1,0
R2: 3,0
R3: 4
R4: 1,0
Ciclo: COMP R3 R0; BREQ Esci; FMULT R4 R2; SUB R3 R1; BRANCH Ciclo;Esci: STORE R4 Ris; WRITE STOUT Ris; STOP;
Durante il ciclo: R4 = XN-R3
Alla fine del ciclo: R3=0 ed R4 = XN
X: 3,0
N: 4
Ris: ?
R0: 0
R1: 1
?RC:
Uno: 1
Unofl: 1,0
R2: 3,0
R3: 4
R4: 1,0
1
3,0
3
1
9,0
2
1
27,0
1
1
81,0
0
0
81,0
All’inizio del ciclo: R4 = XN-R3
FMULT R4 R2;SUB R3 R1;
NO
flowchart
SIR3 = R0?
READ STINP X;READ STINP N;LOAD R0 Uno; SUB R0 R0;LOAD R1 Uno;LOAD R2 X;LOAD R3 N;LOAD R4 Unofl;
STORE R4 Ris;WRITE STOUT Ris;STOP
Ciclo:
Esci:
Nel programma precedente, per calcolare xn, il ciclo viene ripetuto n volte.
Il numero di operazioni eseguite, e quindi il tempo calcolo richiesto, aumenterà proporzionalmente con l’aumentare di n.
Diciamo che il programma ha complessità tempo O(n).
Vediamo un altro modo per calcolare xn.
Useremo un metodo più veloce che usa la rappresentazione binaria bk-1bk-2 …b1b0 di N per scomporre la potenza come segue
00
11
22
11
00
11
22
11
2222
22...22
... bbbb
bbbbN
XXXX
XXk
kk
k
kk
kk
dove
1 se
0 se12
2
i
ib
bX
bX i
ii
Per calcolare:
1...0
01
12
21
1 2222
bbbbN XXXXXk
kk
k
R2R2R2 221
XX
R2R2R2 422
XX
R2R2R2 823
XX
1 seR2R40 seR4
R40
0200
bb
X b
XXX 120
R20.1R4
1 seR2R40 seR4
R41
122 00
11
bb
XX bb
1 seR2R40 seR4
R42
2222 00
11
22
bb
XXX bbb