![]() |
Pages (3): « 1 [2] 3 » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Architettura degli elaboratori e delle reti (http://www.dsy.it/forum/forumdisplay.php?forumid=210)
-- [D'antona] Progetto Polacca (http://www.dsy.it/forum/showthread.php?threadid=12999)
Originally posted by elpampero
Scusa, ma come faccio a confrontare un carattere con '/n'? di solito io faccio un beqz per confrontare con lo 0....
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Perchè questo programma per il calcolo del fattoriale non funziona? l'ho copiato pari pari dal sito di borghese.
# programma per il calcolo ricorsivo di n!
.data
prompt: .asciiz "\nInserire un numero intero: "
output: .ascii "Fattoriale: "
.text
.globl main
main:
# Lettura dell’intero di cui si calcola il fattoriale
li $v0, 4 # $v0 ¬ codice della print_string
la $a0, prompt # $a0 ¬ indirizzo della stringa
syscall # stampa della stringa
li $v0, 5 # $v0 ¬ codice della read_int
syscall # legge l’intero n e lo carica in $v0
# Calcolo del fattoriale
move $a0, $v0 # $a0 ¬ n
jal fact # chiama fact(n)
move $s0, $v0 # $s0 ¬ n!
# Stampa del risultato
li $v0, 4 # $v0 ¬ codice della print_string
la $a0, output # $a0 ¬ indirizzo della stringa
syscall # stampa della stringa di output
move $a0, $s0 # $a0 ¬ n!
li $v0, 1 # $v0 ¬ codice della print_int
syscall # stampa n!
# Termine del programma
li $v0, 10 # $v0 ¬ codice della exit
syscall # esce dal programma
fact:
addi $sp, $sp,-8 # alloca stack
sw $ra, 4($sp) # salvo return address
sw $a0, 0($sp) # salvo l’argomento n
bgt $a0, $zero, core # se n > 0 salta a core
li $v0, 1 # $v0 ¬ 1
j end
core:
addi $a0, $a0,-1 # decremento n --> (n–1)
jal fact # chiama fact(n-1) in $v0
lw $a0, 0($sp) # ripristino n in $a0
mul $v0, $a0, $v0 # ritorno n * fact (n-1)
end:
lw $ra, 4($sp) # ripristino return address
addi $sp, $sp, 8 # dealloca stack
jr $ra # ritorno al chiamante
Originally posted by elpampero
Nessuno lo sta svolgendo?
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
Originally posted by elpampero
Nessuno lo sta svolgendo?
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
Finalmente qualcuno che è sulla mia stessa barca....
Dunque...teoricamente dovrebbe bastare una sola pila. Il primo problema è COME FACCIO A PRENDERE I NUMERI A 2 CIFRE?
Originally posted by elpampero
Finalmente qualcuno che è sulla mia stessa barca....
Dunque...teoricamente dovrebbe bastare una sola pila. Il primo problema è COME FACCIO A PRENDERE I NUMERI A 2 CIFRE?
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
Ora sono un pò preso...però mi interesserebbe consultarmi con qualcuno. Visto che sei l'unico nella mia situazione ti dò anche il mio indirizzo e-mail...elpampero@libero.it
Come posso fare per "spezzare" una stringa. In altre parole come posso prendere i numeri a 2 o più cifre?
Nessuno riesce a darmi una mano?
Originally posted by elpampero
Nessuno riesce a darmi una mano?
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
Tu dicevi di impilare carattere per carattere...ma in realtà non conviene. Bisognerebbe trovare un metodo per riconoscere nella stringa i due numeri. Per esempio:
34 87+ andrebbe impilato come 34 e 87 NON come 3 4 Spazio 8 7
Originally posted by elpampero
Tu dicevi di impilare carattere per carattere...ma in realtà non conviene. Bisognerebbe trovare un metodo per riconoscere nella stringa i due numeri. Per esempio:
34 87+ andrebbe impilato come 34 e 87 NON come 3 4 Spazio 8 7
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
L' unico modo che mi viene per impilare il numero nella sua interzza è quello di allocare tanto spazio di memoria per tante (da definire) stringhe temporanee in cui tenere i numeri man mano che si compongono e di cui impilare l' indirizzo nello stack,ma mi sembra uno spreco enorme .
Misembra più conveniente impilare tutte le stringhe, che presumibilmente non saranno tantissime, di dimensioni abbastanza consistenti, nello stack e muovere lo SP del numero giusto di byte (anche se molto sarà vuoto).
Che ne dite?
L' unico modo che mi viene per impilare il numero nella sua interzza è quello di allocare tanto spazio di memoria per tante (da definire) stringhe temporanee in cui tenere i numeri man mano che si compongono e di cui impilare l' indirizzo nello stack,ma mi sembra uno spreco enorme .
Misembra più conveniente impilare tutte le stringhe, che presumibilmente non saranno tantissime, di dimensioni abbastanza consistenti, nello stack e muovere lo SP del numero giusto di byte (anche se molto sarà vuoto).
Che ne dite?
Ma che diferenza c'e' tra add, addu, addi ecc...? nel mio programma ho messo tutti add e non mi da nessun problema
| All times are GMT. The time now is 04:45. | Pages (3): « 1 [2] 3 » Show all 32 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.