Vistas de página en total

sábado, 20 de julio de 2013

AHORCADO (3/5)

  Siguiendo con el programa del ahorcado, vamos a ver como buscar la letra en la palabra seleccionada, para poder definir si acertamos o no.

   Esta función es transparente también, pero como usa bx para devolver datos este registro no se salvaguarda.
    Usamos bl y bh como banderas, que nos indicarán si se ha encontrado la letra y si faltan letras por descubrir.
   El código creo que es claro.
         Tomamos las direcciones de la palabra seleccionada y de la mascara.
         Vamos comparando la letra a buscar con cada letra de la palabra.
          Si la encontramos la copiamos en la mascara y  montamos la bandera de encontrada.
         Verificamos si la mascara está en blanco. Si lo está es que no hemos encontrado nada en ningún intento, y por lo tanto quedan letras por encontrar. Por ello montamos la bandera de faltan letras.
         Recorremos toda la palabra en busca de la letra y simultáneamente comprobamos la máscara.
     


BUSCAR
(c) José Angel Moneo Fdez


; busca la letra
; devuelve bl=1 si la encuentra la letra
;          bh=1 si faltan letras
buscar proc near
push di
push si
        push cx
mov bx,0  ;borra banderas
mov si,pal_sel
mov di,offset mascara
mov cl,[si] ;numero de letras a contador de busqueda
        inc si ;salta la longitud de la palabra
prueba:
        mov al,letra
        cmp byte ptr [si],al ;comprueba la letra pasada en al
jne otra
mov [di],al ; almacena la letra en mascara
mov bh,1  ; marca bandera letra encontrada
otra:
cmp byte ptr [di],"_"
        jne sigue
        mov bl,1  ; bandera palabra incompleta
sigue:
        inc si
inc di
dec cl
jnz prueba
        pop cx
pop si
pop di
ret
buscar endp

No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.