Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoRaffaela Milani Modificato 11 anni fa
1
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno 1 2005/2006
2
AA 2005/06 Lab Programmazione L. Capra 2 Linguaggi macchina e assembler Il set di istruzioni direttamente eseguibili dalla CPU di un elaboratore è abbastanza limitato istruzioni di trasferimento dati tra RAM e registri CPU istruzioni aritmetico-logiche (che operano su dati trasferiti nei registri CPU) istruzioni di controllo e salto (permettono di modificare lordine sequenziale di esecuzione) linguaggi assembler: codifica mnemonica dei linguaggi macchina (si usano nomi per denotare il tipo di istruzione, i registri, e le locazioni di memoria contenenti i dati)
3
AA 2005/06 Lab Programmazione L. Capra 3 Un linguaggio assembler generico Faremo riferimento ad una generica CPU con 4 soli registri (R1,R2,R3,R4) ed il seguente set di istruzioni: trasferimento dati CPU – RAM: LOAD, STORE, es. LOAD R1, x% x ad es. denota la locazione n. 102 % aritmetico logiche: ADD,DIV,MUL,SUB: es. ADD R1,R2% risultato in R1% controllo/salto: JUMP,JZERO: es. … JZERO R2, alfa% se R2 == 0 salta alletichetta alfa% DIV R1,R2 … alfa: …
4
AA 2005/06 Lab Programmazione L. Capra 4 Un semplice algoritmo Esercizio: vogliamo calcolare x y, dove x,y: Int, y 0 assumiamo che in due locazioni omonime si trovino i valori corrispondenti Usiamo la definizione x y = Idea base: memorizziamo in un registro (R3) risultato parziale della moltiplicazione { 1 se y = 0 x x… x se y > 0 y volte
5
AA 2005/06 Lab Programmazione L. Capra 5 Caricamento dati LOAD R1, y % valore loc. y caricato in R1% LOAD R2, x % valore loc. x caricato in R2% LOAD R3, #1 % val. 1 memorizzato in R3% LOAD R4, #1 % val. 1 memorizzato in R4 % ….
6
AA 2005/06 Lab Programmazione L. Capra 6 Prima parte (caso y = 0) LOAD R1, y % valore loc. y caricato in R1% LOAD R2, x % valore loc. x caricato in R2% LOAD R3, #1 % val. 1 memorizzato in R3% LOAD R4, #1 % val. 1 memorizzato in R4 % loop :JZERO R1, fine % se R1 = 0 vai a fine% …. fine:PRINT R3
7
AA 2005/06 Lab Programmazione L. Capra 7 Seconda parte (caso y > 0) LOAD R1, y % valore loc. y caricato in R1% LOAD R2, x % valore loc. x caricato in R2% LOAD R3, #1 % val. 1 memorizzato in R3% LOAD R4, #1 % val. 1 memorizzato in R4 % loop :JZERO R1, fine % se R1 = 0 vai a fine% JUMP loop % ritorna a loop% fine:PRINT R3
8
AA 2005/06 Lab Programmazione L. Capra 8 Seconda parte (caso y > 0) LOAD R1, y % valore loc. y caricato in R1% LOAD R2, x % valore loc. x caricato in R2% LOAD R3, #1 % val. 1 memorizzato in R3% LOAD R4, #1 % val. 1 memorizzato in R4 % loop :JZERO R1, fine % se R1 = 0 vai a fine% MUL R3, R2% moltiplica per x risultato parz.% JUMP loop % ritorna a loop% fine:PRINT R3
9
AA 2005/06 Lab Programmazione L. Capra 9 Seconda parte (caso y > 0) LOAD R1, y % valore loc. y caricato in R1% LOAD R2, x % valore loc. x caricato in R2% LOAD R3, #1 % val. 1 memorizzato in R3% LOAD R4, #1 % val. 1 memorizzato in R4 % loop :JZERO R1, fine % se R1 = 0 vai a fine% MUL R3, R2% moltiplica per x risultato parz.% SUB R1, R4 JUMP loop % ritorna a loop% fine:PRINT R3
10
AA 2005/06 Lab Programmazione L. Capra 10 Codifica algoritmo ad alto livello Usiamo uno pseudo-linguaggio di alto livello per implementare lo stesso calcolo Strutture di controllo (sintassi) Selezione SE condizione ALLORA istruzione1 ALTRIMENTI istruzione2 FINESE Iterazione QUANDO condizione ESEGUI istruzione RIPETI
11
AA 2005/06 Lab Programmazione L. Capra 11 Codifica ad alto livello (1) VAR x,y,r: INT leggi x, y r = 1 QUANDO y > 0 ESEGUI r = r * x y = y – 1; RIPETI scrivi r
12
AA 2005/06 Lab Programmazione L. Capra 12 Codifica ad alto livello (2) VAR x,y,r: INT leggi x, y SE y < 0 oppure (x == 0 e y ==0) ALLORA scrivi parametri non corretti ALTRIMENTI r = 1 QUANDO y > 0 ESEGUI r = r * x y = y – 1; RIPETI scrivi r FINESE
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.