Richiami: v[i] e &v[i] Organizzazione della memoria. Esercizio 1. Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis

Documenti analoghi
Richiami: v[i] e &v[i] Organizzazione della memoria. Organizzazione della memoria. Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 5 Linguaggio Assembly

Architetture dei Calcolatori

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO ORDINAMENTO DIDATTICO 14 Settembre 2004

Istruzioni assembler Istruzione N Registri

5 April LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE. I. Frosio

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET:

PROVA SCRITTA DEL MODULO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO (5-7 CFU) 19 febbraio 2015 NOME: COGNOME: MATRICOLA:

Il Linguaggio Assembly: Gestione della memoria e controllo

Esercizi da esame di Programmazione Assembler MIPS

1 Esercizio. 2 Esercizio

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Calcolatori Elettronici

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

21 March : ESERCITAZIONE 01 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA. I. Frosio

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Il linguaggio macchina

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Esercitazione 7. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

Calcolatori Elettronici A a.a. 2008/2009

Architettura degli Elaboratori

Lecture 2: Prime Istruzioni

Array e puntatori in C

L ambiente di simulazione SPIM

Università degli Studi di Cassino e del Lazio Meridionale

PROVA SCRITTA DEL MODULO/CORSO DI. 24 novembre 2016

Esercitazione 1 Codifica e Rappresentazione dell Informazione Istruzioni Assembly MIPS

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Motorola 68000: primi programmi assembly

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Programmazione I - Laboratorio

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Programmazione I - corso B a.a prof. Viviana Bono

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 13 Luglio 2004

Architettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H

Il linguaggio C. Puntatori e dintorni

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Istruzioni MIPS per floating point

Università degli Studi di Cassino

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

0/0 1/0 1/0 0/0 0/1 1/0 1/0

Linguaggio Assembler MIPS

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri

Corso di Architettura (Prof. Scarano) 09/04/2002

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Laboratorio di Architettura degli Elaboratori

Calcolatori Elettronici

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

ISA (Instruction Set Architecture) della CPU MIPS

/ sezione dichiarativa variabili globali / #define N 10 int vett [N];

MIPS Instruction Set 2

Esempio di procedura annidata. L insieme delle istruzioni (5) Esempio di procedura annidata (2) set_array: Esempio di procedura annidata (3)

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Programmazione I - Laboratorio

FONDAMENTI DI INFORMATICA

Introduzione al linguaggio C Puntatori

Richiami di Fondamenti di Informatica - 1

Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis. Corso di Laurea in Ingegneria Elettronica

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Calcolatori Elettronici A a.a. 2008/2009

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 17/2/2009

Fondamenti di Informatica T-1 Modulo 2

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 19 Febbraio Attenzione:

Calcolatori Elettronici

Architettura degli Elaboratori

Algoritmi di ordinamento: Array e ricorsione

Fondamenti di Informatica T-1 Modulo 2

Esercizi di Algoritmi e Strutture Dati

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Corso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1

Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,...

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Lezione 5 Sottoarray di somma massima

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Sommario FONDAMENTI DI INFORMATICA. Architettura di Von Neumann. Algoritmi e programmi ESERCITAZIONE PYTHON ARCHITETTURA DEI CALCOLATORI

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Esercizio n.1 FONDAMENTI DI INFORMATICA 1. Esercizio n.2. Soluzione. LINGUAGGIO C Funzioni e gestione file: esercitazione

Assembly III SPIM: un ambiente di simulazione MIPS

ALGORITMI E STRUTTURE DATI

Istruzioni Condizionali

Transcript:

Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis Corso di Laurea in Ingegneria Biomedica Corso di Laurea in Ingegneria Elettrica, Elettronica ed Informatica Capitolo 5 Linguaggio Assembly Richiami: v[i] e &v[i] v[i] è il valore dell elemento i nel vettore v; &v[i] è il suo indirizzo. In generale, possiamo usare v come label per indicare la locazione di memoria che corrisponde all indirizzo del primo elemento di v, ovvero &v[0]. Per passare da &v[i] a &v[i+1] dobbiamo incrementare &v[i] di 4 byte (vedi organizzazione della memoria nel MIPS). Indirizzo Valore &v[0] v 1024 v[0] 1 &v[1] v+4 1028 v[1] -1 &v[2] v+8 1032 v[2] 3 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 2 Organizzazione della memoria La memoria è organizzata in locazione da 32 bit (4 byte). Per questo motivo indirizzi adiacenti in memoria distano 4 byte. In figura, i byte da 0 a 3 rappresentano una locazione di memoria! Es. il valore di un elemento di un vettore (v[i]) occupa una locazione di memoria, quindi è memorizzato su 4 byte. Esercizio 1 Mostrare la singola istruzione MIPS o la sequenza minima di istruzioni per i seguenti costrutti C: a = b + 100; x[10] = x[11] + c; Si assuma che a corrisponda al registro $11, b al registro $12, c a $13, e che il vettore x inizi alla locazione di memoria espressa, in base dieci, 1024. Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 3 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 4

addi $11, $12, 100 # a = b + 100; # x[10] = x[11] + c; addi $16, $0, 11 # $16 11 muli $15, $16, 4 # $15 11*4 lw $14, 1024($15) # $14 x[11] add $14, $14, $13 # $14 x[11 ] + c subi $15, $15, 4 # $15 10*4 sw $14, 1024($15) # x[10] $14 (x[11]) $11 a $12 b $13 c &x[0]: 1024 Esercizio 2 Caricare nel registro $16 la seguente costante di 32 bit: 0000 0000 0011 1100 0000 1001 0000 0001 : (0000 0000 0011 1100) 2 = (60) 10 16 bit più significativi della costante (0000 1001 0000 0001) 2 = (2305) 10 16 bit meno significativi della costante Utilizzando l istruzione lui è assai semplice: move $16, $0 lui $16, 60 addi $16, $16, 2305 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 5 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 6 Analisi del codice step-by-step Esercizio 3 $16 1. move $16, $0 0000 0000 0000 0000 0000 0000 0000 0000 Dati due valori i e j memorizzati rispettivamente nei registri $19 e $20, scrivere un frammento di codice Assembly MIPS che incrementi i di j ogni volta che il contenuto della locazione di memoria di indirizzo &save[i] sia uguale ad una costante k memorizzata in $21. $16 2. lui $16, 60 0000 0000 0011 1100 0000 0000 0000 0000 Possibile soluzione in C: while(save[i]==k) i = i + j; $16 3. addi $16, $16, 2305 0000 0000 0011 1100 0000 1001 0000 0001 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 7 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 8

1 2 Loop: mul $9, $19, $10 # $9 i*4 lw $8, save($9) # $8 save[i] bne $8, $21, Exit # se $8!= $21, Exit # (altrimenti continua) add $19, $19, $20 # i = i+j; j Loop Exit: $19 i $10 4 $20 j $21 k Loop: mul $9, $19, $10 # $9 i*4 lw $8, save($9) # $8 save[i] add $19, $19, $20 # i = i+j; beq $8, $21, Loop # se $8==$21, cont. sub $19, $19, $20 # i = i-j Devo decrementare i all uscita del ciclo. Naturalmente, altre soluzioni (corrette) sono benvenute $19 i $10 4 $20 j $21 k Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 9 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 10 Esercizio 4 Scrivere in Assembly MIPS un frammento di codice che copi i valori di un vettore di 100 interi con indirizzo iniziale 1500, in un vettore con indirizzo iniziale 2000, aggiungendo a ciascun valore una costante c. In C: for (i=0; i<100; i++) a[i] = b[i] + c; Si assuma che c $16 e si inizializzi la variabile i(*4) nel registro $15 Usiamo $17 per controllare la condizione di uscita del ciclo: se i == 400, esci. For: addi $17, $0, 400 move $15, $0 lw $14, 2000($15) #x=b[i]; add $14, $14, $16 #x=x+c; sw $14, 1500($15) #a[i]=x; addi $15, $15, 4 #i=i+4; bne $15, $17, For subi $15, $15, 4 $15 i*4 $16 c a: 1500 b: 2000 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 11 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 12

Esercizio 5 Scrivere un frammento di programma Assembly MIPS che effettui la somma degli elementi di un vettore di n interi. Si assuma che l indirizzo iniziale del vettore sia memorizzato nel registro $3 e la dimensione del vettore nel registro $2. La somma va memorizzata nella locazione di memoria generica somma. For: move $8, $0 move $9, $0 beq $9, $2, Exit lw $10, 0($3) add $8, $8, $10 addi $3, $3, 4 addi $9, $9, 1 j For $8 somma $9 i $10 v[i] Exit: sw $8, somma($0) Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 13 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 14 Esercizio 6 Scrivere una funzione Assembly MIPS che, ricevendo in ingresso un intero, ne restituisca il valore assoluto. Abs: subi $29, $29, 4 int abs(int valore) { if(valore<0) return -valore; else return valore; valore $4; il valore di ritorno viene inserito in $5 slt $8, $4, $0 bne $8, $0, Then move $5, $4 j Exit Then: sub $5, $0, $4 Exit: lw $8, 0($29) addi $29, $29, 4 jr $31 # $8 (valore<0) Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 15 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 16

Esercizio 7 Implementare in Assembly MIPS il seguente codice C: int proc(int g, int h, int i, int j) { int f; f = (g + h) (i + j); return f; Si possono usare due registri $9 e $10 per collocare i dati temporanei (g + h) e (i + j). Salvataggio del contesto (parametri/registri): Proc: subi $29, $29, 8 sw $10, 4($29) sw $9, 0($29) g, h, i, j siano allocati nei registri $4-$7 f venga restituito in $4 Il salvataggio dei parametri avviene secondo la tecnica callee save Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 17 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 18 Il corpo della procedura è dunque: add $9, $4, $5 add $10, $6, $7 sub $4, $9, $10 Ripristino dei parametri e ritorno al chiamante: lw $10, 4($29) lw $9, 0($29) addi $29, $29, 8 jr $31 alternativa Senza usare alcun registro temporaneo: Proc: add $4, $4, $5 #f=g+h sub $4, $4, $6 #f=f-i sub $4, $4, $7 #f=f-j jr $31 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 19 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 20

Esercizio 8 Implementare in Assembly MIPS una funzione tale che, dati un vettore di interi di indirizzo iniziale v e dimensione n, estragga il valore minimo. Espresso in C: int min(int v[], int n) { int i, min_v; min_v = v[0]; for(i=1; i<n; i++) if(v[i]<min_v) min_v=v[i]; return min_v; Richieste: Assumere che il salvataggio dei parametri avvenga con modalità callee save &v[0] $4, n $5 Il valore di ritorno viene immagazzinato nel registro $6 : salvataggio del contesto Assumiamo che le variabili locali siano allocate secondo la seguente configurazione: (i<n) $8; (v[i]<min_v) $9 i $10; v[i] $11 Il salvataggio dei parametri richiede le istruzioni: Min: addi $29, $29, -16 sw $9, 4($29) sw $10, 8($29) sw $11, 12($29) Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 21 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 22 : corpo della procedura : procedura completa lw $6, 0($4) move $10, $0 For: addi $10, $10, 1 slt $8, $10, $5 beq $8, $0, Exit addi $4, $4, 4 lw $11, 0($4) slt $9, $11, $6 beq S9, $0, For move $6, $11 j For Exit: (ripristino dei parametri) Min: addi $29, $29, -16 sw $9, 4($29) sw $10, 8($29) sw $11, 12($29) lw $6, 0($4) move $10, $0 For: addi $10, $10, 1 slt $8, $10, $5 beq $8, $0, Exit addi $4, $4, 4 lw $11, 0($4) slt $9, $11, $6 beq S9, $0, For move $6, $11 j For Exit: lw $11, 12($29) lw $10, 8($29) lw $9, 4($29) lw $8, 0($29) addi $29, $29, 16 jr $31 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 23 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 24

Esercizio 9 Scrivere una funzione Assembly MIPS che implementi il seguente codice C. Si assuma che: &x[0] locazione 1000, N $4, &y[0] locazione 2000, M $5. int positivi(int N) { int i,m; M=0; for (i=0; i<n; i++) if(x[i]>0) { y[m]=x[i]; M++; return M; Utilizziamo i seguenti registri: $8 i; $9 (i*4); $10 x[i]; $11 (x[i]>0) $12 (M*4) Ciò richiede il preventivo salvataggio del parametri: positivi: subi $29, $29, 20 sw $9, 4($29) sw $10, 8($29) sw $11, 12($29) sw $12, 16($29) Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 25 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 26 Esercizio 10 For: Exit: move $5, $0 move $8, $0 beq $8, $4, Exit muli $9, $8, 4 lw $10, 1000($9) slt $11, $0, $10 addi $8, $8, 1 beq $11, $0, For muli $12, $5, 4 sw $10, 2000($12) addi $5, $5, 1 j For (Ripristino dei parametri) Scrivere una funzione che, ricevendo in ingresso un vettore v, un intero x e la dimensione di v, indicata con N, restituisca la posizione di x in v, se presente, altrimenti restituisca il valore -1. &v[0] $4, x $5, N $6 Valore di uscita $7 int posizione(int v[], int x, int N) { int i; for(i=0; i<n; i++) if(v[i]==x) return i; return -1; Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 27 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 28

: corpo della funzione $8 i; $9 v[i]; $2-1; $10 (i<n). Salvataggio parametri: posizione: addi $29, $29, -16 sw $2, 0($29) sw $8, 4($29) sw $9, 8($29) sw $10, 12($29) For: Exit: move $7, $2 move $8, $0 beq $8, $6, Exit lw $9, 0($4) addi $4, $4, 4 addi $8, $8, 1 bne $9, $5, For subi $7, $8, 1 (Ripristino del contesto) Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 29 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 30 alternativa $8 v[i] posizione: subi $29, $29, 4 move $7, $0 #$7 i=0 For: lw $8, 0($4) #$8 v[i] beq $8, $5, Exit #v[i]==x, esci addi $7, $7, 1 #i++ addi $4, $4, 4 #calcola &v[i] bne $7, $6, For #i!=n, cicla addi $7, $0, -1 #i==n, set $7-1 Exit: lw $8, 0($29) addi $29, $29, 4 Algoritmo «selection-sort» Un altro algoritmo di ordinamento degli elementi di un vettore (come il «bubble-sort» visto a lezione). Il criterio in questo caso è selezionare, riducendo progressivamente la dimensione del vettore, il valore minimo (per ordinamento crescente) presente in esso. La funzione swap, che si presume essere disponibile, permuta l elemento i con l elemento j del vettore dato. Si ipotizzi che v sia passato in $4 e n in $5, e che la funzione swap passi l indirizzo di v[i] in $4 e l indirizzo di v[j] in $5. void selection-sort(int v[], int n) { int i,j; for (i=0; i<n-1; i++) for (j=i+1; j<n; j++) if (v[i]>v[j]) swap(&v[i],&v[j]) Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 31 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 32

Assegnazione dei registri i $8, j $9 v[i] $12, v[j] $13 $14 v[i]>v[j] $2 n-1 $10 v, $11 n &v[i] $4, &v[j] $5 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 33 Corpo della funzione <intestazione e salvataggio contesto> move $10, $4 move $11, $5 subi $2, $5, 1 move $8, $0 for_i: beq $8, $2, ex_i muli $4, $8, 4 add $4, $4, $10 lw $12, 0($4) addi $9, $8, 1 for_j: beq $9, $11, ex_j muli $5, $9, 4 add $5, $5, $10 lw $13, 0($5) slt $14, $13, $12 beq $14, $0, upd_j jal swap move $12, $13 upd_j: addi $9, $9, 1 j for_j ex_j: addi $8, $8, 1 j for_i ex_i: <ripristino e rientro> Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 34 Intestazione e salvataggio, ripristino e rientro Altri esercizi Intestazione e salvataggio: selection-sort: subi $29, $29, 32 sw $9, 4($29) sw $12, 8($29) sw $13, 12($29) sw $14, 16($29) sw $10, 20($29) sw $11, 24($29) sw $31, 28($29) Ripristino e rientro: ex_i: move $4, $10 move $5, $11 lw $8, 0($29) lw $9, 4($29) lw $12, 8($29) lw $13, 12($29) lw $14, 16($29) lw $10, 20($29) lw $11, 24($29) lw $31, 28($29) addi $29, $29, 32 jr $31 1. Scrivere un programma Assembly MIPS che, dato un vettore di cento interi memorizzato a partire dalla locazione 1000, ne effettui una copia a partire dalla locazione 65536. 2. Scrivere un programma Assembly MIPS che, dato un vettore di cento interi memorizzato a partire dalla locazione 1000, costruisca a partire dalla locazione 2000 il vettore dei soli elementi non negativi. 3. Scrivere un programma Assembly MIPS che, dato un vettore di cento interi memorizzato a partire dalla locazione 1000, costruisca a partire dalla locazione 65536 il vettore dei soli elementi negativi. 4. Scrivere un programma Assembly MIPS che, dato un vettore di cento interi memorizzato a partire dalla locazione 1000, costruisca a partire dalla locazione 2000 il vettore dei soli elementi pari. 5. Scrivere un programma Assembly MIPS che, dato un vettore di cento interi memorizzato a partire dalla locazione 1000, costruisca a partire dalla locazione 65536 il vettore dei soli elementi dispari. Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 35 Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 36

Altri esercizi (cont d) 4. Scrivere un programma Assembly MIPS che, dato un array di cento interi memorizzato a partire dalla locazione 1000, costruisca a partire dalla locazione 2000 l'array dei soli elementi positivi. 5. Scrivere un programma Assembly MIPS che, dato un array di cento interi memorizzato a partire dalla locazione 1000, ne costruisca a partire dalla locazione 2000 un array ordinato. 6. Scrivere un programma Assembly MIPS che calcoli la media degli elementi di un vettore di N interi. Calcolatori Elettronici Esercizi Assembly - Prof. Marcialis 37