1- Descripcion del Problema
Diseño de los carros que va a utilizar para su tarea programada 1 utilizando caracteres ascii. Dichos diseños consideran lo siguiente:
- Carro pequeño horizontal y vertical (2 espacios en la matriz de juego)
- Carro grande horizontal y vertical (3 espacios en la matriz de juego)
TOTAL: 4 carros
2- Problemas Encontrados
El principal problema encontrado en esta tarea fue el de colocar los carros en la pantalla. En sí, el problema residió en poder darle las coordenadas correctas para que el método que implementó el profesor pudiera imprimir los carros justo donde yo quería.
Además de eso no encontré problema algun salvo el de encontrar los ASCII´s que mejor se acomodaban a mi criterio a lo que buscaba.
3- Detalles de implementación:
Se utilizó como base el código dado por el profesor que fue trabajado en clase. El código en sí lograba imprimir un carro en la pantalla en una matriz de 80*25 de 16 colores.
DCARRO.ASM..MODEL SMALL
.486
.STACK 64
.DATA
LONG DW 3
CARRO1 db 178,178,227
CARRO2 DB 178,178,227
CARRO3 DB 178,227
CARRO4 DB 178,227
.CODE
INICIO PROC NEAR
MOV AX, @data
MOV DS, AX ;Inicia segmento de datos
MOV AX, 0B800H
MOV ES, AX ;Inicia segmento de vídeo
MOV AH, 0FH
INT 10H ;obtener modo de vídeo actual
PUSH AX ;guarda valores
PUSH BX
MOV AH,00H
MOV AL,03H
INT 10H ;establece modo de vídeo
;80*25
MOV AH,05H
MOV AL,00H
INT 10H ;establece la página cero
MOV DI,0 ;coordenadas
MOV BX,2 ;saltos
MOV DH,0CH ;atributo
MOV SI,OFFSET CARRO1 ;LEA SI,CARRO1
MOV LONG, 3
CALL ImprimirCarro
MOV DI,80*4 ;coordenadas
MOV BX,2 ;saltos
MOV DH,0CH ;atributo
MOV SI,OFFSET CARRO3 ;LEA SI,CARRO1
MOV LONG, 2
CALL ImprimirCarro
MOV DI,2*5*80 ;coordenadas
MOV BX,80*2 ;saltos
MOV DH,0CH ;atributo
MOV SI,OFFSET CARRO2 ;LEA SI,CARRO1
MOV LONG, 3
CALL ImprimirCarro
MOV DI,2*10*80 ;coordenadas
MOV BX,80*2 ;saltos
MOV DH,0CH ;atributo
MOV SI,OFFSET CARRO4 ;LEA SI,CARRO1
MOV LONG, 2
CALL ImprimirCarro
MOV AH,10H ; leer tecla para detener
INT 16H
MOV AH,05H ;restaurar el modo anterior
POP BX ; de vídeo
MOV AL,BH
INT 10H
POP AX
MOV AH,00H
INT 10H
MOV AX,4C00H ;sale al DOS
INT 21H
INICIO ENDP
;DI: posición donde se comienza
;BX: brincos
ImprimirCarro PROC NEAR
PUSH CX
PUSH AX
PUSH DI
PUSH DX
MOV CX,LONG
IMPRIMA:
MOV AL,[SI]
MOV AH,DH
MOV ES:[DI],AX
INC SI
ADD DI,BX
LOOP IMPRIMA
POP DX
POP DI
POP AX
POP CX
RET
ImprimirCarro ENDP
END INICIO