Site hosted by Angelfire.com: Build your free website today!
Francisco Rodríguez Zamora A54818

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