1. OBJETIVO. Realizar el programa por medio de libreras independiente del programa principal. Compilar el programa principal por separado, y los subprogramas tambin. 2. FUNDAMENTO TEORICO. El objetivo de este documento es describir de una forma prctica cmo dividir un programa ensamblador en archivos separados que pueden ser ensamblados por separado y luego deben ser linkados para que formen una unidad ejecutable. Est descrito desde la ignorancia terica de muchos aspectos y la experiencia prctica de unos pocos.
Parto de que quiero escribir un programa ensamblador relativamente largo, por lo que nos gustara poder trabajar con varios archivos separados, de manera que en un archivo tenga el programa principal y en otros archivos las diversas rutinas que se invocan desde ste. Podra, por ejemplo, separar las rutinas dedicadas a los asuntos de pantalla en un archivo, las rutinas dedicadas a los asuntos de procesamiento de datos en otro, etc. En el ejemplo, nos hemos creado un archivo principal, quena.asm que se limita a llamar a las subrutinas de lnea, circulo, raton y boton1 . Pero estas rutinas no est en el actual archivo quena.asm sino en otros llamados lnea.asm, circulo.asm , raton.asm y boton1.asm. Con esto pretendemos conseguir que el flujo del programa comience ejecutndose en este archivo quena.asm luego salte a ejecutar cdigo que est en los archivos lnea, circulo, raton y boton1 y por ltimo regrese al programa principal quena.asm para terminar. En primer lugar, las etiquetas lnea, circulo, raton y boton1 no estn en el archivo quena.asm, por lo que el ensamblador las va a echar de menos. Es por eso que utilizamos la directiva EXTRN. Con esta directiva le indicamos al ensamblador que esas etiquetas estn definidas en otro archivo, de manera que el ensamblador esperar a el linkeado para resolverlas. Obsrvese cmo hemos declarado ambas etiquetas detrs de la directiva, y que tras cada etiqueta, separado por dos puntos hay un indicador: far. Estos indicadores son obligatorios y nos indican que ambas etiquetas estn en otro segmento, por lo que preparamos al ensamblador para que al construir la direccin de salto se haga con una direccin de segmento y un desplazamiento (en el caso de que la declaracin fuera near, el no hara falta ms que el desplazamiento puesto que se asume que el segmento es el mismo del proceso actual, ya en CS). A continuacin defino el segmento de datos y el de cdigo de la manera corriente para realice lo que se pretende. Como se puede verificar, al ejecutar este cdigo se invocar a circulo.asm escribir en pantalla el Los huecos de la quena y luego salta a la etiqueta linea y asi sucesivamente hasta realizar las tareas realizadas. En estos archivo hemos vuelto a definir un segmento de datos y un segmento de cdigos. Aunque tienen los mismos nombres que en archivo quena.asm el ensamblador va a saber distinguirlos como cosas distintas porque mantiene listas separadas de smbolos. No va a ocurrir lo mismo con los smbolos definidos como PUBLIC y EXTRN. Como se ve, en este archivo hemos definido como EXTRN la etiqueta exit. Ello es porque dentro del cdigo escrito en este archivo saltamos a esta etiqueta que est en el archivo quena.asm. De nuevo estamos dicindole al ensamblador que no se preocupe si no encuentra esta etiqueta dentro de este archivo, que seguro que est definida en otro lado, como en efecto as nos hemos asegurado definiendo como PUBLIC esta etiqueta en quena.asm. COMO HACER CORRER EL PROGRAMA QUENA. ASM Paso1. en el dosbox debemos entrar a la ruta del archivo especifico nosotros como ejemplo lo pusimos en C:\Users\Intel\Desktop\L4\CM
PASO2. Luego se emsambla todos los archivos por separado en este caso Masm raton.asm Masm circulo.asm Masm quena.asm Masm linea.asm Masm boton1.asm
Notamos que no importa el orden para emsamblar Paso3. Luego procedemos a linkear los objetos de cada subprograma ensamblado Link raton+quena+circulo+lnea+boton1
Nota el orden del link no importa como se muestra en la figura. Paso 4 Ahora hacemos el correr el programa quena y tenemos linkeado los subprogramas. C:\Users\Intel\Desktop\L4\CM > quena (enter)
Resultado en pantalla
Para poder interactuar con la quena disponemos de dos interfacez de teclado y mouse Teclado: seleccionar con la tecla mayscula bloqueada (Bloq Mayus) la letra que indica el hueco y presionar T para tocar y Esc para salir Mouse: seleccionar un hueco en la quena y presionar el botn tocar para escuchar el sonido
OTRO MTODO PARA COMPILAR EL PROGRAMA Para compilar mas rpido y hacer correr el programa usamos un archivos por lotes que nos ayuda a compilar linkear y ejecutar el programa mas rpido lo aadimos y simplemente ponemos en la consola
Lo que hace el .bat es compilar por el orden que le pusimos dentro como mostramos y lo podemos editar en un archivo de texto para hacer lo que queramos para la compilacin
Podemos ver que empieza a compilar automticamente
Y podemos ver el resultado.
3. CONCLUSIONES.- Se enlazo cada programa por separado como se detallo en el informe. Para poder compilar cada uno se lo compila como programas independiente y el momento de enlazar se pone LINK con cada programa + mas para poder enlazarlos cada uno y de esta forma tener el programa final y hacerlo correr con QUENA. Es mejor tener los subprogramas por separados de esta forma el programa principal se lo puede cambiar y o mejorar con solo cambiar los subprogramas. De la forma que deseemos