Ciao caro oregon, scusa se sto abusando della tua pazienza, ma davvero non riesco a risolvere il problema (ho appena finito di provarci anche con un mio collega, fino a quest'ora tarda).
Ho dato un'occhiata al tuo codice ma ci sono cose che il prof non ci ha spiegato, te l'ho detto le lezioni sono state molto banali, so che è difficile a credersi ma è così... il problema è che io vorrei riuscire a farlo come faccio tutti gli altri programmi che vanno bene al prof ed ho quindi riprovato con il seguente codice:
codice:
org 100h
.model small
.stack 100h
.data
var db 6
.code
start: mov al,1
mov bl,1
mov dl,al
or dl, 30h
mov ah,2h
int 21h
mov dl,bl
or dl, 30h
mov ah,2h
int 21h
mov cl,2
ciclo: add al,bl
mov dl,al
or dl, 30h
mov ah,2h
int 21h
add bl,al
mov dl,bl
or dl, 30h
mov ah,2h
int 21h
add cl,2
cmp cl,var
jl ciclo
fine: mov ax,4c00h
int 21h
end start
In questo codice inizializzo una variabile a 6 (voglio il sesto numero di fibonacci), metto in al 1 ed in bl 1, stampandoli (primi due numeri). Avendo già fatto i primi due numeri, inizializzo cl a 2. A questo punto entro nel ciclo. Sommo al con bl (risultato 2) e lo stampo; sommo bl con al (risultato 3) e stampo. Sommo a cl 2, perchè ho già calcolato altri 2 numeri della serie e comparo cl con la variabile che contiene il numero di elementi che voglio. Se cl è minore ritorno al ciclo, altrimenti finisco. Logicamente, a me sembra ok, l'unico problema è che il compilatore mi da il seguente risultato:

A tal proposito, vorrei dire due cose:
1) Il compilatore non mi fa 0+1, ho anche provato fuori dal ciclo a rimettere in al 0, in bl 1, ed a fare una semplice addizione ed il risultato è 2, come diavolo è possibile?
2) I primi due numeri fuori dal ciclo li stampa (1,1); stessa cosa per i primi due dentro il ciclo, il problema sorge per gli ultimi due, come mai?
Grazie mille per l'enorme disponibilità e generosità, spero riuscirai a schiarirmi l'idea, anche perchè l'esame è lunedi e per un po' di tempo non vorrò più sentire parlare di AASM