Qui il primo dubbio come faccio a dire che numero + 1 è la lunghezza della stringa?
[numero+1] è un indirizzo non un valore. E' l'indirizzo dove si trova il numero di caratteri inseriti. E' la funzione usata con la INT 21h che, come ti ho detto prima, restituisce un valore all'interno della locazione [numero+1].
Non capisco la gestione di numero fatta in questo modo
Carica in DL il valore della locazione all'indirizzo [numero+si+2]. In questo modo prende tutti i caratteri che si trovano a partire dall'indirizzo [numero+2]
equivale (?) a una mov in quanto al è vuoto e quindi ritrovo il valore di dl in Al
No. Stai facendo una ADD quindi stai addizionando il valore di DL con quello precedente di AL e il risultato va in AL. All'inizio del ciclo AL è zero ma durante il ciclo no perché conserva i vari risultati delle addizioni.
perchè fare addizione con carry se ho 0 ?!!?
Perché così l'eventuale riporto (carry), viene sommato al valore precedente di AH.
Se non comprendi ancora, prova a fare una semplice somma con la matita e controlla come usi i riporti.
Hai spiegato le varie operazioni ma non il perché di questo ciclo. Cosa succede alla fine del ciclo? Cosa hai nel registro AX ?
Prova a fare un esempio, come ti chiedevo prima, come se i caratteri nel buffer fossero
1 8 2
Cosa succede a quei 3 caratteri? Cosa ottieni in quel caso in AX?