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 0
23: 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,AX
30: CALL MODO
31: INICIA: CALL CLS
32: MOV CONTADOR,12
33: MOV FILA,5
34: MOV COLUMNA,0
35: 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,22
43: CALL CURSOR
44: LEA SI,MATRIZ
45: 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 POSX
79: SUB COLUMNA,4
80: DEC APUNTADORX
81: DEC SI
82: JMP UBICAR
83: SUBE: CMP POSY,0
84: JE TECLA
85: DEC POSY
86: 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 UBICAR
97: BORRA: CALL LEER
98: CMP AL,20H
99: JE NADA
100: MOV AL,20H
101: CALL ESCRIBE
102: INC CONTADOR
103: MOV BYTE PTR [SI],0
104: JMP TECLA
105: 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,AL
134: CALL LEER
135: CMP AL,20H
136: JNE NADA
137: MOV AL,LETRA
138: CALL ESCRIBE
139: MOV [SI],AL
140: DEC CONTADOR
141: JZ ESPERA
142: JMP TECLA
143: ESPERA: MOV FILA,23
144: MOV COLUMNA,0
145: 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,16
186: L1: MOV BYTE PTR [SI],0
187: INC SI
188: LOOP L1
189: POP SI
190: RET
191: INICIALES: PUSH SI
192:
193: MOV FILA,6
194: MOV COLUMNA,30
195: CALL CURSOR
196:
197: MOV AL,31H
198:
199: CALL ESCRIBE
200: MOV [SI+2],AL
201:
202: MOV FILA,8
203: MOV COLUMNA,26
204: 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,30
216: CALL CURSOR
217:
218: MOV AL,34H
219: CALL ESCRIBE
220: MOV [SI+10],AL
221:
222:
223: MOV FILA,12
224: MOV COLUMNA,26
225: CALL CURSOR
226:
227: MOV AL,33H
228:
229: CALL ESCRIBE
230: MOV [SI+13],AL
231:
232: MOV FILA,6
233: MOV COLUMNA,22
234: CALL CURSOR
235:
236: POP SI
237: RET
238:
239: END
No hay comentarios:
Publicar un comentario