lunes, 31 de mayo de 2010

Digitales III – Prof. Alfred Martinez

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