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 archivo15: ; 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:near21: 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,2754: 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 teclas62: call leerpixel
63: inc ejex 64: inc al65: call pintar
66: jmp teclas 67: 68: left: mov bx,ejex 69: cmp bx,xmin 70: je teclas71: call leerpixel
72: dec ejex 73: inc al74: call pintar
75: jmp teclas 76: 77: up: mov bx,ejey 78: cmp bx,ymin 79: je teclas80: call leerpixel
81: dec ejey 82: inc al83: call pintar
84: jmp teclas 85: 86: down: mov bx,ejey 87: cmp bx,ymax 88: je teclas189: call leerpixel
90: inc ejey 91: inc al92: 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: endEl contenido del archivo archivo.asm solo se declaran las rutinas
1: .model small 2: .code3: 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