Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi A - F > Architettura degli elaboratori e delle reti > Filez > Progetto Stirling in Assembly
  Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
yoruno
.grande:maestro.

User info:
Registered: Jul 2003
Posts: 10602 (1.29 al dì)
Location: Altrove
Corso: 404 error
Anno: 404 error
Time Online: 123 Days, 2:50:08: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged
Progetto Stirling in Assembly

Pensavo ci fosse già, e invece... :look:

Attachment: stirling.zip
This has been downloaded 129 time(s).

__________________
"Voi che tingete i mari del colore dello zinco, che tramutate i boschi in gialli deserti, i venti in fumi di polveri da sparo e che bruciate i cieli. Voi che volete ripetere i malvagi atti della sconsiderata Lilith, che fu la prima moglie di Adamo e poi la sposa del Diavolo. Voi che volete ripetere la ribellione scatenata da Lucifero, del mondo celeste il più splendente. Voi! Ascoltate l'afflizione della sottospecie alata che vola alta nel cielo." [Angel Sanctuary]
::: mail: yoruno@dsy.it ::: ::: My Site ::: ::: Dsy Photo Gallery ::: ::: DeviantART Gallery :::

14-05-2005 10:51
Click Here to See the Profile for yoruno Click Here to See the Blog of yoruno Click here to Send yoruno a Private Message Visit yoruno's homepage! Find more posts by yoruno Add yoruno to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
yoruno
.grande:maestro.

User info:
Registered: Jul 2003
Posts: 10602 (1.29 al dì)
Location: Altrove
Corso: 404 error
Anno: 404 error
Time Online: 123 Days, 2:50:08: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Mi si segnalano problemi di lettura, posto il progetto in codice :)

code:
#-----------------------------------------------------------------------------# # Stirling # # Programma sviluppato con MIPSter 1.04, PCSpim 1.0, SPIM 6.5 su Windows 2000 # Il programma calcola la ricorrenza dei numeri di Stirling di seconda specie #-----------------------------------------------------------------------------# .data #-----------------------------------------------------------------------------# # Stringhe di testo utilizzate dal programma. #-----------------------------------------------------------------------------# ask_n: .asciiz "\nInserisci n per S(n,k): " ask_k: .asciiz "\nInserisci k per S(n,k): " risultato_a: .asciiz "\nS(" risultato_b: .asciiz "," risultato_c: .asciiz ") e' uguale a " .text .globl main #-----------------------------------------------------------------------------# # Corpo main del programma. #-----------------------------------------------------------------------------# main: la $a0, ask_n # Richiesta del valore n di S(n,k) li $v0, 4 syscall li $v0, 5 # Memorizzazione del valore n in $t1 syscall # ($t1 utilizzato per la visualizzazione finale) move $t1, $v0 la $a0, ask_k # Richiesta del valore n di S(n,k) li $v0, 4 syscall li $v0, 5 # Memorizzazione del valore k in $a1 e $t2 syscall # ($t2 utilizzato per la visualizzazione finale) move $a1, $v0 # ($a1 utilizzato per il calcolo di S(n,k) move $t2, $v0 move $a0, $t1 # Memorizzazione del valore n in $a0 per S(n,k) jal Stirling # Chiamata della procedura di calcolo di S(n,k) move $t0, $v0 # Memorizzazione di S(n,k) in $t0 (temporaneo) #-----------------------------------------------------------------------------# # Visualizzazione del risultato finale della computazione. # # ( es.: S(5,2) è uguale a 15 ) # #-----------------------------------------------------------------------------# la $a0, risultato_a # Visualizzazione della stringa "S(" li $v0, 4 syscall move $a0, $t1 # Visualizzazione di n inserito inizialmente li $v0, 1 syscall li $v0, 4 # Visualizzazione della stringa "," la $a0, risultato_b syscall move $a0, $t2 # Visualizzazione di k inserito inizialmente li $v0, 1 syscall li $v0, 4 # Visualizzazione della stringa ") e' uguale a " la $a0, risultato_c syscall move $a0, $t0 # Stampa del valore di S(n,k) calcolato li $v0, 1 syscall li $v0, 10 # Uscita dal programma syscall #-----------------------------------------------------------------------------# # Calcolo di S(n,k) = S(n-1,k-1) + kS(n-1,k) tramite ricorsione. #-----------------------------------------------------------------------------# Stirling: subu $sp, $sp, 20 # Allocazione dello stack sw $ra, 16($sp) # Memorizzazione del return address sw $s0, 4($sp) move $s0, $a0 # Memorizzazione di n in $s0 sw $s1, 8($sp) move $s1, $a1 # Memorizzazione di k in $s1 sw $s2, 12($sp) #-----------------------------------------------------------------------------# # Test di controllo dei valori di n e k. # # Viene considerato che S(n,k) risulta essere: # # S(n,k) = 1 se n = k oppure n > 1 e k = 1. # S(n,k) = 0 se k > n. # # In tutti gli altri casi S(n,k) = S(n-1,k-1) + kS(n-1,k). # # Viene inoltre controllato che sia n, k > 0. #-----------------------------------------------------------------------------# beq $s0, $zero, zero # Controllo di correttezza dei valori beq $s1, $zero, zero # Se n,k = 0 allora S(n,k) = 0 beq $s1, $s0, uno # Se k = n allora S(n,k) = 1 beq $s1, 1, k_equal_1 # Se k = 1 allora controlla se n > 1 bgt $s1, $s0, zero # Se k > n allora S(n,k) = 0 j end_check # In tutti gli altri casi fine controllo valori k_equal_1: # Se k = 1 bgeu $s0, 1, uno # controlla se n > 1 e quindi S(n,k) = 1 j end_check # altrimenti fine del controllo dei valori uno: # Se k = n oppure k = 1, n > 1 li $v0, 1 # allora S(n,k) = 1 j snk # e salta alla visualizzazione del valore finale zero: # Se n = 0 oppure k = 0 oppure k > n li $v0, 0 # allora S(n,k) = 0 j snk # e salta alla visualizzazione del valore finale #-----------------------------------------------------------------------------# # Vengono decrementati i valori di n e k secondo la formula di Stirling e si # procede alla ricorsione di S(n-1,k-1) e kS(n-1,k) #-----------------------------------------------------------------------------# end_check: addu $a0, $s0, -1 # Memorizza n = n - 1 in $a0 addu $a1,$s1,-1 # Memorizza k = k - 1 in $a1 jal Stirling # Chiamata della procedura per S(n-1,k-1) move $s2,$v0 # Memorizza il risultato di S(n-1,k-1) in $s2 addu $a0,$s0,-1 # Memorizza n = n - 1 in $a0 move $a1,$s1 # Memorizza k in $a1 jal Stirling # Chiamata della procedura per S(n-1,k) mul $v0,$v0,$a1 # Memorizza il risultato di kS(n-1,k) in $v0 addu $v0,$v0,$s2 # Memorizza S(n-1,k-1) + kS(n-1,k) in $v0 #-----------------------------------------------------------------------------# # Ripristino dei valori dallo stack. #-----------------------------------------------------------------------------# snk: lw $ra, 16($sp) # Ripristino del return address in $ra lw $s0, 4($sp) # Ripristino di n in $s0 lw $s1, 8($sp) # Ripristino di k in $s1 lw $s2, 12($sp) # Ripristino di S(n,k) in $s2 addu $sp, $sp, 20 # Deallocazione dello stack jr $ra # Ritorno al chiamante #-----------------------------------------------------------------------------# # FINE DEL PROGRAMMA #-----------------------------------------------------------------------------#

__________________
"Voi che tingete i mari del colore dello zinco, che tramutate i boschi in gialli deserti, i venti in fumi di polveri da sparo e che bruciate i cieli. Voi che volete ripetere i malvagi atti della sconsiderata Lilith, che fu la prima moglie di Adamo e poi la sposa del Diavolo. Voi che volete ripetere la ribellione scatenata da Lucifero, del mondo celeste il più splendente. Voi! Ascoltate l'afflizione della sottospecie alata che vola alta nel cielo." [Angel Sanctuary]
::: mail: yoruno@dsy.it ::: ::: My Site ::: ::: Dsy Photo Gallery ::: ::: DeviantART Gallery :::

23-05-2005 15:19
Click Here to See the Profile for yoruno Click Here to See the Blog of yoruno Click here to Send yoruno a Private Message Visit yoruno's homepage! Find more posts by yoruno Add yoruno to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 19:43.    Post New Thread    Post A Reply
  Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.065 seconds (62.18% PHP - 37.82% MySQL) con 27 query.