Hajar92
Hajar92 - Ominide - 16 Punti
Rispondi Cita Salva
ciao ho bisogna di aiuto... devo scrivere un codice assembly tale ke dato un numero n mi restituisca i primi n termini della successione di Fibonacci..! grazie

questo è il mio pseudocodice
a = 1
print a
b = 1
print b
loop
c = a + b
print c
a = b
b = c
end loop

non riesco però a "tradurlo" in assembler. :(
albertom
albertom - Sapiens - 340 Punti
Rispondi Cita Salva
Ciao, salvo qualche errore di battitura e magari qualche riga mancante in alcune system call, la logica dovrebbe essere corretta.


.section .data
a: .long 0
b: .long 0
c: .long 0
n: .long 0 #numero di iterazioni > 2 ..DA INSERIRE IL VALORE CORRETTO..
i: .long 2 #indice per vedere quando fermarsi

_start:
mov $1,%eax #metto 1 nel registro eax
mov $eax,a #metto eax in a

mov $1,%ebx #metto 1 nel registro ebx
mov $ebx,b #metto ebx in b

#stampo a

movl $4, %eax
movl $1, %ebx
leal a, %ecx
int $0x80


#stampo b

movl $4, %eax
movl $1, %ebx
leal b, %ecx
int $0x80


mov a,%eax #rimetto il valore
mov b,%ebx #rimetto il valore
mov $0, %ecx #azzero il valore


loop:
cmp n,i
jle fine #abbiamo fatto tutte le iterazioni

add %eax,%ecx #sommo eax con 0
add %ebx,%ecx #sommo ebx con il valore di eax di prima

mov %ecx, c #c ha il risultato della somma

#stampo il risultato della somma

movl $4, %eax
movl $1, %ebx
leal c, %ecx
int $0x80

mov b, %eax #aggiorno il valore
mov c, %ebx #aggiorno il valore
mov $0, %ecx #azzero il valore in ecx
jmp loop


fine:

xorl %eax, %eax # azzera eax
inc %eax # incrementa eax di 1 (1 e' il codide della exit)
xorl %ebx, %ebx # azzera ebx (alla exit viene passato 0)
int $0x80 # invoca la funzione exit

Aggiunto 17 ore 6 minuti più tardi:

:)
Hajar92
Hajar92 - Ominide - 16 Punti
Rispondi Cita Salva
GRAZIE!! :)
Come guadagno Punti nel Forum? Leggi la guida completa
In evidenza
Classifica Mensile
Vincitori di novembre
Vincitori di novembre

Come partecipare? | Classifica Community

Community Live

Partecipa alla Community e scala la classifica

Vai al Forum | Invia appunti | Vai alla classifica

mc2

mc2 Genius 248 Punti

Comm. Leader
mattbit

mattbit Geek 281 Punti

VIP
Registrati via email