2
« en: Miércoles 22 de Noviembre de 2006, 23:32 »
Tengo esto realizado, y compare el caracter capturado si es un numero y funciona...pero en las otras comparaciones, me genera bastantes errores!
AQui lo envio para que me colabores...porfa...
cr EQU 13
lf EQU 10
print macro arg1
push ax
push dx
lea dx,arg1
mov ah,9
int 21h
pop dx
pop ax
endm
read macro arg1
push ax
push dx
lea dx,arg1
mov ah,10
int 21h
pop dx
pop ax
endm
dades SEGMENT PARA PUBLIC
missatge DB 'Digita el caracter',cr,lf,'$'
mis1 DB 'es numero',cr,lf,'$'
mis3 DB 'ES MIN',cr,lf,'$'
mis4 DB 'ES may',cr,lf,'$'
maxcad DB 30
lencad DB 0
cadena DB 30 DUP(0)
numero DB 5 DUP(0),'$'
linia_blanc DB cr,lf,'$'
missatge2 DB 'Desea salir?',cr,lf,'$'
maxcad2 DB 2 ;longitud máxima.
lencad2 DB 0 ;longitud leida.
cadena2 DB 2 DUP(0) ;buffer que contendrá el texto introducido.
blanc DB cr,lf,'$'
dades ENDS
codi SEGMENT PARA PUBLIC 'code'
main PROC FAR
ASSUME CS:codi,DS:dades,SS:pila,ES:dades
mov ax,dades
mov ds,ax
mov es,ax
inicio:
print missatge ;pide que se introduzca un mensaje y lo guarda en maxcad
read maxcad
print linia_blanc ;imprime linea en blanco
mov bx,0 ;pone el registro bx a 0
pushpila:
mov al, cadena[bx] ;movemos la cadena introducida a al
push ax
inc bl
cmp bl, lencad ;hacemos la comparacion para que el proceso se repita mientras bl no sea 0
jne pushpila
mov bx, 0
caracter:
cmp numero[bx],0 ;Comprueba posicion a posicion que el caràcter introducido es un
jb error ;numero decimal, por eso verifica si esta entre 0 y 9 si no esta
cmp numero[bx],9 ;salta al bucle error.
ja error
inc bl
cmp bl,lencad
jne caracter
; si no salta a numeros
error:
print blanc
print mis1
print blanc
jmp salir
salir:
mov ax,4c00h
int 21h
main ENDP
codi ENDS
pila SEGMENT PARA STACK 'stack'
DB 128 DUP(0)
pila ENDS
END main