Este programa se lo hice a unos chamos de la UAH, es una adaptacion del juego de sodoku, es una matriz de 4x4, nada que ver con el juego original, pero totalmente funcional, espero les sirva de algo
1: .MODEL SMALL 2: .STACK 256H 3: .DATA 4: FILA DB ? 5: COLUMNA DB ? 6: MATRIZ DB 16 DUP (0) 7: ATRIBUTO EQU 71H 8: LETRA DB ? 9: POSX DB ? 10: POSY DB ? 11: CUADRO DB 20 DUP (20H),201,15 DUP (205),187,10,13 12: DB 20 DUP (20H),186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,10,13 13: DB 20 DUP (20H),204,15 DUP (205),185,10,13 14: DB 20 DUP (20H),186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,10,13 15: DB 20 DUP (20H),204,15 DUP (205),185,10,13 16: DB 20 DUP (20H),186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,10,13 17: DB 20 DUP (20H),204,15 DUP (205),185,10,13 18: DB 20 DUP (20H),186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,20H,20H,20H,186,10,13 19: DB 20 DUP (20H),200,15 DUP (205),188,24H 20: APUNTADORX DW ? 21: APUNTADORY DW ? 22: CONTADOR DB 023: MENSAJE DB " FINALIZO EL JUEGO PRESIONE F1 PARA VOLVER A JUGAR",10,13
24: DB " O CUALQUIER TECLA PARA SALIR",24H
25: 26: .CODE 27: MOV AX,@DATA 28: MOV DS,AX 29: MOV ES,AX30: CALL MODO
31: INICIA: CALL CLS
32: MOV CONTADOR,12 33: MOV FILA,5 34: MOV COLUMNA,035: CALL CURSOR
36: MOV POSX,0 37: MOV POSY,0 38: LEA DX,CUADRO 39: MOV AH,9 40: INT 21H 41: MOV FILA,6 42: MOV COLUMNA,2243: CALL CURSOR
44: LEA SI,MATRIZ45: CALL LIMPIAR
46: MOV APUNTADORX,SI 47: MOV APUNTADORY,SI 48: 49: CALL INICIALES
50: 51: TECLA: MOV AH,0 52: INT 16H 53: CMP AX,3B00H 54: JE INICIA 55: CMP AX,4800H 56: JE SUBE 57: CMP AX,4D00H 58: JE DERECHA 59: CMP AX,5000H 60: JE BAJA 61: CMP AX,4B00H 62: JE IZQUIERDA 63: CMP AL,27 64: JE SALIR2 65: CMP AX,5300H 66: JE BORRA 67: JMP SALTO 68: SALIR2: JMP SALIR 69: DERECHA: CMP POSX,3 70: JE TECLA 71: INC POSX 72: ADD COLUMNA,4 73: INC APUNTADORX 74: INC SI 75: JMP UBICAR 76: IZQUIERDA: CMP POSX,0 77: JE TECLA 78: DEC POSX79: SUB COLUMNA,4
80: DEC APUNTADORX 81: DEC SI 82: JMP UBICAR 83: SUBE: CMP POSY,0 84: JE TECLA 85: DEC POSY86: SUB FILA,2
87: SUB APUNTADORY,4
88: SUB SI,4
89: JMP UBICAR 90: BAJA: CMP POSY,3 91: JE TECLA 92: INC POSY 93: ADD FILA,2 94: ADD APUNTADORY,4 95: ADD SI,4 96: JMP UBICAR97: BORRA: CALL LEER
98: CMP AL,20H 99: JE NADA 100: MOV AL,20H101: CALL ESCRIBE
102: INC CONTADOR103: MOV BYTE PTR [SI],0
104: JMP TECLA105: SALIR: CALL MODO
106: .EXIT(0)
107: 108: UBICAR: CALL CURSOR
109: NADA: JMP TECLA 110: 111: SALTO: CMP AL,30H 112: JC NADA 113: CMP AL,39H 114: JG NADA 115: MOV DI,APUNTADORX 116: CMP AL,[DI] 117: JE NADA 118: CMP AL,[DI+4] 119: JE NADA 120: CMP AL,[DI+8] 121: JE NADA 122: CMP AL,[DI+12] 123: JE NADA 124: MOV DI,APUNTADORY 125: CMP AL,[DI] 126: JE NADA 127: CMP AL,[DI+1] 128: JE NADA 129: CMP AL,[DI+2] 130: JE NADA 131: CMP AL,[DI+3] 132: JE NADA 133: MOV LETRA,AL134: CALL LEER
135: CMP AL,20H 136: JNE NADA 137: MOV AL,LETRA138: CALL ESCRIBE
139: MOV [SI],AL 140: DEC CONTADOR 141: JZ ESPERA 142: JMP TECLA 143: ESPERA: MOV FILA,23 144: MOV COLUMNA,0145: CALL CURSOR
146: LEA DX,MENSAJE 147: MOV AH,9 148: INT 21H 149: MOV AH,0 150: INT 16H 151: CMP AX,3B00H 152: JNE SALIR1 153: JMP INICIA 154: SALIR1: JMP SALIR 155: 156: MODO: MOV AH,0 157: MOV AL,3 158: INT 10H 159: RET 160: CURSOR: MOV AH,2 161: MOV BH,0 162: MOV DL,COLUMNA 163: MOV DH,FILA 164: INT 10H 165: RET 166: LEER: MOV AH,8 167: MOV BH,0 168: INT 10H 169: RET 170: ESCRIBE: MOV AH,9 171: MOV BH,0 172: MOV BL,ATRIBUTO 173: MOV CX,1 174: INT 10H 175: RET 176: CLS: MOV BH,ATRIBUTO 177: ROR BH,2 178: MOV AH,6 179: MOV AL,0 180: MOV CX,0 181: MOV DX,184FH 182: INT 10H 183: RET 184: LIMPIAR: PUSH SI 185: MOV CX,16186: L1: MOV BYTE PTR [SI],0
187: INC SI188: LOOP L1
189: POP SI 190: RET 191: INICIALES: PUSH SI 192: 193: MOV FILA,6 194: MOV COLUMNA,30195: CALL CURSOR
196: 197: MOV AL,31H 198: 199: CALL ESCRIBE
200: MOV [SI+2],AL 201: 202: MOV FILA,8 203: MOV COLUMNA,26204: CALL CURSOR
205: 206: 207: 208: MOV AL,31H 209: 210: CALL ESCRIBE
211: MOV [SI+5],AL 212: 213: 214: MOV FILA,10 215: MOV COLUMNA,30216: CALL CURSOR
217: 218: MOV AL,34H219: CALL ESCRIBE
220: MOV [SI+10],AL 221: 222: 223: MOV FILA,12 224: MOV COLUMNA,26225: CALL CURSOR
226: 227: MOV AL,33H 228: 229: CALL ESCRIBE
230: MOV [SI+13],AL 231: 232: MOV FILA,6 233: MOV COLUMNA,22234: CALL CURSOR
235: 236: POP SI 237: RET 238: 239: END
No hay comentarios:
Publicar un comentario