Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *-----------------------------------------------------------
- * Title :EJEMPLO BÁSICO DE REPRESENTACIÓN DE UN MAPA MATRIZ 4x4 PARA EL JUEGO 2048
- * Written by :Fulgencio
- * Date :04/2015
- * Description:Se trata de a partir de una representación del tablero en la memoria, representar
- * los elementos en la pantalla. Está estructurado con subrutinas
- *-----------------------------------------------------------
- ORG $1000
- START: ; first instruction of program
- * Put program code here
- MOVE.L #CELDAS,A3 ;A3 apunta a la matrix 4x4
- REINICIO
- MOVE.B #4,D4 ;Contador de columna. Cada 4 saltamos a otra fila
- BUCLE1
- MOVE.L #1,D1 ;Utilizamos el 1 de base para elevar a la potencia de 2 correspondiente
- MOVE.B (A3)+,D2 ;Cogemos un elemento de la matriz y lo pasamos a D2
- LSL.L D2,D1 ;Obtenemos la potencia de 2 (2^n equivale a desplazar el 1 n veces a izquierda)
- JSR IMPRIME
- SUB.B #1,D4
- BNE BUCLE1 ¿Han salido ya 4 columnas? Entonces vamos a la siguiente línea
- CMP.L #CELDAS+16,A3 ;¿Estan todas las líneas dibujadas?
- BEQ COMPLETO ;Terminamos
- JSR SALTOLIN ;Avanza linea
- JMP REINICIO ;Reinicia contador de columna
- COMPLETO
- SIMHALT ; halt simulator
- ESPACIO MOVE.L #6,D0
- MOVE.B #' ',D1 ;imprime un espacio
- TRAP #15
- RTS
- IMPRIME *Esta función imprime un elemento que puede ser un vacío o un valor numérico
- *Para que al imprimir, los elementos queden alineados verticalmente, utilizamos
- *los números se rellenan con espacios para ocupar siempre a 6 caracteres en total
- *input: D1 (valor numérico a imprimir. Si es 1, presenta un vacío)
- *modifica D0 y D2
- CMP.B #1,D1 ;¿ES UN VACIO?
- BEQ PRINVACIOS
- MOVE.L #20,D0
- MOVE.L #6,D2
- TRAP #15 ;Imprime números formateados a 6 espacios
- RTS
- PRINVACIOS *modifica D0 y A1
- MOVE.L #14,D0
- MOVE.L #VACIOS6,A1 ;cadena de 6 espacios
- TRAP #15
- RTS
- SALTOLIN *modifica D0 y A1
- MOVE.L #14,D0
- MOVE.L #CRLF,A1 ;RETORNO CARRO + AVANCE DE LINEA
- TRAP #15
- RTS
- * Put variables and constants here
- *CELDAS CORRESPONDE AL MAPA DE ESTADO DEL TABLERO 4x4. Se necesitan 16 elementos organizados en 4x4
- *Como una celda solo puede estar o vacía (0) o conteniendo una potencia de 2 (2,4,8,16...2048)
- *almacenamos sólo el exponente (dejando el 0 para la vacía) y así podemos utilizar el tamaño byte
- CELDAS DC.B 1,1,2,7
- DC.B 0,0,0,1
- DC.B 1,2,3,0
- DC.B 3,1,1,0
- VACIOS6 DC.B ' ',0 *Cadena de 6 caracteres espacio para representar la casilla vacía
- CRLF DC.B 10,13,0 *Cadena que representa avance de linea+ retorno de carro
- END START ; last line of source
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement