2.16 Operaciones Basicas Sobre Archivos

Embed Size (px)

DESCRIPTION

Operaciones básicas sobre archivos, en lenguaje ensamblador, teoría.

Citation preview

INSTITUTO TECNOLGICODE ACAPULCO

Ingeniera en sistemas computacionalesMateria: Lenguaje de InterfazRESUMEN: Tema: 2.16 OPERACIONES BASICAS SOBRE ARCHIVOS.Profesor: Ing. Dagoberto Urza OsorioAlumna: Tania Daz Navarrete #c: 12320712Hora: 11:00 am 14:00 p.m.Aula: 604

Que son los archivos?Un archivo informatico esta identificado por un nombre y una descripcin, el cual almacena informacin en formato binario (es decir 0 y 1).En lenguajes de alto nivel manejan los grupos de informacin (archivos), escondiendo la complejidad sobre el manejo y compilacin de los mismos. En leguajes de alto nivel la manipulacin de archivos se reduce a taras simples como por ejemplo, creacin, lectura, escritura.En lenguaje ensamblador, la manipulas de archivo requiere de mayor detalle.FORMA DE OPERAR EN LOS ARCHIVOS.Hay dos maneras para operar los archivos en lenguaje ensamblador.FCB: FILE CONTROL BLOCK. Bloque se control de archivoVentajas: Permite tener nmero ilimitados de archivos abiertos. Se usan para crear volumen en los dispositivos de almacenamiento. METODOLOGIA HANDLES o Canales de comunicacin.Ventajas: Simplicidad para manejar errores. Funciones de Handle pueden permanecer en las versiones actuales del S.O Toman ventaja de la estructura de directorio del SO Permiten al programador centrarse en la programacin pura sin ocuparse de tantos detalles.

FORMA DE OPERAR EN LOS ARCHIVOS CON LOS HANDLER.Las funciones bsicas para el manejo de archivos con la int 21h son:

Funcin 3CH: se utiliza para crear un archivo. La funcin 3CH crear o trunca un archivo.AH=3CHCX= Atributo del archivoDS: DX

Registros de regreso: La bandera de acarreo (CF): CF= 0, todo estuvo bien y AX obtiene el nmero Handle para el archivo.

CF=1, ocurri un error y AX obtiene el cdigo de error. AX=03H, ruta no encontrada AX=04H, no hay un handle disponible para asignar. AX=05H, acceso negado.

Funcin 40H: se utiliza para escribir sobre un archivo. La funcin 40H escribe un archivo o dispositivo una cierta cantidad de byte, a partir de un buffer designado.

AH=40HBX= Handle asignadoCX= Cantidad de byte a ser escritos en el archivoDS: DX= Apuntador a buffer de datos.

Registros de regreso: La bandera de acarreo (CF):CF=0, todo estuvo bien y AX obtiene el nmero de bytes escritos.CF=1, ocurri un error y AX obtiene el cdigo de error AX=05H, Acceso negado AX=06H, Handle es errado.

Funcin 3EH: Se utiliza para cerrar un archivo.Operar con funcin 3EH La funcin 3EH cierra a un archivo designado.AH=3EHBX= Handle asignado

Registros de regreso: La bandera de acarreo (CF): CF=0, todo estuvo bien y AX obtiene el nmero de bytes escritos. CF=1, ocurri un error y AX obtiene el cdigo de errorAX=06H, Handle es errado.

https://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r89584.PDF

Mtodos de trabajo con archivosExisten dos formas de trabajar con archivos, la primera es por medio de bloques de control de archivos o "FCB" y la segunda es por medio de canales de comunicacin, tambien conocidos como "handles".La primera forma de manejo de archivos se viene utilizando desde el sistema operativo CPM, antecesor del DOS, por lo mismo asegura cierta compatibilidad con archivos muy antiguos tanto del CMP como de la versin 1.0 del DOS, adems este mtodo nos permite tener un nmero ilimitado de archivos abiertos al mismo tiempo. Si se quiere crear un volumen para el disco la nica forma de lograrlo es utilizando este mtodo.An considerando las ventajas del FCB el uso de los canales de comunicacin es mucho ms sencillo y nos permite un mejor manejo de errores, adems, por ser ms novedoso es muy probable que los archivos as creados se mantengan compatibles a travs de versiones posteriores del sistema operativo.Para una mayor facilidad en las explicaciones posteriores me referir a el mtodo de bloques de control de archivos como FCBs y al mtodo de canales de comunicacin como handles.

IntroduccinExisten dos tipos de FCB, el normal, cuya longitud es de 37 bytes y el extendido de 44 bytes. En este tutorial unicamente se tratar el primer tipo, as que de ahora en adelante cuando me refiera a un FCB realmente estoy hablando de un FCB de 37 bytes.El FCB se compone de informacin dada por el programador y por informacin que toma directamente del sistema operativo. Cuando se utilizan este tipo de archivosunicamente es posible trabajar en el directorio actualya que los FCB no proveen apoyo para el uso de la organizacin por directorios del DOS.El FCB est formado por los siguientes campos:

POSICION LONGITUD SIGNIFICADO00H 1 Byte Drive01H 8 Bytes Nombre del archivo09H 3 Bytes Extensin0CH 2 Bytes Nmero de bloque0EH 2 Bytes Tamao del registro10H 4 Bytes Tamao del archivo14H 2 Bytes Fecha de creacin16H 2 Bytes Hora de creacin18H 8 Bytes Reservados20H 1 Byte Registro actual21H 4 Bytes Regsitro aleatorioPara seleccionar el drive de trabajo se sigue el siguiente formato: drive A = 1; drive B = 2; etc. Si se utiliza 0 se tomar como opcin el drive que se est utilizando en ese momento.El nombre del archivo debe estar justificado a la izquierda y en caso de ser necesario se debern rellenar los bytes sobrantes con espacios, la extensin del archivo se coloca de la misma forma.El bloque actual y el registro actual le dicen a la computadora que registro ser accesado en operaciones de lectura o escritura. Un bloque es un grupo de 128 registros. El primer bloque del archivo es el bloque 0. El primer registro es el registro 0, por lo tanto el ltimo registro del primer bloque sera 127, ya que la numeracin inici con 0 y el bloque puede contener 128 registros en total.

Abrir archivosPara abrir un archivo FCB se utiliza la interrupcin 21H, funcin 0FH. La unidad, el nombre y extensin del archivo deben ser inicializados antes de abrirlo.El registro DX debe apuntar al bloque. Si al llamar a la interrupcin sta regresa valor de FFH en el registro AH es que el archivo no se encontr, si todo sali bien se devolvera un valor de 0.Si se abre el archivo DOS inicializa el bloque actual a 0, el tamao del registro a 128 bytes y el tamao del mismo y su fecha se llenan con los datos encontrados en el directorio.Crear un archivo nuevoPara la creacin de archivos se utiliza la interrupcin 21H funcin 16H .DX debe apuntar a una estructura de control cuyos requisitos son que al menos se encuentre definida la unidad lgica, el nombre y la extensin del archivo.En caso de existir algun problema se devolver el valor FFH en AL, de lo contrario este registro contendr el valor de 0.Escritura secuencialAntes de que podamos realizar escrituras al disco es necesario definir el rea de transferencia de datos utilizando para tal fin la funcin 1AH de la interrupcin 21H.La funcin 1AH no regresa ningn estado del disco ni de la operacin, pero la funcin 15H, que es la que usaremos para escribir al disco, si lo hace en el registro AL, si ste es igual a cero no hubo error y se actualizan los campos del registro actual y bloque.

Lectura secuencialAntes que nada debemos definir el rea de transferencia de archivos o DTA.Para leer secuencialmente utilizamos la funcin 14H de la int 21H.El registro a ser leido es el que se encuentra definido por el bloque y el registro actual. El registro AL regresa el estado de la operacin, si AL contiene el valor de 1 o 3 es que hemos llegado al final del archivo. Un resultado de 2 significa que el FCB est mal estructurado.En caso de no existir error AL contendr el valor de 0 y los campos bloque actual y registro actual son actualizados.Lectura y escritura aleatoriaLa funcin 21H y la funcin 22H de la interrupcin 21H son las encargadas de realizar las lecturas y escrituras aleatorias respectivamente.El nmero de registro aleatorio y el bloque actual son usados para calcular la posicin relativa del registro a leer o escribir.El registro AL regresa la misma informacin que para lectura o escritura secuencial. La informacin que ser leda se regresar en el rea de transferencia de disco, as mismo la informacin que ser escrita reside en el DTA.Cerrar un archivoPara cerrar un archivo utilizamos la funcin 10H de la interrupcin 21H.Si despus de invocarse esta funcin el registro AL contiene el valor de FFH significa que el archivo ha cambiado de posicin, se cambi el disco o hay un error de acceso al disco.

Trabajando con handlesEl uso de handles para manejar los archivos facilita en gran medida la creacin de archivos y el programador puede concentrarse en otros aspectos de la programacin sin preocuparse en detalles que pueden ser manejados por el sistema operativo.La facilidad en el uso de los handles consiste en que para operar sobre un archivo unicamente es necesario definir el nombre del mismo y el nmero del handle a utilizar, toda la dems informacin es manejada internamente por el DOS.Cuando utilizamos este mtodo para trabajar con archivos no existe una distincin entre accesos secuenciales o aleatorios, el archivo es tomado simplemente como una cadena de bytes.Funciones para utilizar handlesLas funciones utilizadas para el manejo de archivos por medio de handles son descritas en la unidad 6: Interrupciones, en la seccin dedicada a la interrupcin 21H.http://moisesrbb.tripod.com/unidad7.htm#u711