adesso però salva carattere per carattere dentro l'array.
per stampare un solo elemento come posso fare??
io ora faccio in modo di salvare, prima del nome, il numero di caratteri
quando lo leggo, metto questo numero di caratteri nel contatore e poi stampo i caratteri che seguono. può essere corretto?
codice:
mov di, offset NameArray
cld
mov ax, ds
mov es, ax
mov bx, offset NUOVO_COGNOME
mov si, offset NUOVO_COGNOME
mov ch, 00h
MOV CL, [BX+1] ;all'offset 1 dovrebbe essere contenuta la lunghezza della stringa
add cl,1 ; incremento di 1 per copiare anche il numero di caratteri
add si, 1 ;all'offset 2 comincia la stringa ma copio anche l'offest 1 per sapere di qanti caratteri sarà la stringa dopo
rep movsb
mov ax, ds
mov es, ax
mov bx, offset NUOVO_NUMERO
mov si, offset NUOVO_NUMERO
mov ch, 00h
MOV CL, [BX+1]
add cl,1
add si, 1
rep movsb
LEA BX, NameArray ;memorizzazione dell'indirizzo della struttura in BX
MOV CH, 00h
MOV CL, [BX] ;lettura del numero di caratteri da visualizzare
MOV DI, 0000h ;inizializzazione dell'indice
CICLO5:
MOV DL, [BX+DI+1] ;visualizzazione di un carattere,salto il numero
MOV AH, 02h
INT 21h
INC DI ;incremento dell'indice
LOOP CICLO5
MOV DX,OFFSET ACCAPO
CALL STAMPA_STRINGA
CMP [di], '16' ;se c'è un numero minore di 16, ovvero c'è ancora qualcosa dopo
INC DI
JB ALTRO
RET
ALTRO: mov cl, [di] ;prendi il nuovo numero di caratteri
LOOP CICLO5 ;e stampali
RET