Vous êtes sur la page 1sur 6

Perifricos e Interfaces Curso 2010 2011 ______________________________________________________________________

Prctica 1: Sencillo Juego en Ensamblador


El objetivo de esta prctica es aprender a programar usando el ensamblador 8086 y, en particular, aprender a utilizar las interrupciones de la BIOS y de MSDOS para permitir que el programa interacte con perifricos de entrada y salida. Los perifricos que se utilizarn sern el teclado y la pantalla del PC debido a la familiaridad de los alumnos con su manejo. La prctica consistir en disear una versin sencilla del popular juego Arkanoid. Al comenzar, el programa solicitar el nombre del jugador. Tras esto, el programa mostrar por pantalla un pequeo entorno rectangular delimitado por una lnea y el nombre del jugador en una esquina, junto con su puntuacin y el nmero de vidas restantes. Durante la partida, el jugador controla una plataforma que se mover lateralmente por la parte baja del entorno de juego. Con esta plataforma, el jugador debe impedir que una bola que rebota en vertical salga del entorno de juego. El jugador perder una vida con cada fallo y, si llega a cero, concluir la partida, mostrndose una pantalla de final con la puntuacin alcanzada. En la parte superior de la pantalla habr una serie de bloques. Cada vez que la bola rebote contra uno de ellos ser destruido, sumando un punto. La partida tambin concluir si se destruyen todos los bloques.

Resulta importante destacar que la belleza esttica no es una caracterstica primordial de esta prctica. El objetivo es demostrar un cierto dominio de la programacin ensamblador y del manejo de las interrupciones para interactuar con los perifricos de E/S. Por ejemplo, una forma sencilla de crear el espacio de juego es delimitar un recuadro y pintarlo de un color distinto al resto de la pantalla, evitndose tener que dibujar los bordes. Adems, la plataforma, la bola y los bloques pueden crearse simplemente usando caracteres del teclado que se consideren apropiados; el movimiento puede realizarse borrando caracteres y volvindolos a escribir en otra parte. Tampoco es necesario elaborar animaciones complejas para la destruccin de los bloques, basta con que desaparezcan.

Perifricos e Interfaces Curso 2010 2011 ______________________________________________________________________ Se valorar cualquier mejora que se aplique a este diseo inicial. Hay muchas opciones posibles, aunque no sern exigidas para aprobar: Variaciones en la velocidad de la bola. Variaciones en el tamao de la plataforma. Bloques especiales (que haya que golpear varias veces, que cambien la direccin de rebote, que aumenten el nmero de vidas) Y un largo etctera. Al concluir el periodo establecido para la realizacin de la prctica, los alumnos defendern el programa realizado ante el profesor en el laboratorio durante las fechas determinadas para cada convocatoria. Tambin presentarn el programa, correctamente estructurado y comentado, junto con una memoria que detalle su funcionamiento interno y el proceso de desarrollo que se ha llevado a cabo, as como los problemas que pudieran haber surgido durante el trabajo, las soluciones adoptadas y, en general, el porqu de las decisiones de diseo tomadas. Una correcta ortografa y gramtica se considera indispensable para la escritura de la memoria. Este documento tendr un mximo de diez pginas y ser entregado en formato electrnico (preferiblemente PDF) siguiendo el procedimiento indicado para ello por el profesorado de la asignatura. En la memoria se har especial hincapi en las interrupciones utilizadas por el programa, describiendo su funcionamiento y los usos concretos que se les han dado. Adems, se valorar especialmente el apartado de conclusiones del trabajo, donde los alumnos expondrn sus opiniones, fruto de la experiencia, acerca del ensamblador 8086, la programacin en este entorno y la interaccin con los perifricos por medio de interrupciones. En ningn caso se incorporar a la memoria el cdigo fuente, ya sea en su totalidad o en parte. Como se ha mencionado anteriormente, el programa se entregar por separado y debidamente comentado, por lo que incorporarlo a la memoria sera equivalente a presentarlo por duplicado y, por tanto, se considerara un relleno injustificado. Por supuesto, tambin se considerar inapropiado copiar cualquier parte de este enunciado para utilizarlo en la memoria. La nota final de la prctica se establecer en funcin de la defensa realizada por los alumnos en el laboratorio y de la calidad de la memoria presentada de acuerdo con el siguiente baremo: Defensa: 6 puntos o Funcionamiento correcto del programa completo: 2 puntos o Explicaciones acertadas y dominio del tema: 2 puntos o Limpieza y estructuracin del cdigo: 1 punto o Ampliaciones y mejoras: 1 punto Memoria: 4 puntos 1 punto o Presentacin, gramtica y ortografa: 1 punto o Descripcin del funcionamiento del programa: 1 punto o Descripcin del uso de las interrupciones: 1 punto o Conclusiones y valoracin personal:

Perifricos e Interfaces Curso 2010 2011 ______________________________________________________________________

La Pantalla del PC
Las imgenes de la pantalla del PC estn compuestas por unidades llamadas pxel. El adaptador o controlador de pantalla es un circuito que sirve de interfaz entre el procesador y la pantalla. Este controlador dispone de puertos que permiten la comunicacin entre el procesador y la pantalla, as como de una memoria que contiene el valor de cada pxel. Segn el adaptador, la memoria puede funcionar en modo grfico o en modo texto, en el que slo se representan caracteres. Cuando funciona en modo texto, la pantalla es como una matriz de 80 columnas por 25 filas donde cada celda de la matriz representa un carcter. Esta matriz es almacenada en la memoria de pantalla por filas, codificndose cada carcter en una palabra de 16 bits que contiene el cdigo ASCII en el byte menos significativo, mientras que el byte ms significativo contiene el atributo de visualizacin. El valor normal del atributo es gris sobre negro, que se codifica 07h.

En esta figura se muestra la relacin existente entre la pantalla y la memoria del controlador de pantalla. Para visualizar un carcter en la posicin (i,j) de la pantalla debe escribirse su cdigo ASCII y el atributo correspondiente en la celda (i,j) de la matriz que representa la pantalla. Puesto que la matriz est almacenada por filas en posiciones consecutivas de memoria, la celda (i,j) corresponder a la palabra 80*i+j de la memoria de pantalla, esto es, el cdigo ASCII y el atributo de visualizacin se almacenarn en los bytes: dir_memoria_pantalla + 2 * (80 * i + j) dir_memoria_pantalla + 2 * (80 * i + j) + 1

Perifricos e Interfaces Curso 2010 2011 ______________________________________________________________________

El Teclado del PC
El controlador del teclado del PC est explorando continuamente la matriz de teclas. Cuando se detecta la pulsacin de una tecla, el cdigo de pulsacin de la tecla se almacena en una memoria. Este cdigo es un nmero de 8 bits que tendr el bit ms significativo a cero. Si una tecla permanece pulsada ms de medio segundo, el controlador colocar repetidamente su cdigo en la memoria. Cuando se detecta la liberacin de una tecla, el cdigo de liberacin de la tecla se almacena en la memoria del controlador. Este cdigo es idntico al de pulsacin, pero con el bit ms significativo a uno.

La memoria de teclas acta como una cola con capacidad para un nmero concreto de cdigos. Siempre que la memoria de teclas no est vaca, el controlador colocar el cdigo ms antiguo de los almacenados en ella en un registro que ocupa la direccin 60h del espacio de direcciones de entrada/salida, activando una interrupcin para que el procesador se percate de que tiene un carcter disponible. Es importante tener en cuenta que el cdigo de pulsacin/liberacin de cada tecla no tiene nada que ver con el cdigo ASCII del carcter correspondiente. El nmero de teclados existentes en el mercado es muy grande y, aunque para muchas teclas el cdigo es siempre el mismo, cada teclado puede utilizar cdigos diferentes para ciertas teclas especficas.

Perifricos e Interfaces Curso 2010 2011 ______________________________________________________________________

Algunas Interrupciones tiles


Interrupcin 10h de la BIOS, funcin 00h Establecer el modo de video de la pantalla. Interrupcin 10h de la BIOS, funcin 01h Modificar el ancho del cursor (til para ocultarlo). Interrupcin 10h de la BIOS, funcin 02h Situar el cursor en un punto de la pantalla. Interrupcin 10h de la BIOS, funcin 03h Obtener la posicin del cursor en la pantalla. Interrupcin 10h de la BIOS, funcin 06h Limpiar o desplazar hacia abajo la pantalla (o un rectngulo dentro de la pantalla). Interrupcin 10h de la BIOS, funcin 07h Limpiar o desplazar hacia arriba la pantalla (o un rectngulo dentro de la pantalla). Interrupcin 16h de BIOS, funcin 00h Obtener el cdigo ASCII asociado a una pulsacin de teclado sin esperar por ella. Interrupcin 16h de BIOS, funcin 01h Detectar si se ha pulsado una tecla. Interrupcin 1Ah de BIOS, funcin 00h Obtener el valor actual del reloj del procesador (til para generar nmeros aleatorios). Interrupcin 21h de MSDOS, funcin 01h Esperar por una pulsacin de teclado y obtener el cdigo ASCII asociado. Interrupcin 21h de MSDOS, funcin 02h Escribir un carcter en pantalla. Interrupcin 21h de MSDOS, funcin 08h Esperar por una pulsacin de teclado y obtener el cdigo ASCII asociado sin mostrarlo por la pantalla (sin eco). Interrupcin 21h de MSDOS, funcin 09h Mostrar una ristra de caracteres almacenada en memoria por pantalla. Interrupcin 21h de MSDOS, funcin 0Bh Detectar si se ha pulsado una tecla. Interrupcin 21h de MSDOS, funcin 4Ch Terminar el programa y devolver el control al Sistema Operativo.

Perifricos e Interfaces Curso 2010 2011 ______________________________________________________________________

Bibliografa Recomendada
8088-8086/8087 Programacin Ensamblador en Entorno MS DOS M.A. Rodrguez Rosell. Anaya. 80386/80286 Programacin en Lenguaje Ensamblador. W.H. Murray y C.H. Papas. McGraw-Hill. Lenguajes ensambladores. R. Martnez Toms. Paraninfo. Turbo Assembler 3.0 Users Guide. Borland.

Vous aimerez peut-être aussi