Vistas de página en total

89912

jueves, 18 de julio de 2013

AHORCADO (2/5)

   Hoy vamos a ver la primera función auxiliar del juego Ahorcado. La función que selecciona la palabra.
   Esta función la hago transparente, para evitar interferencias con el proceso. para ello salvo y recupero los registros que uso en pila.
   El seudocódigo sería:
       - Genera un número aleatorio
       - Se queda con los 4 bits bajos, para que el número no resulte mayor de 15.
       - Lo multiplica por 2 y suma el offset de TABLA para obtener una dirección válida en la tabla de punteros. 
       - Guarda esta dirección como palabra seleccionada.
       - Toma su longitud e inicializa la máscara borrando lo que tuviera y colocando un cero al final para que sea imprimible por puts.
     

     El programa no es compilable si no incluimos las cabeceras y las definiciones de segmentos, pero en este caso todo es parte de un solo programa que colocaré completo en la parte 5/5.

NW_PAL
(c) José Angel Moneo Fdez

nw_pal proc near
        push di
push si
random
       and ax,0fh    ; tomo numeros >16
shl ax,1      ;multiplico por dos
add ax,offset tabla   ;indexo a la tabla de punteros a palabras
mov si,ax      ;paso la dirección a 'SI' para indexar
mov ax,[si]    ; recupero la dirección de la palabra de la tabla de punteros
mov pal_sel,ax  ; almaceno la dirección de la palabra
        mov si,ax        ; paso esta dirección a si para indexar
mov di,offset mascara  ; usa 'DI' como indexador de mascara
        mov al,[si]   ; leo el numero de letras de la palabra
ini:
mov byte ptr [di],'_'   ;borra la mascara
inc di             ; incrementamos puntero busqueda
dec al           ; decremento el número de letras
jnz ini 
mov byte ptr [di],0 ; pongo final de cadena
pop si
pop di
ret
nw_pal endp

2 comentarios:

  1. Hola en que idoma esta exactamente soy nuevo eesto y me gustaria saber donde lo ensamblo

    ResponderEliminar
    Respuestas
    1. Tienes el procedimiento de compilación en la pestaña superior "PROCEDIMIENTOS DE COMPILACIÓN" del blog

      Eliminar

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.