INSTITUTO TECNOLÓGICO DE CELAYA Página 1 de 8
Transcripción
INSTITUTO TECNOLÓGICO DE CELAYA Página 1 de 8
INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ CARRERA INGENIERIA EN SISTEMAS COMPUTACIONALES PRACTICA No. 1 NOMBRE DE LA PRACTICA CREACION Y ESCRITURA DE ARCHIVOS EN ENSAMBLADOR AUTOR: LILIANA NORIA MONTOYA NOMBRE DE LA ASIGNATURA LENGUAJES DE INTERFAZ DURACION(HORAS) 1 (max) 1 INTRODUCCION La manipulación de archivos es algo que, todos los que hacemos uso de una computadora, usamos siempre, ahora, compete a esta asignatura el analizar la forma en que la computador lo realiza, lo cual es más complejo que un simple “Clic derecho” y seleccionar “Nuevo, borrar, etc.” 2 OBJETIVO (COMPETENCIA) El alumno aprenderá la forma en que los archivos son creados en la computadora en base al lenguaje ensamblador (recordemos que este tiene que ser trasladado a código binario para que la computadora realmente trabaje). 3 FUNDAMENTO El lenguaje ensamblador, es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Un archivo informático está identificado por un nombre y una descripción, el cual almacena información en formato binario. En lenguajes de alto nivel se manejan estos archivos, escondiendo los componentes sobre el manejo y compilación de los mismos. La manipulación de archivos se reduce a tareas bastante simples. Sin embargo, en lenguaje ensamblador, la manipulación de ellos requiere de mayor detalle. Hay dos maneras de operar los archivos lenguaje ensamblador. La primera y más antigua se llama “bloque de control de archivo” (FCB: File Control Block). La segunda y más nueva se llama metodología de Handles o canales de comunicación. Ventajas de manipulación de archivos a través de FCB. Permiten un número ilimitado de archivos abiertos. Los FCB se usan para crear volumen en los dispositivos de almacenamiento. Ventajas de manipulación de archivos a través de handles Simplicidad para manejar errores. Funciones de handle pueden permanecer en las variables actuales de sistema operativo. Página 1 de 8 INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ AUTOR: LILIANA NORIA MONTOYA Toman ventaja de la estructura de directorio del S.O. Permite al programador centrarse en la programación y no ocuparse de tantos detalles. NOTA: FCB fue sustituido por los handles debido a que no permite nombres de archivo con una longitud máxima a los 8 caracteres. 4 4 REQUISITOS BÁSICOS. Deberá comprender el lenguaje ensamblador, básicamente lo referente a manipulación de registros, interrupciones, variables y directivas. Deberá contar con un emulador, el que sea de su preferencia. Puede auxiliarse de manuales o algunas de las referencias que le serán proporcionadas. DESARROLLO Esta práctica muestra y explica la creación de un archivo “.txt” y escritura en el mismo, en lenguaje ensamblador mediante el método de handles. 1. Abra el emulador de su elección (para este caso emu 8086), desde el cual abrirá el archivo CrearArch.asm incluido en esta carpeta 2. Intente comprender el funcionamiento de los mnemónicos con los que este familiarizado. 3. A continuación desglosaremos cada una de las secciones del mismo. org 100h Página 2 de 8 INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ AUTOR: LILIANA NORIA MONTOYA start: mov xor lea int ah,3Ch cx,cx dx,file 21h Como lo indican los requisitos básicos de la práctica, debe estar familiarizado con la directiva org 100h, la cual nos indica que el compilado de nuestro archivo generara un “.com”. La directiva .start indica al enlazador el punto de inicio del programa. stack señala al enlazador, de manera similar, cuál es el segmento de pila; al arrancar el programa, SS apuntará al segmento designado, y SP al final de éste. INT 21H Función 3CH Crear Fichero LLAMADA: AH = 3CH CX = Atributos del fichero: 00H Fichero Normal. 01H Fichero de Sólo Lectura. 02H Fichero Oculto. 03H Fichero de Sistema. Lea mueve la dirección de “file” al registro dx DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre de fichero. DEVUELVE: Si se ejecutó correctamente: Flag de acarreo (Cf) = 0 AX = Handle o manejador de fichero. Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1 AX = Código de error. EFECTO: Si el fichero indicado mediante la cadena ASCII ya existía, entonces se vacía su contenido, quedando con longitud 0. Si el fichero no existía, entonces se crea. En ambos casos, el fichero se abre, y se devuelve un Handle o manejador de fichero para los restantes accesos a dicho fichero. Esta función se abortará (indicándolo mediante Cf y AX) si: -La vía de acceso indicada en la cadena ASCII es errónea. -Se va a crear el fichero en el directorio raíz y éste ya está lleno El Handle es un número mediante el cual se referencia a un fichero dado. De esta forma es más cómodo trabajar con ficheros. Para cada uno de los ficheros con que trabajemos, tendremos un número (Handle) que lo representará. mov lea int ax,3d02h dx,file 21h Página 3 de 8 INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ AUTOR: LILIANA NORIA MONTOYA INT 21H Función 3DH Abrir Fichero LLAMADA: AH = 3DH AL = Modo de acceso. Bits 0-2: Permiso de lectura/escritura. 000b Acceso de sólo lectura. 001b Acceso de sólo escritura. 010b Acceso de lectura/escritura. Bit 3: 0b (Reservado). Bits 4-6: Modo de compartición de Fichero 000b Sólo el programa actual puede acceder al archivo 001b Sólo el programa actual puede acceder al archivo. 010b Otro programa puede leer el archivo, pero no escribir en él. 011b Otro programa puede escribir en el archivo, pero no leerlo. 100b Otro programa puede leer y escribir en el archivo. Bit 7: Bit de 'herencia' ó Handle-flag. 0b Si el handle se hereda por un programa hijo. 1b Si el handle no se hereda. DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre de fichero. DEVUELVE: Si se ejecutó correctamente Flag de acarreo (Cf) = 0 AX = Handle o manejador de fichero Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1 AX = Código de error. EFECTO: Mediante esta función se abre un fichero ya existente, y se devuelve un Handle para acceder al fichero en lo sucesivo. mov handle,ax mov mov mov lea int ah,40h bx,handle cx,4 dx,text 21h INT 21H Función 40H Escritura en Fichero o dispositivo. LLAMADA: AH = 40H BX = Handle. CX = Número de bytes a escribir. DS:DX = Segmento: Desplazamiento del buffer desde donde se van a tomar los caracteres a escribir. Página 4 de 8 INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ AUTOR: LILIANA NORIA MONTOYA DEVUELVE: Si se ejecutó correctamente: Flag de acarreo (Cf) = 0 AX = Bytes transferidos. Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1 AX = Código de error EFECTO Dado un handle válido, se realiza una transferencia desde el buffer de memoria indicado mediante DS:DX hacia el fichero o dispositivo referenciado por el Handle. Se transferirán tantos caracteres como se especifique en CX. Acto seguido, se actualiza el puntero de fichero una posición por delante del bloque escrito, para que futuras escrituras no 'machaquen' los datos que ya hubiera. Mediante esta función es posible escribir caracteres en la pantalla, usando el handle 1. mov mov int ah,3Eh bx,handle 21h INT 21H Función 3EH Cerrar Fichero LLAMADA: AH = 3EH BX = Handle. DEVUELVE: Si se ejecutó correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecutó correctamente: Flag de acarreo (Cf) = 1 AX = Código de error. EFECTO: Mediante esta función se cierra un fichero que estuviera abierto. Se utiliza el Handle para indicar el fichero a cerrar. Tras cerrar el fichero, dicho Handle se libera para nuevos ficheros. Se vuelvan al disco todos los buffers internos asociados al fichero. ret file db handle dw text db end 'Prueba.txt',0 ; nombre del archivo 0 'Lili' ; texto que se escribirá en el archivo ret extrae una dirección de la pila y salta a ella. Puede ser un retorno cercano mediante RETN (Near) o lejano mediante RETF (Far); en el primer caso extrae el offset y en el segundo segmento y offset. Con el uso genérico de la instrucción RET el ensamblador elige la apropiada. Es muy importante que la subrutina deje la pila Página 5 de 8 INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ AUTOR: LILIANA NORIA MONTOYA como estaba justo al ser llamada para que la dirección de retorno quede en la parte superior, pues de lo contrario al llegar a RET saltaríamos a cualquier sitio menos la dirección correcta. Se definen las variables a utilizar mediante las directivas de definición de datos (db=1 byte, dw=2 bytes). END es la directiva que indica el final del programa y detiene el proceso de ensamblaje. 4. Lea cuantas veces sea necesario la explicación anterior, hasta que considere que la ha comprendido completamente 5. Compile el archivo .asm, y seleccione la ubicación del código compilado (.com). Página 6 de 8 INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ AUTOR: LILIANA NORIA MONTOYA 6. Ejecute el archivo .com generado en el paso anterior. 7. Observe que el archivo “Prueba.txt” es creado en el mismo directorio donde se encuentra el archivo .com. Página 7 de 8 INSTITUTO TECNOLÓGICO DE CELAYA PRACTICA DE LABORATORIO-LENGUAJES DE INTERFAZ AUTOR: LILIANA NORIA MONTOYA 8. Abra el archivo “Prueba.txt” y observe su contenido. 9. Para cualquier posible aclaración de conceptos puede consultar los links incluidos en las referencias de este documento. 5 ANEXOS ../Practica/CrearArch.asm 6 REFERENCIAS http://yaqui.mxl.uabc.mx/~mediciones/sem10-1/practica4.pdf http://ict.udlap.mx/people/oleg/docencia/ASSEMBLER/asm_interrup_21.html http://www.isaatc.ull.es/asignaturas/arqcontrol/manual.pdf http://www.rinconsolidario.org/eps/asm8086/CAP6.html http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r86194.PDF Página 8 de 8