[ASSEMBLY] Problema funzione
Posted by LiLywhite on 10-05-2006 21:44
Ciao a tutti. vi scrivo disperata perché non riesco a creare un programma funzionamente in Assembly. prima di tutto mi scuso per l'intrusione perché io studio alla Sapienza.

Ho un problema con una funzione ITERATIVA, non tanto con l'assembly quanto con il concetto :-P

la funzione è :
f (0,0)=6
f(x,y)=10 se x=0 o y=0
f(x,y)=3x+y+f(x-1,y-1) con x>=0,y>=0

esempio: f(3,2)=28
f(2,2)=18

n è interopositivo incluso lo zero.

vi sposto il codice in linguaggio assembly, non so nemmeno se voi usate questo, so che non è il massimo...cmq il mio problema è che mi perdo in contenuto di f(x,y), perché a questo svrappongo f(x-1,y-1)... come addizionarlo sena perderli è una cosa che dai tempi del c non mi è affato chiara, soprattutto inquesto caso.


ecco il codice:
#scrivere un programm che dati in input x e y si comporti così
# f(x,y)=10 se x=0 o y=0
#f(x,y)=3x+y+f(x-1,y-1) se x>=0,y>=0

.text
.globl main

main:
li $v0,5 #x
syscall
move $t0,$v0

li $v0,5 #y
syscall
move $t1,$v0

li $t3,0 #dato che $t potrebbe essere sporco

blt $t0,$t1,xminy
beq $t0,$t1,xugy

xmaggy:
beqz $t1,min0
mul $t2,$t0,3 #3x
add $t3,$t2,$t1 #z=3x+y
sub $t0,$t0,1 #x=x-1
sub $t1,$t1,1 #y=y-1
addi $t3,$t3,0 #z=z+0 questo non va
bgt $t0,$t1,xmaggy

xminy:
beqz $t0,min0
mul $t2,$t0,3 #3x
add $t3,$t2,$t1
sub $t0,$t0,1 #x=x-1
sub $t1,$t1,1 #y=y-1
addi $t3,$t3,0 #z=z+0
blt $t0,$t1,xminy

min0:
addi $t3,$t3,10

li $v0,1
move $a0,$t3
syscall
j fine


xugy:
beqz $t0,zero
mul $t2,$t0,3
add $t3,$t2,$t1
sub $t0,$t0,1
sub $t1,$t1,1
addi $t3,$t3,0
bgtz $t0,xugy

zero:
addi $t3,$t3,6
li $v0,1
move $a0,$t3
syscall


fine:
li $v0,10
syscall



se qualcuno riuscirà ad aiutarmi, gli sarò infinitamente grata
Powered by: vbHome (lite) v3.8 and vBulletin v2.3.1
Copyright © 2000 - 2002 Jelsoft Enterprises Limited