ciao ragazzi, vi spiego il problema...
devo fare un programma (assembly 80x86)che legga da tastiera dei nomi (lunghezza max 15 caratteri)
e li salvi in un array, per poi riutilizzarli per scorrere la lista, stamparli e fare altre cose..
il problema è dopo aver acquisito il nome, come copiarlo nell'array. vi riporto parte del codice,
sembra che qualcosa scriva nell'array, ma quando vado a stamparlo mi visualizza dei caratteri completamente diversi...
nell'esempio prendo solo 2 nomi... mi basterebbe che funzionasse questo

codice:
dseg
...
inserisci_nome	  DB    CR,LF,LF,'INSERIRE UN NOME:$'
ACCAPO 		  DB 	13,10,'$'
nuovo_nome  DB	 18,0,16 DUP (00h)
nuovo_nome2  DB	 18,0,16 DUP (00h)
nameArray     DB   200 dup (?)                                     ;array statico, max 200 nomi 
...
dseg


(nuovo_utente viene chiamata dal main)

NUOVO_UTENTE PROC NEAR
		
		MOV	DX,OFFSET inserisci_nome	              ;stampo istruzioni
		CALL	STAMPA_STRINGA	                      ;la routine stampa_stringa mostra   
                                                                              ;a video carattere per carattere la 
                                                                              ;stringa
		
		LEA DX, nuovo_nome 				      ;acquisizione della stringa da 
                                                                              ;tastiera
		MOV AH, 0Ah
		INT 21h
		
		MOV	DX,OFFSET ACCAPO                           ;stampa un accapo
		CALL STAMPA_STRINGA
		
		
		MOV	DX,OFFSET inserisci_nome                   ;richiesta secondo nome
		CALL STAMPA_STRINGA
		
		LEA DX, nuovo_nome2				      ;acquisizione il secondo nome
		MOV AH, 0Ah
		INT 21h
		
		MOV	DX,OFFSET ACCAPO
		CALL STAMPA_STRINGA
		

		
		mov di, offset NameArray
		cld
		
		mov ax, ds
		mov es, ax
		mov bx, offset nuovo_nome
		mov ch, 00h
		MOV CL, [BX+1]	                                        ;all'offset 1 dovrebbe essere contenuta la lunghezza della stringa, la metto nel contatore
		mov si, [BX+2]	                                        ;all'offset 2 comincia la stringa
		rep movsw                                                  ;copia primo nome
		
		mov bx, offset nuovo_nome2                     ;il reg DI dovrebbe essere aumentato in automatico dopo ogni operazione, quindi questa dovrebbe scrivere nell'indice successivo
		mov ch, 00h
		MOV CL, [BX+1]	
		mov si, [BX+2]	
		rep movsw                                                  ;copia secondo nome
		
		
	
			RET
NUOVO_UTENTE ENDP