Você está na página 1de 25

CC4010 Taller de Assembler

PROYECTO 2: ANLISIS Y DOCUMENTACIN

0 Universidad del Valle de Guatemala, 2011

UNIVERSIDAD DEL VALLE DE GUATEMALA


Taller de Assembler CC4010

PROYECTO 2: ANLSIS Y DOCUMENTACIN

Trabajo presentado por Jos Antonio Bagur y Juan Fernando Medrano Yax.

Ciudad de Guatemala, 2011

Pgina en blanco intencionalmente

INGRESO DE INFORMACIN DEL USUARIO


MACRO KEYBOARD

El macro keyboard tiene como principal funcin el ingreso de datos por partes del usuario, especficamente letras, maysculas y minsculas, y algunas teclas de funcin especial, las cuales son: delete, tab key, home key y end key. El macro, utiliza la funcin 10H de la interrupcin 16H para permitir al usuario el ingreso de un solo carcter, el cual, se almacena en AL para su posterior comparacin. Dependiendo de la tecla ingresada, el macro llamar a un determinado procedimiento, estos son: Si el ingreso fue una letra mayscula o minscula, el macro llamar al procedimiento validate_char, el cual, realiza la funcin de almacenar el ingreso en una cadena de caracteres.

Si el ingreso fue la tecla DELETE (08H), el macro llamar al procedimiento delete_key_input, el cual, realiza dos funciones realmente, actualizar la cadena de caracteres ingresada por el usuario, as como la actualizacin del estado de la diapositiva.

Si el ingreso fue la tecla TAB (09H), el macro llamar al procedimiento tab_key_input, el cual, realiza dos funciones realmente, actualizar la cadena de caracteres ingresada por el usuario, as como la actualizacin del estado de la diapositiva. Permite dejar 4 espacios de tabulacin en la cadena de caracteres.

Si el ingreso fue la tecla SPACE (1CH), el macro llamar al procedimiento espacio, el cual, realiza dos funciones realmente, actualizar la cadena de caracteres ingresada por el usuario, as como la actualizacin del estado de la diapositiva. Permite dejar espacios en blanco en la cadena de caracteres,
1

Si el ingreso fue la tecla HOME (47H), el macro llamar al procedimiento home_key_input, el cual, realiza dos funciones realmente, actualizar la cadena de caracteres ingresada por el usuario, as como la actualizacin del estado de la diapositiva. Posiciona el cursor en la primera letra de la cadena de caracteres.

Si el ingreso fue la tecla END (4FH), el macro llamar al procedimiento end_key_input, el cual, realiza dos funciones realmente, actualizar la cadena de caracteres ingresada por el usuario, as como la actualizacin del estado de la diapositiva. Posiciona el cursor en la ltima letra de la cadena de caracteres.

PROCEDIMIENTO INPUT_MUESTRA

El procedimiento input_muestra tiene como funcin principal el ingreso de informacin a la aplicacin, por parte del usuario, en el submen de colores. Permite que el usuario pueda ingresar nmeros del 0 al 9, y letras de la A hasta la F, todas stas maysculas. Lo importante de este mtodo, es que de ste se derivan todos los dems mtodos de ingreso de datos, por parte del usuario, en los submens de opciones de la aplicacin. Estos procedimientos son:

ALMACENAMIENTO Y CARGA DE ARCHIVOS


PROCEDIMIENTO SAVE_TE_AT_DIAP

El procedimiento save_te_at_diap tiene como principal funcin el almacenamiento de todos y cada uno de los atributos de las diapositivas editadas por el usuario, tanto texto, como su posicin en la diapositiva, imgenes ingresadas y dems. Este procedimiento se encarga de construir una cadena de atributos y caracteres, la cual, posteriormente ser almacenada en el archivo de extensin .WKS al escribir el archivo y almacenarlos con el nombre definido por el usuario. Para esto, se defini la siguiente convencin de empaquetamiento del archivo de extensin .WKS:

Delimitador de Inicio 1 byte Nmero de diapositiva 1 byte Atributo 1 byte Posicin X Texto 1 Byte Posicin Y Texto 1 Byte Longitud de Texto 1 byte Texto 1000 bytes Posicin X Imagen 1 Byte Posicin Y Imagen 1 Byte Numero de Imagen 1 byte Delimitador de Fin 1 byte

ESTRUCTURA DEL ARCHIVO .WKS

El proceso de almacenamiento de la cadena en el archivo es realizado a travs de operaciones con cadenas, especficamente la instruccin LODS, definiendo el ndice de destino como:

Y como ndices de la fuente cada uno de los registros que almacenan los valores especificados anteriormente, en la estructura de la cadena almacenada en el archivo .WKS. Este procedimiento se realiza para cada una de las diapositivas que se encuentran disponibles al momento de almacenar el archivo.

PROCEDIMIENTO LOAD_TE_AT_DIAP

El procedimiento load_te_at_diap tiene como principal funcin cargar en una cadena la informacin almacenada en un archivo de extensin .WKS, cuyo nombre ser definido por el usuario de la aplicacin. Luego de cargar los datos almacenados en el archivo en la cadena, sta es recorrida, siguiendo la convencin de empaquetamiento definida para el almacenamiento de archivos de extensin .WKS de la aplicacin, a la misma vez que los atributos de las diapositivas de la presentacin son actualizados. El proceso de carga de los datos, almacenados en el archivo .WKS, es realizado a travs de operaciones con cadenas, especficamente la instruccin MOVS, definiendo el ndice de la fuente como:

Y como ndices de destino cada uno de los registros que almacenan los atributos de las diapositivas de la presentacin. Este procedimiento se realiza para cada una de las diapositivas de la presentacin, verificando a partir de los datos almacenados en el archivos la existencia de stas.

El Flujo del Programa: El procedimiento principal es el llamado MAIN. Este procedimiento es el cual el procesador ejecuta al iniciar el programa, y es el encargado de llamar a todas las subfunciones del programa implementadas en los distintos procedimientos para cada funcin. En el caso de esta aplicacin, se tiene 8 procedimientos a los cuales puede direccionar el MAIN: F1_PROCEDURE: Este procedimiento es el encargado de realizar todas las acciones relacionadas con la opcin HELP del men principal. Muestra las ventanas Acerca de, Ayuda y Crditos. F2_PROCEDURE: Este procedimiento se encargada de ejecutar todas las acciones relacionadas con la opcin Diapositiva (Diap) en el men principal. Permite Insertar, Eliminar y Seleccionar diapositivas. F3_PROCEDURE: Procedimiento encargado de ejecutar y hacer todas las llamadas correspondientes para realizarlas acciones relacionadas a la opcin Texto en el men principal. Aqu se realizan todas las acciones relacionadas con la insercin de texto y la modificacin del color del mismo. F4_PROCEDURE: Se encarga de las acciones relacionadas con la opcin Imagen del men principal. Aqu se encuentra toda la codificacin de la insercin de una imagen y su eliminacin de una diapositiva. F5_PROCEDURE: Se llama a este procedimiento cuando el usuario indica que desea colocar algn efecto al texto ingresado a una diapositiva. En el caso de esta opcin est disponible la opcin Parpadeo nicamente, y en futuras versiones del programa se tiene pensado aadir otros efectos (Efecto 2 y 3). F6_PROCEDURE: Procedimiento en el cual se encuentra todo el cdigo relacionado con el cambio del color de fondo de la diapositiva. Se tiene tambin pensado agregar mayor funcionalidad a esta opcin en el futuro. F7_PROCEDURE: Este es el procedimiento encargado con todas las acciones relacionadas con escritura y lectura de archivos. Permite guardar la diapositiva actual y cargar una diapositiva ya guardada. F8_PROCEDURE: Procedimiento que se encarga de la presentacin de las diapositivas en el modo pantalla completa. Permite exponer todas las diapositivas presentes en pantalla y moverse a travs de ellas utilizando las flechas.

MAIN PRINT_VIDEO_MEMORY

GETCHARS PRINT_HALF_BACK PRINT_TEXT_MEMORY PAINT_SHADOW GET_MAIN_MENU_OPTION

F1_PROCEDURE

F3_PROCEDURE

F5_PROCEDURE F4_PROCEDURE

F7_PROCEDURE F8_PROCEDURE

F2_PROCEDURE END_MAIN

F6_PROCEDURE

Figura #. Diagrama de Flujo del Programa Principal.

Macros de despliegue directo en memoria (y lectura directa de memoria): Macro PRINT_TEXT_MEMORY

Este macro es el encargado de imprimir todas las ventanas y men de opciones en la pantalla. Fue diseado de tal forma que fuera capaz copiar byte por byte (ASCII por ASCII) toda una matriz de bytes hacia una direccin de en memoria de video especfica, debindosele indicar el nmero de pgina ,que se espera sea B800H (o cualquier otra pgina de texto) en el parmetro DIR, un offset o direccin de inicio de impresin en el parmetro INICIO_PAG, la matriz de ASCIIs en el parmetro MENU, el nmero de filas y columnas de la matriz en FILAS y COLS, respectivamente y el atributo con que se desea imprimir en la memoria de video de texto en el parmetro ATRIB. Toda la matriz que se enva se copiara a la memoria de video de texto para su inmediata presentacin y se le colocar a cada byte el mismo atributo, indicado en ATRIB. La forma en que esta macro opera es la siguiente. Se carga la direccin de la pgina al registro ES y luego se carga la direccin de inicio al registro DI, para formar la direccin ES:DI. Se comienza la copia de la matriz a partir de esta direccin. Posteriormente se carga en SI la direccin de la matriz que se desea imprimir a travs de la instruccin LEA SI, MENU, y ahora se deber copiar la cantidad de bytes con atributo indicada por COLS y luego pasar a la siguiente lnea hasta terminar todas las lneas, indicadas por FILAS. Esto se hace en un ciclo en el cual dos contadores, BX y CX llevan la cuenta de la cantidad de caracteres que se han copiado.

Figura #. Ciclo de copiado de la matriz en la pagina de video de texto. El cuadro verde Indica el ciclo de copiado de todas las filas, y por cada fila, se copian todas las columnas de dicha fila (cuadro rojo).

Para copiar cada carcter, se mueve a AL el ASCII (al cual apunta SI) y se mueve a AH el atributo (que siempre es el mismo), lo siguiente es guardar el Word formado ahora en AX en la memoria, lo cual se realiza con la instruccin STOSW. Se observa de aqu que por cada byte copiado de SI, se copian 2 bytes a la memoria apuntada por DI, un byte del ASCII y otro del atributo. Esto se realiza por los n caracteres en cada fila. Cuando se termina de imprimir una fila, es necesario hacer que DI apunte a la direccin de memoria correspondiente para la siguiente fila. Esto se logra restando dos veces la cantidad de columnas de la matriz (por que por cada columna se copian 2 bytes) y aadiendo posteriormente 160 a DI, nmero que corresponde a la cantidad de columnas en una fila. Luego se verifica a travs de BX (contador de filas) si ya se termin de imprimir todas las filas en memoria con CMP BX, 0 y el programa termina de ser as, de lo contrario se pasa a la siguiente fila. El registro SI siempre va en aumento de uno en uno ya que la matriz esta definida de forma lineal, y una fila es continua a la anterior, y por tanto no es necesario hacer movimientos complejos en la memoria.

Figura #. Forma en que se define una matriz para imprimirla. Los bytes 186, 201 son el marco de la matriz.

Figura #. Representacin grfica de la matriz DELETE_SLIDE_WINDOW ya impresa en la memoria de video.

Macro PRINT_VIDEO_MEMORY

Macro que permite imprimir en la memoria de video grfica una matriz de pixeles indicando la pgina en que se imprimir en el parmetro MEMORIA, la direccin a partir de la cual se comienza a imprimir en DIREC, la imagen que se imprimir en IMAGE, y la cantidad de filas y columnas de la matriz en ROWS y COLM respectivamente. Este macro funciona de forma muy similar a PRINT_TEXT_MEMORY ya que copia desde una direccin apuntada por DS:SI hacia otra direccin apuntada por ES:DI y que se forma con MEMORIA:DIREC, respectivamente. Las nicas diferencias con PRINT_TEXT_MEMORY es que en este caso no hay atributo que aadir a cada byte que se copia ya que el byte en s mismo define su propio color y su ubicacin en la matriz define su ubicacin en la pantalla respecto a los dems puntos. As que en lugar de utilizar la instruccin STOSW se utiliza REP MOVSB para copiar desde DS:SI hacia ES:DI. Adems, ya que el modo de video grfico 13H que se utiliza tiene 320 columnas, para realizar el cambio de filas, se le sustrae a DI la cantidad de columnas de la matriz y luego se le suma 320 para realizar el cambio de lnea. Se utilizan BX y CX como contadores de filas y columnas respectivamente. La matriz de pixeles debe estar definida en el segmento de datos y contener en cada posicin un nmero entre 0 y 255 que indica el color del cual se desea pintar cada pixel en la posicin en que se encuentra dicho nmero.

Figura #. Forma en que se define una matriz a imprimir con el macro PRINT_VIDEO_MEMORY. Ntese en la figura arriba que cada fila se define como un conjunto de bytes. El numero 00 indica que el pixel en la posicin que se est analizando va a ser de color negro, y el nmero 15 indica que el pixel ser blanco. En este caso se imprimira un rectngulo con fondo negro y un cuadrado blanco en la esquina inferior derecha.

Figura #. De esta forma se vera en pantalla la matriz impresa (sin el recuadro).

Macro RESALTADOR

Este macro permite resaltar las opciones en los mens desplegables hacia la derecha en el men principal de opciones. Es decir, es el que se encarga de hacer que el usuario pueda utilizar las flechas hacia arriba y hacia abajo para recorrer el men y que la opcin que esta seleccionada actualmente aparezca resalta es decir, con fondo verde, en contraste con el gris que tendran todas las dems opciones. Siempre, al abrir una opcin en el men principal, por defecto hay una opcin seleccionada, que es la primera. Esta opcin entonces se resalta con color verde. Se espera el ingreso de una tecla por parte del usuario, y cuando estas teclas son las flechas, se resaltan las opciones adecuadamente segn la direccin de movimiento que se indique con las flechas. Para realizar esto, esta macro necesita solamente que se le indique una direccin de memoria del segmento en que se trabajar, el offset del men que se resaltar en START_ADDR, el nmero de filas y columnas en ROWS1 y COLS1, as como una variable auxiliar SELEC en la cual se almacenar la opcin que se encontraba elegido de ultimo antes de presionar <ENTER> tecla que indica la seleccin de una opcin.

Figura #. El resalte le indica al usuario qu opcin est seleccionando Actualmente.

Macro

PAINT_SHADOW

Este macro es el encargado de pintar todas las sombras de cualquier objeto que se desee tenga sombre en la pantalla. El men principal, los mens desplegables hacia la derecha y las ventanas son objetos que tienen sombra, y esta sombra es dibujada por esta macro. Ya que la forma de la sombra ya est determinada, es posible hacer la sombra para una ventana sabiendo solamente sus dimensiones y la posicin en que se encuentra alguna de sus esquinas. En el caso de esta macro, es nicamente necesario indicar la direccin de memoria en que inicia la impresin de la ventana a la cual se le har sombra, y sus dimensiones en filas x columnas, indicadas en ROWS4 y COLS4. Tambin es posible indicarle a esta macro de qu color se desea que sea la sombre a travs del parmetro SHADOW_COLOR, el cual acta como un atributo para un carcter en modo texto, es decir, contiene en su high nibble el color del fondo y en el low nibble el color de la letra. De esta forma es posible hacer los dos tipos de colores de sombra que se manejan en la aplicacin, negro y verde parpadeante:

Figura #. Dos distintos colores de sombra: negro slido y verde parpadeante. Para lograr realizar las dos sombras distintas para este cuadrado azul es necesario indicarle a PRINT_SHADOW nicamente la direccin donde esta impresa la esquina superior izquierda del cuadrado y el ancho y alto del cuadrado. Se debe aclarar que solo se pueden realizar sombras de figuras rectangulares adecuadamente, o que al menos su lado inferior derecho formen 90 entre s.

Macro SAVE_MATRIX

Este macro permite guardar en una matriz (TEMP_MATRIX) otra matriz que est definida por una direccin de inicio (START_MEM) y un ancho dado en nmero de columnas (COLS5) y un alto dado en nmero de filas (ROWS5). Esto se utiliza para poder guardar una matriz temporalmente para luego restablecerla. El parmetro START_MEM: Direccin en donde comienza la matriz que sea desea almacenar. A partir de esta direccin comenzara a copiar apuntando con ES:DI; el parmetro ROWS5 indica la cantidad de filas que se almacenaran, COLS5: Indica la cantidad de columnas que se almacenaran ; TEMP_MATRIX Es la matriz destino en la cual se almacenara y por ultimo PAG_ADDR es la direccin de la pgina en la cual se encuentra la matriz que se copiara (0B800H, 0B900H...). Esta macro copia el contenido de toda una matriz de memoria, incluyendo caracteres ASCII y atributos que estn en la memoria ya que, como se imprimir sobre las mismas direcciones de memoria con distintos caracteres y atributos, es necesario guardarlo todo.

Figura #. SAVE_MATRIX permite almacenar lo que est en el cuadro rojo, Para luego reestablecerlo sin que se noten cambios. Esto se hace cada vez que se va a desplegar un men del men principal, una ventana o cualquier otro objeto que este en la aplicacin temporalmente. Siempre se utiliza la matriz BACKUP_MATRIX para almacenar toda esta informacin de memoria de video y luego se lee a partir de ella la misma informacin y se vuelve a escribir sin cambios.

Macro

UPDATE_ATRIBUTE

Esta macro permite a la aplicacin actualizar el atributo de una diapositiva siempre que el usuario haga cambios en ella relacionados con el color de letra o con el color del fondo. Esta macro es necesaria ya que lo que modifica nicamente en memoria son todos los bytes de atributo de la diapositiva que se est mostrando actualmente. Adems es posible indicarle a travs del parmetro ATRIBUTO con qu atributo se reemplazar en la diapositiva, y desde donde se har el reemplazo (STARTUP), adems del espacio en que se har el reemplazo (ROW_NUM, COL_NUM). Por ejemplo, cuando el usuario ha ingresado el texto en una diapositiva, y luego selecciona ya sea un cambio de color de texto, de color de fondo o activa o desactiva el parpadeo, es necesario actualizar el atributo de la diapositiva, y esto se logra a travs de UPDATE_ATRIBUTE.

Figura #. A travs de un cambio de color, la macro UPDATE_ATRIBUTE Es utilizada para actualizar el atributo de alguna diapositiva

Macro REFRESH_TEXT

Durante el desarrollo del programa surgi la necesidades de que cuando el usuario cambiara de diapositiva, era necesario que apareciera nuevamente el texto de la diapositiva a la que esta cambiando. Dicho texto se encuentra almacenado en un espacio en memoria reservado para dicha accin, sin embargo, este texto puede contener caracteres como el Enter los cuales no tiene representacin grfica pero implican un cambio de lnea de escritura. Por esta razn, se creo la macro REFRESH_TEXT, la cual se encarga de reimprimir adecuadamente en la pantalla el texto de alguna diapositiva, tomando en cuenta la posicin en la que se encontraba, su largo y la presencia de caracteres como Enter. Esta macro se encarga de reescribir en la direccin de memoria de texto solamente los caracteres ASCII de la cadena correspondiente a una diapositiva que este seleccionada, sin modificar de ninguna forma los atributos. A travs de los parmetros POSIY y POSIX es posible indicar al macro las coordenadas iniciales del texto que se enva en el parmetro STRONG, y se indica el largo de la cadena en el parmetro LARGO. Ya que este refrescamiento de texto se debe hacer en la mitad derecha de la pantalla, cuando se encuentra un Enter en la cadena, el texto debe continuar reescribindose en la siguiente lnea que comienza a partir de la columna 40 en la pantalla. Para lograr esto se realiz el siguiente algoritmo que se ejecuta siempre que se encuentra un Enter en la cadena.

Figura #. Algoritmo para reposicionar el registro DI en una localidad de Memoria que se vea grficamente como un Enter o cambio de lnea. Lo que hace este algoritmo es lo siguiente: La posicin en columnas de DI esta en un rango entre 0 y 160, pero como direccin si se divide esta cantidad (el valor de DI) dentro de 160, se obtiene como cociente entero la lnea en que se encuentra el registro DI, y como residuo la cantidad de columnas o espacios a partir del margen izquierdo en que se encuentra en la ultima fila. Esto es un offset a partir del lado izquierdo de la ltima fila. Este offset esta en un rango entre 0 y 160, al cual si se le sustrae 80, se obtiene el offset al cual se encuentra DI a partir de la mitad de la pantalla. Si

al valor de DI se le sustrae este nuevo offset, DI estara apuntando justamente a una direccin de memoria que se encuentra en la mitad de la pantalla y sumndole 160 posteriormente se logra que DI cambie a la siguiente lnea encontrndose siempre en la mitad de la pantalla, logrando as el efecto de un Enter. Macro

REESTABLECER_MATRIZ

Este macro hace el proceso inverso de la macro SAVE_MATRIX, ya que toma una matriz que se le enva como parmetro en MATRIX2, y la reimprime en las localidades de memoria que se indican a travs de una direccin de inicio INI_ADDR, y un ancho (COLS6) y alto de la matriz (ROWS6). Esta matriz debe ser una matriz que contenga atributos y caracteres, en parejas y uno seguido del otro, para que al reimpresin sea coherente. Su codificacin es muy parecida a la de PRINT_TEXT_MEMORY, ya que imprime una matriz en el segmento de datos en un espacio en la memoria de video, sin embargo REESTABLECER_MATRIZ si modifica los atributos y los ASCII. Es de esta forma como se logra que al presentar una ventana y esta desaparece, no se note cambios en el fondo de la pantalla o de la aplicacin, ya que tan pronto como se deja de hacer lo que se debe hacer con la ventana, esta no es borrada, si no que sobre ella se escribe lo que estaba antes de que ella apareciera justamente como estaba escrito.

Procedimiento para imprimir en pantalla una ventana


y restablecerla luego de que el usuario realiza una accin requerida
El siguiente algoritmo presenta el proceso que se sigue en la aplicacin siempre que se desea imprimir en la pantalla alguna ventana de peticin de datos, ventana informativa, cuadro de dilogo o cualquier otro objeto que este temporalmente en la pantalla y que no pertenezca a las diapositivas o presentacin en s.

Se obtienen de variables (XXXX_ADDR)

Se obtienen de variables (XXXX_ROWS, XXXX_COLS)

SAVE_MATRIX

PRINT_TEXT_MEMORY

INPUT_EFECTO, INPUT_MUESTRA, etc

REESTABLECER_MATRIZ

Figura #. Flujo del proceso para imprimir una ventana o cuadro en pantalla

Principales variables que controlan el flujo del programa


PowerPoint 1-2-3 contiene una gran cantidad de variables con funciones muy importantes y otras con funciones solamente temporales o auxiliares. Sin embargo, todas estas variables permiten el funcionamiento adecuado en el entorno de la aplicacin, y que las modificaciones que el usuario hace se hagan efectivamente con l lo espera. De esta forma se tienen algunas variables que controlan el flujo del programa y que se encargan de diferenciar entre las diapositivas y qu acciones se puede hacer en qu momentos o en qu estados: La variable SLIDE_NUMBER contiene la cantidad actual de diapositivas mientras se ejecuta el programa. Si esta variable contiene una valor de cero, no es posible realizar todas las operaciones disponibles desde F2 hasta F8. Esto es as debido a que, por ejemplo, el usuario solo puede cambiar el color de texto si hay texto presente, y esto implica que debe haber una diapositiva presente, y si SLIDE_NUMBER es cero, quiere decir que no hay diapositivas presentes.

Figura #. Mensaje de alerta cuando se intenta hacer una accin que requiere La existencia de diapositivas, pero el usuario an no las ha creado. Otra funcin importante de esta variable es que permite saber cundo se ha alcanzado el nmero mximo de diapositivas. La mxima cantidad de diapositivas presentes en el programa es 3. El usuario puede tener al mismo tiempo un mximo de 3 diapositivas, y puede tener tambin 2 diapositivas o solamente 1 diapositiva. Por ejemplo, cuando ya hay 3 diapositivas presentes y el usuario ejecuta F2 > Insertar, la aplicacin muestra u mensaje de error indicando que ya no se puede insertar diapositivas.

Figura #. Mensaje de error al intentar crear ms de 3 diapositivas. SLIDE_NUMBER no puede ser mayor a 3 ni menor a 0.

Otra variable de mucha importancia es ACTUAL_SLIDE. Esta variable indica en todo momento el nmero de la diapositiva que tiene algo denominado focus. El focus se refiere a la diapositiva que se encuentra actualmente presentndose al usuario. Si, por ejemplo, ACTUAL_SLIDE tiene una valor de 1, esto indica que el usuario estar trabajando actualmente en la diapositiva 1, y por tanto lo que debe mostrrsele en pantalla es la diapositiva 1, el texto y la imagen que le corresponde, y todas las modificaciones que se hagan deben hacer sobre esta diapositiva no solo visualmente, tambin dentro de las variables del programa.

(1)

(2)

(3)

Figura #. Cambio de focus cuando hay 3 diapositivas. En (1) el focus lo tiene la diapositiva 1, ACTUAL_SLIDE =1; en (2) el focus esta en diapositiva 2, ACTUAL_SLIDE =2; en (3) el focus estn en diapositiva 3, ACTUAL_SLIDE = 3. Adems, durante la ejecucin de la aplicacin, el usuario puede saber sobre qu diapositiva est trabajando observando que la diapositiva actual o diapositiva de trabajo (la que tiene el focus) tendr una sombre verde parpadeante siempre. Ntese en la figura arriba. De esta forma, si el usuario tiene 2 o 3 diapositivas con el mismo color de fondo y sin diferencia alguna, podr saber qu diapositiva est editando a travs de ese sombreado verde parpadeante.

-Variables descriptoras de una diapositiva: A cada diapositiva le corresponde una serie de variables que la describen. Por ejemplo, cada diapositiva tiene un color de fondo propio y un color de letra propia, tambin tiene un texto propia y cada una puede tener distintas coordenadas para el inicio del texto que se le ingreso. De esta forma, se defini una serie de variables para cada diapositiva que la describen en su totalidad, y que son utilizadas al almacenar y cargar una presentacin, ya que permiten reconstruir la presentacin, diapositiva por diapositiva, en su totalidad. Estas variables son: DIAPn_ATRIB : Contiene el atributo que define el color de fondo y de letra de una diapositiva DIAPn_CHAR: Contiene el carcter de fondo que llena a una diapositiva. DIAPn_STR: Contien el string que corresponde a la diapositiva n. DIAPn_STR_XPOS: Contiene la coordenada X de la cadena DIAPn_STR_YPOS: Contiene la coordenada Y de la cadena. DIAPn_STR_LONG: Contiene el largo de la cadena de la diapositiva n. DIAPn_IMAGE: Numero de imagen que le corresponde a la diapositiva n. DIAPn_IMAGEX: Contiene la coordenada X de la imagen de ladiapositiva n. DIAPn_IMAGEY: Contiene la coordenada Y de la imagen de la diapositivia n. Por ejemplo, las variables que describen a las distintas diapositivas son:

Figura #. Variables que describen a cada diapositiva. Ntese que cambia el Numero en cada variable.

Procedimiento UPDATE_FOCUS

Este procedimiento es fundamental en la aplicacin. Este procedimiento se encarga de refrescar toda la informacin presente en la pantalla de la aplicacin. Cada vez que se hace una modificacin en la diapositiva, esta modificacin se debe realizar no solo grficamente, sino que tambin lgicamente dentro de las variables que describen a cada diapositiva. El procedimiento UPDATE_FOCUS se encarga de repintar en pantalla cada diapositiva cuando, por ejemplo, se cambia de diapositiva, se ingresa una imagen, se cambia el color del fondo de la presentacin o el color de la letra. Cualquier cambio que se realiza en la presentacin, este procedimiento se encarga de realizar visualmente para el usuario. La funcionalidad de este procedimiento es actualizar el focus en la presentacin y en la aplicacin. Esto se logra en combinacin con las variables ACTUAL_SLIDE y SLIDE_NUMBER.

BIBLIOGRAFA
1. Mazidi Ali, M y et. al. 2010. The x86 PC: Assembly Language, Design and Interfacing. Quinta Edicin. Prentice Hall. Estados Unidos. 786 Pp. 2. Abel, P. 2001. IBM PC Assembly Language and Programming. Quinta Edicin. Prentice Hall. Estados Unidos. 545 Pp.

Você também pode gostar