Ciao
in che senso non funziona ?
1) errore di compilazione ?
2) risultato sbagliato?
batti la scelta ?
se hai premuto 1 devi indicare il tipo di errore che hai.
se hai premuto 2
ti posso dire che ci sono alcuni errori concettuali.
visto che le macro acquisisci la usi una sola volta non ti serve la puoi mettere comodamene nel listato.
la variabile stringa deve essere definita :
stringa db 10 dup(?) e non stringa db 10, ?, 10 dup(?)
poi tutta la parte del ciclo è sbagliata perchè
cmp stringa[si],'$'
je fine
1) dovresti specificare il tipo di dato che utilizzi mettendo byte ptr tra cmp e stinga.
2) stringa[si] non potrà mai essere = "$" perchè quando inserisci la stringa la termini con invio a meno che tu non inserici il "$" di proposito cosa che non credo!
3) la stringa punterà sempre allo stesso elemento perchè prima della cmp hai inserito
mov si,2 ;punto al primo carattere?
4) il registro cx non è impostato cosi il ciclo sara fatto solo una volta.
il ciclo corretto è :
start: stampa msg1
acquisisci stringa
mov si,2
mov cx, 0
mov cl,stringa[1]
ciclo:
mov al,stringa[si]
mov ah,0
mov bl, 2
div bl
cmp ah,0
jz pari
stampa d
fine_ciclo:
inc si
loop ciclo
mov ax,4c00h
int 21h
pari : stampa p
jmp fine_ciclo
se non riesci a capire non preoccuparti sarò lieto di aiutarti.