el planteamiento del programa que me pidieron es:
1.- hacer un programa que reciba una cadena del teclado que no se vea y diga si es valido o no.
lo que he solucionado es hacer que no se vea la cadena que escribo, pero si saque un '*', les muestro lo que he hecho (llevo una semana en este problema y aun me faltan otros 10 y son para el viernes :S, pero un poco de ayuda no estaria mal ):
*tambien tengo un problema con el "inc ch", mi contador de caracteres, al parecer por alguna razon no se incrementa.
Código:
[bits 16]
[segment .data]
msj: db 'escribe una contraseña <o= a 10 caracteres ',0dh,0ah,'$'
nl: db 0dh,0ah,'$'
con: db 'cristal' ; contraseña a comparar
tc: db 7 ;tamaño de la contraseña a comparar
conr: resb 10 ;caracteres de la cadena recibida
tcr: resb 1 ;tamaño contraseña recibida
fail: db '¡contraseña incorrecta!$'
ver: db '¡contraseña aceptada!$'
[segment .code]
..start:
mov ax,data
mov ds,ax
mov es,ax
mov cl,10
mov ch,0
mov bx,conr
mov di,[tc]; dh tiene un 7
mov ah,09
mov dx,msj
int 21h
pide mov ah,01; usar funcion sin eco, 08
int 21h
inc ch;contador de carateres
cmp al,0dh
je fc
mov [bx],al
mov ah,02
mov dl,'*'
int 21h
inc bx
dec cl;contador de caracteres restantes
cmp cl,0
jne pide
inc bx
mov byte[bx],'$'
fc:
mov ah,09
mov dx,nl
int 21h
;mov dh,0
;mov ch,0
mov [si],ch
cmp ch,1
je verdadero
jne falso
falso: mov ah,09
mov dx,fail
int 21h
jmp fp
verdadero: mov ah,09
mov dx,ver
int 21h
fp: mov ah,4ch
int 21h
gracias por su ayuda por adelantado...