Scusami correggo le ultime quattro istruzioni (ad esclusione delle end): non sono delle push ma delle pop...
(vecchio codice)
codice:
title numeri
.model small,farstack
.stack
.data
numero dw ?
.code
.startup
PUSH numero ;salvo il parametro nello stack per passarlo alla procedura di lettura
call readecimal ;procedura di lettura del numero
POP numero
.exit
readecimal proc
PUSH bp
mov bp,sp
push ax
push bx
push dx
xor bx,bx
dieci db 10d
lttr:mov ax,bx
mul dieci
vrlt:mov ah,08h
int 21h
cmp al,0Dh ;la lettura del numero termina con l'invio
je fnlttr
mov ah,02h
mov dl,al
cmp al,30h
jb error
cmp al,39h
ja error
int 21h
sub al,30h
xor ah,ah
add bx,ax
jmp lttr
error:mov dl,07h
int 21h
jmp vrlt
fnlttr:mov [BP+4],bx
push dx
push bx
push ax
push bp
readecimal endp
end
codice corretto
codice:
title numeri
.model small,farstack
.stack
.data
numero dw ?
.code
.startup
PUSH numero ;salvo il parametro nello stack per passarlo alla procedura di lettura
call readecimal ;procedura di lettura del numero
POP numero
.exit
readecimal proc
PUSH bp
mov bp,sp
push ax
push bx
push dx
xor bx,bx
dieci db 10d
lttr:mov ax,bx
mul dieci
vrlt:mov ah,08h
int 21h
cmp al,0Dh ;la lettura del numero termina con l'invio
je fnlttr
mov ah,02h
mov dl,al
cmp al,30h
jb error
cmp al,39h
ja error
int 21h
sub al,30h
xor ah,ah
add bx,ax
jmp lttr
error:mov dl,07h
int 21h
jmp vrlt
fnlttr:mov [BP+4],bx
pop dx
pop bx
pop ax
pop bp
readecimal endp
end