Ciao a tutti! Vorrei creare un programma che consenta all'utente di inserire una stringa di caratteri (un numero indefinito) e che successivamente mi indichi se il numero di caratteri inseriti è pari oppure dispari.
La traccia sembra molto semplice, eppure dopo svariati tentativi non riesco a digitare la stringa (o meglio riesco a scrivere solo il primo carattere) ed il resto non fa bene il suo dovere. Chi saprebbe dirmi gentilmente dove sbaglio?? Grazie!

Posto qui il mio codice:

;Scrivere un programma in linguaggio Assembly che ha in Input una stringa
;di caratteri o numeri e calcolare il numero DI CARATTERI inseriti, dividere
;questo numero per 2, e stampare a video come Output se il numero dei caratteri e' pari
;o dispari. Utilizzare macro per stampa a video.


;name "6" ;Output file name.


include 'emu8086.inc'


ORG 100h

;#MAKE_COM#


LEA SI, msg1 ;Ask for the character string
CALL GET_STRING
CALL PRINT_STRING
MOV AH, 1
INT 21h

MOV SI, 0
MOV DI, 5

vettore PROC
CMP A[DI], 5 ;Controlla se zero (Criterio di stop)
JE even_or_odd


MOV DL, A[SI] ;Legge il prossimo carattere ASCII ;Voglio visualizzare il vettore
MOV AH, 2 ;di interi(senza spazi, per ora)
INT 21h

INC SI ;Incrementa l'indice dell'Array
DEC DI ;Decrementa il DI

vettore ENDP

even_or_odd: MOV AX, SI
MOV BL, 2
MOV BH, 0
DIV BX
CMP AH, 0 ;NON L'HO CAPITA!!!!
PRINTN 'The number of characters is odd!'

CMP AH, 0
PRINTN 'The number of characters is even!'

JMP stop

stop: RET ;Return to Operating System.


msg1 DB 'Enter a character string : ', 0
A DB 5 DUP (?)

DEFINE_PRINT_STRING
DEFINE_GET_STRING


END ;Directive to stop the compiler.