Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; You may customize this and other start-up templates;
- ; The location of this template is c:\emu8086\inc\0_com_template.txt
- org 100h
- .DATA
- MAXLONG equ 20
- OCULTA db MAXLONG+1 dup (0)
- AUX db MAXLONG+1 dup (0)
- LONGITUD db 0
- BIEN db 0
- REGULAR db 0
- INTENTOS db 10
- GANO db "GANO$"
- PERDIO db "PERDIO$"
- NUMEROS db "0123456789$"
- enter db 13,10,"$"
- BIENTEXTO db " Bien: $"
- REGULARTEXTO db " Regular: $"
- .CODE
- CALL INICIO
- CALL INGRESAR_OCULTA
- INTENTO:
- call copiar
- MOV dl, LONGITUD
- MOV bx, 0
- MOV BIEN,0
- MOV REGULAR,0
- BUCLE:
- CMP dl,bl
- JE TERMINAR
- CALL INGRESAR
- CALL MARCAR
- JMP BUCLE
- TERMINAR:
- ;MOV dh, BIEN
- ;MOV bh, REGULAR
- CALL MOSTRAR_BIEN
- CALL MOSTRAR_REGULAR
- MOV dl, LONGITUD
- CMP BIEN, dl
- JE MOSTRAR_GANO
- DEC INTENTOS
- CMP INTENTOS,0
- JE MOSTRAR_PERDIO
- CALL MOSTRAR_ENTER
- JMP INTENTO
- ;CMP bx, 0
- ;JA MOSTRAR_PERDIO
- ;CMP cx, 0
- ;JB MOSTRAR_PERDIO
- ret
- INICIO:
- mov INTENTOS, 10
- RET
- ;Lee lo que ingresan por consola, y lo almacena en la variable texto
- INGRESAR_OCULTA:
- mov di, offset OCULTA ;para poder guardar la PALABRA PRINCIPAL
- INGRESAR_OCULTA_BUCLE:
- mov ah, 7
- int 21h
- cmp al, 13
- jne INGRESAR_OCULTA_LEER
- ;MOV [LONGITUD], di
- mov [di], 36
- mov dx, offset enter
- mov ah, 9
- int 21h
- ;call muestra
- RET
- INGRESAR_OCULTA_LEER:
- mov [di], al
- inc di
- inc LONGITUD
- mov dl, 42
- mov ah, 2
- int 21h
- jmp INGRESAR_OCULTA_BUCLE
- MUESTRA:
- mov dx, offset OCULTA
- mov ah, 9
- int 21h
- call MOSTRAR_ENTER
- ret
- MOSTRAR_ENTER:
- mov dx, offset enter
- mov ah, 9
- int 21h
- RET
- INGRESAR:
- mov ah, 1
- int 21h
- inc bx
- RET
- COPIAR:
- MOV bx,0
- MOV dl, LONGITUD
- COPIAR_BUCLE:
- MOV al,OCULTA[bx]
- MOV AUX[bx], al
- INC bx
- CMP bl,dl
- JNE COPIAR_BUCLE
- RET
- MARCAR:
- CALL MARCAR_BIEN
- RET
- MARCAR_BIEN:
- CMP al,OCULTA[bx-1]
- JE SUMARBIEN
- CALL MARCAR_REGULAR
- SEGUIR:
- RET
- SUMARBIEN:
- INC BIEN
- mov aux[bx-1],0
- JMP SEGUIR
- MARCAR_REGULAR:
- XOR cx,cx ;limpio cx
- MOV ah, LONGITUD
- REG_BUCLE:
- CMP cl, ah
- JA REG_TERMINA
- MOV si, cx
- ;Comparo la letra ingresada con el caracter de la pos del bucle.
- CMP al, aux[si-1]
- ;si es diferente, sigo
- JNE REG_SIGUE
- ;Si se da la coincidencia en la misma posicion, es BIEN.
- CMP cl, bl
- JE REG_SIGUE
- INC REGULAR
- jmp REG_TERMINA
- REG_SIGUE:
- INC cl
- JMP REG_BUCLE
- REG_TERMINA:
- RET
- MOSTRAR_BIEN:
- MOV dx, offset BIENTEXTO
- MOV ah,9
- INT 21h
- MOV DL, BIEN
- ADD DL, 48
- MOV ah,2
- INT 21h
- ; CALL MOSTRAR_ENTER
- ; XOR bx,bx
- ; MOV bl, BIEN
- ; MOV dl, NUMEROS[bx]
- ; MOV ah,2
- ; INT 21h
- RET
- MOSTRAR_REGULAR:
- MOV dx, offset REGULARTEXTO
- MOV ah,9
- INT 21h
- MOV DL, REGULAR
- ADD DL, 48
- MOV ah,2
- INT 21h
- ; CALL MOSTRAR_ENTER
- ; XOR bx,bx
- ; MOV bl, REGULAR
- ; MOV dl, NUMEROS[bx]
- ; MOV ah,2
- ; INT 21h
- RET
- MOSTRAR_GANO:
- CALL MOSTRAR_ENTER
- MOV dx, offset GANO
- MOV ah,9
- INT 21h
- RET
- MOSTRAR_PERDIO:
- CALL MOSTRAR_ENTER
- MOV dx, offset PERDIO
- MOV ah,9
- INT 21h
- RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement