Este programa se requeria que dependiendo de las teclas de movimientos del teclado (flechas) se fuesen cambiando el color de los pixeles, basicamente uno iba llevando el cursor e indicando la posicion donde se encotraba con un color.
En esta practica se requeria el uso de Public y Extern. En el archivo pixeles.asm estaba la rutina principal del programa, en el archivo archivo.asm se declaran las rutinas externas.
El contenido del Archivo pixeles.asm
1: .model small
2: .stack 64h
3:
4: .data
5: xmax dw 639
6: xmin dw 0
7: ymax dw 479
8: ymin dw 0
9: ejex dw ?
10: ejey dw ?
11:
12:
13: .code
14: ; se declarara EXTRN todo aquello que se encuentra en otro archivo
15: ; y se usara en este programa. y se declara PUBLIC todo aquello
16: ; que se encuentra en este archivo y se usara en las rutinas
17: ; que se encuentran en los otros archivos
18:
19: extrn pintar:near
20: extrn leerpixel:near
21: public ejex
22: public ejey
23:
24: ; se inicializar los segmentos
25: mov ax,@data
26: mov ds,ax
27: mov es,ax
28: ; se establece el modo grafico 12h, donde la resolucion es de 640x480
29: ; a 16 colores
30:
31: inicio: mov ejex,0
32: mov ejey,0
33: mov ah,0
34: mov al,12h
35: int 10h
36: ; se espera a que se pulse una tecla y se verifica que sea una de las
37: ; teclas validas para proceder a pintar el pixel
38:
39: teclas: mov ah,0
40: int 16h
41: cmp ax,4d00h
42: je right
43: cmp ax,4b00h
44: je left
45: cmp ax,4800h
46: je up
47: cmp ax,5000h
48: je down
49: cmp ax,3062h
50: je clrscr
51: cmp ax,3042h
52: je clrscr
53: cmp al,27
54: je exit
55: jmp teclas
56: ; para pintar el pixel se procede a leer el pixel anteriormente pintado
57: ; para conocer el color de este, se incrementa este valor y se procede
58: ; a pintar el siguiente dependiendo de la direccion seleccionada
59: right: mov bx,ejex
60: cmp bx,xmax
61: je teclas
62: call leerpixel
63: inc ejex
64: inc al
65: call pintar
66: jmp teclas
67:
68: left: mov bx,ejex
69: cmp bx,xmin
70: je teclas
71: call leerpixel
72: dec ejex
73: inc al
74: call pintar
75: jmp teclas
76:
77: up: mov bx,ejey
78: cmp bx,ymin
79: je teclas
80: call leerpixel
81: dec ejey
82: inc al
83: call pintar
84: jmp teclas
85:
86: down: mov bx,ejey
87: cmp bx,ymax
88: je teclas1
89: call leerpixel
90: inc ejey
91: inc al
92: call pintar
93: teclas1: jmp teclas
94:
95: clrscr: jmp inicio
96:
97: ; se reestablece el modo texto y se sale del programa
98:
99: exit: mov ah,0
100: mov al,3
101: int 10h
102: mov ax,4c00h
103: int 21h
104:
105: end
El contenido del archivo archivo.asm solo se declaran las rutinas
1: .model small
2: .code
3: public leerpixel
4: public pintar
5: extrn ejex
6: extrn ejey
7: proc leerpixel near
8: mov ah,0dh
9: mov bh,0
10: mov cx,ejex
11: mov dx,ejey
12: int 10h
13: retn
14: leerpixel endp
15:
16: proc pintar near
17: mov ah,0ch
18: mov bh,0
19: mov cx,ejex
20: mov dx,ejey
21: int 10h
22: retn
23: pintar endp
24: end
No hay comentarios:
Publicar un comentario