Salve...
Ho scritto questa funzione che in teoria deve prendere in input una stringa mettendola nell'indirizzo di memoria passato alla funzione tramite il registro ebx, la lunghezza è passata con il registro cx!! La stringa deve terminare con i caratteri di fine stringa 0x0A, 0x0D... Quindi la lunghezza della stringa è il valore di cx meno due.... Io non capisco perché quando uso l'indirizzamento indiretto sul registro eax per inserire i valori di fine stringa il programma va in segmentetion fault:

codice:
	cmp $2, %cx
	jb return 
	cmp $2,%cx
	movb $0x0A, (%ebx)	
	movb $0x0D, 1(%ebx)
	jbe return
	
	
	push %eax
	push %ebx
	push %ecx
	push %edx

	subw $2, %cx

	movw %cx , var_w
	movl %ebx, var_l
	movl %ebx, %edi	

	movl $SYS_READ, %eax		 	
	movl $STDIN, %ebx			
	movl var_l , %ecx
	movl $var_w, %edx 							
	int $SYSTEM_CALL_LINUX
	
	xor %eax,%eax	

	movl var_l, %eax # metto il primo indirizzo in memoria
	addl $var_w, %eax # metto la somma 	

	movb $0x0A, (%eax)  # <--------

        pop %edx
	pop %ecx
	pop %ebx
	pop %eax
Io credo che il problema sia quello in quanto se lo comento funziona (male)... Non so che pesci pigliare....