Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

Práctica - Introducción al manejo de archivos

Enviado por   •  30 de Octubre de 2018  •  3.136 Palabras (13 Páginas)  •  363 Visitas

Página 1 de 13

...

Para cada archivo que se accede mediante funciones FCB se genera la siguiente tabla llamada FCB:

Formato del FCB

Dirección

Tamaño

Descripción

00h

1 byte

Número de unidad (0 por defecto, 1 = A, etc) FF no permitido

01h

8 bytes

Nombre del archivo justificado a la izquierda con blancos

09h

3 bytes

Idem para la extensión

0Ch

2 bytes

Número de bloque actual (puntero al fichero). Es un número relativo al inicio del archivo, empezando por cero. Una operación de abrir lo establece en cero. Un bloque consta de 128 registros.

0Eh

2 bytes

Tamaño del registro lógico. Después de abrir y antes de lectura o escritura se puede modificar el valor por defecto de 128 (80h)

10h

4 bytes

Tamaño del fichero

14h

2 bytes

Fecha de la última escritura

16h

2 bytes

Hora de la última escritura

18h

8 bytes

Reservado

20h

1 byte

Número de registro actual dentro del bloque actual. Aunque en la apertura se establece en 0, se puede modificar para acceso directo al archivo.

21h

4 bytes

Número del registro de acceso directo para lectura/escritura, si el tamaño del registro es mayor de 64 bytes se omite el byte superior. Por ejemplo, para leer de manera directa el registro 20 (14h) estableceremos la entrada en 14000000h.

Cada operación FCB requiere la dirección de la tabla FCB en DS:DX, así como tener establecido un área de transferencia de datos (DTA) que por defecto se halla en el PSP y que viene a ser como un espacio auxiliar donde se mete o se saca información que se lee o escribe sobre los registros del archivo. Sólo puede haber establecido un solo DTA.

INT 21h - FCB

Función

Efecto

0Fh

Abre archivo

Cargamos en DS:DX la dirección del FCB. Si se ha producido algún error en la apertura del archivo la función devuelve el código FFh en AL; sino anula AL y establece el tamaño actual del archivo, la fecha, el número de bloque actual y el tamaño del registro en el FCB.

10h

Cierra archivo

Para cerrar un archivo primero hay que escribir el valor 1Ah en el primer byte de un último registro especial. A continuación debemos usar la función 10h del FCB, pasando en DS:DX la dirección de la tabla FCB, devolviendo un código de estado en AL: 0 si hubo éxito, FFh sino.

14h

Lee registro

Pasamos a DS:DX la dirección del FCB. Devuelve un código de estado en el registro AL:

00h Operación tuvo éxito

01h Fin de archivo: ningún dato fue leído

02h DTA es muy pequeña para el registro

03h Fin de archivo, el registro se leyó parcialmente y se rellenó con ceros.

15h

Escribe registro

Metemos en DS:DX la dirección del FCB. El DTA establecido contiene el registro a escribir. Si el tamaño del registro es igual al del sector, lo escribe; sino se envía a un búfer con la longitud del sector hasta que se llene, momento en el que se escribe. Si por ejemplo, cada registro es de 128 bytes (el registro estándar es de 512 bytes), esta función llena el búfer con 4 registros (4x128=512) y después escribe el búfer relleno en un sector completo de disco. Si la función ha tenido éxito, el DOS incrementa el campo del tamaño del FCB con la dimensión del registro e incrementa el número del registro actual en uno. Cuando el número del registro actual supera 127, se anula y se incrementa el número del bloque actual del FCB. Se devuelven los siguientes códigos de estado:

00h Operación tuvo éxito

01h Disco lleno

02h DTA muy pequeña para el registro

16h

Crea archivo

Metemos en DS:DX la dirección del FCB. Si existe en el directorio un archivo con el nombre indicado en el FCB, lo trunca, sino lo crea. Después inicializa el tamaño del archivo a cero y lo abre, inicializando el bloque actual FCB a cero

Devuelve en AL el código de estado:

00h Espacio disponible

FFh No hay espacio disponible

1Ah

Establece el área de transferencia de disco DTA

En DS:DX metemos la dirección del búfer que contendrá el DTA. Por defecto, ésta se situará en la dirección 80h del PSP. Sólo puede haber un DTA activo en cualquier momento.

21h

Lectura directa de registro

Una vez establecido el DTA

...

Descargar como  txt (19.7 Kb)   pdf (142.3 Kb)   docx (27.5 Kb)  
Leer 12 páginas más »
Disponible sólo en Essays.club