Alcuni esercizi e domande per il compitino quali sono le parti principali dellarchitettura 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?
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à dellesercizio 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 Come si controlla se cè overflow o no?
dare la rappresentazione in virgola mobile normalizzata dei valori 0.5, 1.5 e avendo 8 bit per lesponente e 8 per la mantissa. usando 8 bit per lesponente e 8 per la mantissa quale numero è rappresentato da
quali sono le novità principali dellAssembler rispetto al linguaggio macchina? in un programma assembler, perchè si attaccano delle etichette a certe istruzioni?
come si chiama in Assembler listruzione 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. Matematica Chimica Industriale Sc. Materiali e Sc. Geologiche Chimica Via Paolotti Via Marzolo Via Belzoni 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 x 1,x 2,…,x n sono date dalle formule:
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 FLOAT R7 è lultimo 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 x n 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 = X N-R3 Alla fine del ciclo: R3=0 ed R4 = X N 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 0 0 Allinizio del ciclo: R4 = X N-R3
FMULT R4 R2; SUB R3 R1; NO flowchart SI R3 = 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 x n, il ciclo viene ripetuto n volte. Il numero di operazioni eseguite, e quindi il tempo calcolo richiesto, aumenterà proporzionalmente con laumentare di n. Diciamo che il programma ha complessità tempo O(n). Vediamo un altro modo per calcolare x n.
Useremo un metodo più veloce che usa la rappresentazione binaria b k-1 b k-2 …b 1 b 0 di N per scomporre la potenza come segue dove
Per calcolare: