Esercizio Assembler

La seguente matrice rappresenta il Triangolo di Tartaglia:

1 1 1 1 1 1
1 2 3 4 5 6
1 3 6 10 15 ..
1 4 10 20 .. ..
1 5 15 .. .. ..
1 6 .. .. .. 252

Tutti gli elementi della prima riga e della prima colonna sono uguali a 1, cioč:

  • m(1,j)=1 per ogni valore di j
  • m(i,1)=1 per ogni valore di i

Il generico elemento m(i,j) - cioč l'elemento a riga i e colonna j - č dato da: m(i,j) = m(i-1,j)---+ m(i,j-1)

Esempio: m(3,4) = m(3,3)---+ m(2,4) = 6 + 4 = 10


Scrivere un programma Assembler SPIM che:

  • definisce una zona di memoria di nome MATRICE di half-words, la cui dimensione massima č 10x10;

  • chiede il numero di righe e colonne (numero righe = numero colonne) da console;

  • calcola ogni elemento della matrice tramite la subroutine ricorsiva di nome TART(i,j) tale che:
      • riceve in input gli indici i e j
      • fornisce in output il valore:
          • 1 se i =1 oppure j=1
          • TART(i-1,j)---+ TART(i,j-1) altrimenti

Si noti che utilizzando una subroutine ricorsiva l'elemento m(2,3) viene calcolato come: m(2,3)= m(1,3)---+ m(2,2) = 1 + m(1,2) + m(2,1) = 1 + 1 + 1 = 1 + 2 = 3

  • costruisce una seconda matrice di nome MAT2 di bytes, della stessa dimensione di MATRICE, in cui ogni elemento MAT2(i,j) assume come valore:
      • la somma dei due bytes che costituiscono il valore dell'elemento MATRICE(i,j) se tale somma č minore di 255 (cioč se tale somma e' rappresentabile con un byte);
      • il valore assoluto della differenza dei due bytes che costituiscono il valore dell'elemento MATRICE(i,j) altrimenti;

  • stampi su console le due matrici MATRICE e MAT2 per righe.

-- AnnalisaMassini - 02 Apr 2001


This topic: Architetture2/MZ > PrimoEsercizioAssembler2001
Topic revision: r2 - 2001-04-17 - AndreaSterbini
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback