Scusa il ritardo per la risposta
nel tuo codice ho trovato un grave errore
la MOV [array+ecx],eax ; significa il dato della locazione di memoria indirizzata da array+ecx=eax
esempio locazione 100+1=00000041 = 'A' il che non centra niente con il tuo array
ma nelle specifica devi modificare l'array cosa che non avviene.
l'istruzione corretta sarebbe MOV array[ecx],eax indirizzamento di un array. Ma anche questa istruzione non è corretta perchè dalle specifiche si lavora con i caratteri che sono dei byte mentre questa istruzione lavora sulle DWORD.
quindi andresti a modificare 4 caratteri alla volta creando un papocchio!
la soluzione è MOV byte ptr array[ecx],al
perchè al è un registro a 8 bit quindi gestisce i byte
e cosi puoi modificare un carattere alla volta.
non preoccuparti del caricamento nel registro al perchè viene fattoautomaticamente quando esegue la Mov eax,[esi]
un altro errore che c'è e il seguente
check:
cmp DWORD[ESI],0
anche qui lavori con dimensioni sbagliate
l'istruzione giusta è CMP byte ptr [esi],0
un consiglio non usare ecx ,registro contatore, per indirizzare i vettori perchè ad esso sono legate diverse istruzioni che involotareamente possono darti problemi di difficile rilevazione.
usa ebx,registro base, che è stato "creato" appositamente per gli indirizzamenti.
fammi sapere se ci sono altri errori