Capítulo – 16
Desarrollo de más utilidades para discos
Introducción
En este capítulo discutiremos cómo usar la información de MBR, DBR, FAT y directorios raíz para desarrollar programas de utilidad que pueden ayudarnos en la gestión de datos, en la optimización del almacenamiento o en muchas tareas de solución de problemas de disco.
Por lo general, estos programas son soluciones a algún problema específico. Algunos programas de utilidad y su programación se han discutido en este capítulo.
Ocultar particiones
Por lo general, la utilidad de ocultación de particiones es utilizada por aquellos usuarios que trabajan en dicho sistema informático que utilizan los usuarios. Si hay muchos usuarios para la misma computadora, puede haber una gran posibilidad de que los datos de otro usuario puedan ser leídos, robados o eliminados.
En tal caso, cuando el usuario tiene algunos datos importantes o alguna información confidencial en la misma computadora, puede estar dispuesto a ocultar la partición en la que tiene sus datos de tal manera que el Operador no pueda acceder a la partición. para que ningún otro usuario pueda acceder a él.
Cuando el usuario quiere trabajar en el sistema, puede volver a acceder a la partición, simplemente mostrando la partición. Por lo general, este tipo de eventos se llevan a cabo en las instituciones profesionales, donde muchos estudiantes usan las computadoras, pero los estudiantes de último año siempre están preocupados por sus datos importantes o el trabajo del proyecto. Como en la falta de conocimiento, el nuevo estudiante puede dañar o incluso eliminar sus datos.
Cómo se oculta la partición
La siguiente tabla representa el formato de partición en la tabla de partición de MBR:
Compensación |
Significado |
Tamaño |
Descripción |
00H |
Byte indicador de tipo de arranque |
1 byte |
Si Byte es 00H, la partición está inactiva y si Byte es 80H, la partición está activa (o de arranque) |
01H |
Número de cabecera del comienzo de la partición |
1 byte |
Número de cabecera inicial de la partición en sistema hexadecimal |
02H |
Número de Sector y Cilindro de Inicio de la Partición |
2 bytes |
6 bits del primer byte forman el número de sector inicial y la combinación de los 2 bits restantes (como dos bits más significativos) más 8 bits de otro byte (el resto de los 8 bits menos significativos del número de 10 bits) forman el número de cilindro inicial de la partición |
04H |
Indicador del sistema de archivos Byte |
1 byte |
Byte indicador del sistema de archivos en sistema hexadecimal (para obtener una lista completa de los bytes indicadores de partición, consulte el capítulo “Enfoque lógico de los discos y el sistema operativo” discutido anteriormente en este libro) |
05H |
Número de cabecera del final de la partición |
1 byte |
Número de encabezado final de la partición en sistema hexadecimal |
06H |
Sector y Cilindro Número de Fin de la Partición |
2 bytes |
6 bits del primer byte hacen el número de sector final y la combinación de los 2 bits restantes (como dos bits más significativos) más 8 bits de otro byte (el resto de 8 bits menos significativos del número de 10 bits) hacen el número de cilindro final de la partición |
08H |
Número de sector absoluto del comienzo de la partición |
4 bytes |
Número de sectores entre el MBR y el primer sector en la partición |
0CH |
Número de sector absoluto del final de la partición |
4 bytes |
Número de sectores en la partición |
|
|
Total = 16 Bytes |
|
En el desplazamiento 04H, en cada entrada de partición, hay un byte indicador del sistema de archivos. Este byte indicador representa el tipo de sistema de archivos de esa partición. Si se cambia el valor de este byte, se cambia la identidad de la partición.
Por ejemplo, el valor del byte indicador de partición para "DOS 12-Bit FAT" es 0x01. Si este valor se cambia a 0x11, la identidad del sistema de archivos en la entrada de la tabla de particiones se cambia a "FAT oculta de 12 bits de DOS" (para obtener una lista completa de los bytes del indicador de partición, consulte el capítulo "Enfoque lógico de los discos y el sistema operativo" discutido anteriormente en este libro).
La siguiente tabla muestra algunos ejemplos más del byte indicador del sistema de archivos para algunos tipos de partición:
Indicador de tipo de partición Byte |
Descripción del sistema de archivos de la partición |
0x01 |
DOS 12–bit FAT |
0x11 |
Hidden DOS 12–bit FAT |
0x04 |
DOS 16–bit FAT (<=32MB) |
0x14 |
Hidden DOS 16–bit FAT (<=32MB) |
0x05 |
DOS Extended |
0x15 |
Hidden DOS Extended |
0x06 |
DOS 16–bit big (> 32MB) |
0x16 |
Hidden DOS 16–bit big (> 32MB) |
0x07 |
NTFS |
0x17 |
Hidden NTFS |
0x0B |
Windows FAT32 |
0x1B |
Hidden Windows FAT32 |
0x0C |
Windows FAT32 (LBA) |
0x1C |
Hidden Windows FAT32 (LBA) |
0x0E |
Windows FAT16 (LBA) |
0x1E |
Hidden Windows FAT16 (LBA) |
0x0F |
Windows Extended |
0x1F |
Hidden Windows Extended |
Aquí vemos que la partición oculta correspondiente para cualquier sistema de archivos se encuentra agregando el valor 0x10 a su byte indicador del sistema.
Aunque no es la regla estricta y rápida para ocultar la partición, funciona incluso para la mayoría de los sistemas de archivos. La razón detrás de esto es que cuando cambiamos el valor del byte indicador de partición, la identidad del sistema de archivos en la entrada de la tabla de partición cambia. Y es muy raro que el nuevo sistema de archivos también sea compatible con el mismo sistema operativo.
Programa de escritura para ocultar partición
El programa dado a continuación se usa para ocultar la partición usando la entrada de partición de esa partición de la tabla de partición de MBR. Si desea ocultar otras particiones lógicas en el volumen extendido, debe acceder a los MBR extendidos.
La codificación del programa se ha dado a continuación:
/* Programa para ocultar la partición usando la entrada de la tabla de particiones de esa partición desde MBR */
#include <bios.h>
#include <stdio.h>
int main(void)
{
struct diskinfo_t dinfo;
int result, tohide;
int i;
static char dbuf[512];/* Data Buffer to read-Write the
Sector information */
clrscr();
dinfo.drive = 0x80; /* drive number for First
Hard Disk */
dinfo.head = 0; /* disk head number */
dinfo.track = 0; /* track number */
dinfo.sector = 1; /* sector number */
dinfo.nsectors = 1; /* sector count */
dinfo.buffer = dbuf; /* data buffer */
/* Leer el primer sector del disco */
result = _bios_disk(_DISK_READ, &dinfo);
if ((result & 0xff00) == 0)
{
printf("The Partition Codes of Four Partition Entries are,
0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
textcolor(15);
gotoxy(5,5);cprintf("Partition Entry in MBR is as
follows:");
gotoxy(10,7);cprintf("1. "); showtype(dbuf[450] & 0xff);
gotoxy(10,8);cprintf("2. "); showtype(dbuf[466] & 0xff);
gotoxy(10,9);cprintf("3. "); showtype(dbuf[482] & 0xff);
gotoxy(10,10);cprintf("4. "); showtype(dbuf[498] & 0xff);
/* obtener la entrada del usuario para ocultar la partición */
gotoxy(1,15);
printf("Enter The partition no. you want to hide,
Or Press any other key to Exit... ");
tohide=getche();
switch(tohide)
{
case '1': /* Hide First Partition in partition Table */
dbuf[450] = dbuf[450] +16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '2': /* Hide second Partition in partition Table */
dbuf[466] = dbuf[466]+16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '3': /* Hide third Partition in partition Table */
dbuf[482] = dbuf[482] +16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '4': /* Hide Fourth Partition in partition Table */
dbuf[498] = dbuf[498]+16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
default:
exit(0);
}
if ((result & 0xff00) == 0)
{
printf("\n\nThe New Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
getch();
}
else
{
printf("Cannot Change the Byte, status = 0x%02x\n",
result);
getch();
}
}
return 0;
}
Comentarios sobre la codificación:
El programa lee los bytes indicadores del sistema de archivos de las cuatro entradas de partición en la tabla de partición de MBR. La función showtype() se usa para mostrar el nombre del sistema de archivos para el valor correspondiente del byte indicador del sistema de archivos.
El usuario selecciona la partición que desea ocultar del menú que se muestra en la pantalla y luego se agrega 16 (0x10) al valor del byte indicador del sistema de archivos de esa partición para ocultarla.
La codificación de la función showtype() es la siguiente:
/* Función para mostrar el nombre del sistema de archivos correspondiente al valor del byte indicador del sistema de archivos */
showtype(i)
{
switch (i)
{
case 0x00 :cprintf("Empty"); break;
case 0x01 :cprintf("DOS 12-bit FAT"); break;
case 0x02 :cprintf("XENIX root"); break;
case 0x03 :cprintf("XENIX usr"); break;
case 0x04 :cprintf("DOS 16-bit <32M"); break;
case 0x05 :cprintf("Extended"); break;
case 0x06 :cprintf("DOS 16-bit >=32M"); break;
case 0x07 :cprintf("OS/2 HPFS"); break;
case 0x08 :cprintf("AIX"); break;
case 0x09 :cprintf("AIX bootable"); break;
case 0xa :cprintf("OS/2 Boot Manag"); break;
case 0xb :cprintf("Win95/98/ME FAT32"); break;
case 0xc :cprintf("Win95/98/ME FAT32 (LBA)"); break;
case 0xd :cprintf("Win95 FAT16"); break;
case 0xe :cprintf("Win95 FAT16 (LBA)"); break;
case 0xf :cprintf("Win95 Extended"); break;
case 0x11 :cprintf("Hidden FAT-12");break;
case 0x12 :cprintf("Compaq Diagnostics");break;
case 0x14 :cprintf("Hidden FAT-16 (<32)");break;
case 0x15 :cprintf("Hidden Extended");break;
case 0x16 :cprintf("Hidden FAT-16");break;
case 0x17 :cprintf("NTFS"); break;
case 0x40 :cprintf("Venix 80286"); break;
case 0x51 :cprintf("Novell?"); break;
case 0x52 :cprintf("Microport"); break;
case 0x63 :cprintf("GNU HURD"); break;
case 0x64 :
case 0x65 :cprintf("Novell Netware"); break;
case 0x75 :cprintf("PC/IX"); break;
case 0x80 :cprintf("Old MINIX"); break;
case 0x81 :cprintf("Linux/MINIX"); break;
case 0x82 :cprintf("Linux swap"); break;
case 0x83 :cprintf("Linux native"); break;
case 0x85 :cprintf("Linux Extended"); break;
case 0x93 :cprintf("Amoeba"); break;
case 0x94 :cprintf("Amoeba BBT"); break;
case 0xa5 :cprintf("BSD/386"); break;
case 0xa6 :cprintf("OpenBSD"); break;
case 0xa7 :cprintf("NEXTSTEP"); break;
case 0xb7 :cprintf("BSDI fs"); break;
case 0xb8 :cprintf("BSDI swap"); break;
case 0xc7 :cprintf("Syrinx"); break;
case 0xdb :cprintf("CP/M"); break;
case 0xe1 :cprintf("DOS access"); break;
case 0xe3 :cprintf("DOS R/O"); break;
case 0xf2 :cprintf("DOS secondary"); break;
case 0xff :cprintf("BBT"); break;
default :cprintf("UNKOWN");
}
return 0;
}
Programa de escritura para mostrar la partición
El programa para mostrar la partición oculta funciona de forma opuesta al programa que oculta el programa. En este programa restamos 16 (0x10) del valor del byte indicador del sistema de archivos de la partición oculta.
La codificación del programa de la siguiente manera:
/* Programa para mostrar la partición oculta por el programa anterior */
#include <bios.h>
#include <stdio.h>
int main(void)
{
struct diskinfo_t dinfo;
int result, tohide;
int i;
static char dbuf[512];/* Data buffer */
clrscr();
dinfo.drive = 0x80; /* drive number for
First Hard Disk */
dinfo.head = 0; /* disk head number */
dinfo.track = 0; /* track number */
dinfo.sector = 1; /* sector number */
dinfo.nsectors = 1; /* sector count */
dinfo.buffer = dbuf; /* data buffer */
result = _bios_disk(_DISK_READ, &dinfo);
if ((result & 0xff00) == 0)
{
printf("The Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
textcolor(15);
gotoxy(5,5);
cprintf("Partition Entry in MBR is as follows:");
gotoxy(10,7);cprintf("1. "); showtype(dbuf[450] & 0xff);
gotoxy(10,8);cprintf("2. "); showtype(dbuf[466] & 0xff);
gotoxy(10,9);cprintf("3. "); showtype(dbuf[482] & 0xff);
gotoxy(10,10);cprintf("4. "); showtype(dbuf[498] & 0xff);
/* Obtenga la entrada Usar para mostrar la partición */
gotoxy(1,15);printf("Enter The partition no., Which to
unhide, Or Press any other key to
Exit... ");
tohide=getche();
switch(tohide)
{
/* Mostrar la primera partición de la tabla de particiones */
case '1':
dbuf[450] = dbuf[450] -16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide second partition of partition table */
case '2':
dbuf[466] = dbuf[466]-16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide third partition of partition table */
case '3':
dbuf[482] = dbuf[482] -16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide fourth partition of partition table */
case '4':
dbuf[498] = dbuf[498]-16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
default:
exit(0);
}
if ((result & 0xff00) == 0)
{
printf("\n\nThe New Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
getch();
}
else
{
printf("Cannot Change the Byte, status = 0x%02x\n",
result);
getch();
}
}
return 0;
}
Comentarios sobre el programa
Tenga cuidado al dar el número de partición para mostrar. Si el número de particiones se ingresa incorrectamente por error, la información del sistema de archivos de esa partición cambiará y la partición puede volverse inaccesible. Sin embargo, el programa discutido anteriormente para ocultar las particiones puede ayudarlo a curar el byte indicador del sistema de archivos de esa partición.
Programa de escritura para eliminar la partición
El programa para eliminar la partición se utiliza para solucionar problemas. Por ejemplo, suponga que tiene las particiones del sistema de archivos FAT32 en su disco. Ahora decidiste instalar el sistema operativo LINUX en tu disco simultáneamente.
En su caso, la instalación del sistema operativo se interrumpe en el medio, en la etapa en que se estaban realizando las modificaciones en la tabla de particiones del MBR. En tales casos, hay muchas posibilidades de que la partición en la que iba a instalar el otro sistema operativo se vuelva inaccesible.
En este caso, el espacio en disco de la partición perdida se vuelve inútil debido a que es inaccesible. Sin embargo, si eliminamos la información de partición de esa partición de la tabla de particiones de cualquier manera, podemos volver a hacer que este espacio sea utilizable usando el comando FDISK de DOS.
El programa para eliminar la entrada de partición de la tabla de particiones de MBR se proporciona a continuación:
/* Programa para eliminar la segunda entrada de partición de la tabla de particiones de MBR */
# include <bios.h>
/* structure to read the partition entry from partition table */
struct partition
{
/* Active Partition Byte */
unsigned char bootable ;
/* Starting Head */
unsigned char start_side ;
/* combination of Starting sector and cylinder number */
unsigned int start_sec_cyl ;
/* File system Indicator Byte */
unsigned char parttype ;
/* Ending Head */
unsigned char end_side ;
/* combination of Starting sector and cylinder number */
unsigned int end_sec_cyl ;
/* Relative Sector Number */
unsigned long part_beg ;
/* Partition length in sectors */
unsigned long plen ;
} ;
/* Structure to read-write MBR */
struct part
{
/* IPL (Initial Program Loader) */
unsigned char master_boot[446] ;
/* Partition table */
struct partition pt[4] ;
/* Magic Number */
int lasttwo ;
} ;
struct part p ;
void main()
{
unsigned int t1,t2;
clrscr();
biosdisk ( 2, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* display the information of
Partition table */
getch();
p.pt[1].bootable = 0;
p.pt[1].start_side = 0 ;
p.pt[1].start_sec_cyl = 0 ;
p.pt[1].parttype = 0;
p.pt[1].end_side = 0;
p.pt[1].end_sec_cyl = 0;
p.pt[1].part_beg = 0;
p.pt[1].plen = 0;
printf("\n\n\n After Deleting the Second Partition
Entry From MBR Partition Table,");
printf("\n The Partition Table will Be Changed as
Follows: ");
/* To Delete Second Partition Information from partition
table of MBR Remove the forward slashes from the
biosdisk( ) function. Do not use Carelessly, Partition
information of Second Partition of Partition Table will
be Erased Completely. */
////// biosdisk ( 3, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* Display the information of partition
table after modification */
getch();
}
Comentarios sobre el programa:
Elimine el comentario de la función biosdisk (3, 0x80, 0, 0, 1, 1, &p) para eliminar la segunda partición de la tabla de particiones de MBR.
Para eliminar la partición, todos los parámetros de la misma se establecen en 0 en la entrada de la tabla de particiones en MBR. Recuerde siempre que si elimina la partición extendida, todas las particiones lógicas de esa partición extendida también serán inaccesibles.
La función de visualización ( ) se utiliza para mostrar la tabla de particiones de MBR. La codificación de la función es la siguiente:
/* Función para mostrar la tabla de particiones de MBR */
display()
{
unsigned int s_sec, s_trk, e_sec, e_trk, i, t1, t2 ;
char type[20], boot[5] ;
printf("\n\nPart. Boot Starting location Ending Location
Relative Number of");
printf("\nType Side Cylinder Sector Side Cylinder
Sector Sectors Sectors\n");
for ( i = 0 ; i <= 3 ; i++ )
{
if ( p.pt[i].bootable == 0x80 )
strcpy ( boot, "Yes" ) ;
else
strcpy ( boot, "No" ) ;
switch ( p.pt[i].parttype )
{
case 0x00 :
strcpy ( type, "Unused" ) ; break ;
case 0x1 :
strcpy ( type, "FAT12" ) ; break ;
case 0x2 :
strcpy ( type, "Xenix" ) ; break ;
case 0x3 :
strcpy ( type, "Xenix:usr" ) ; break ;
case 0x4 :
strcpy ( type, "FAT16<32M" ) ; break ;
case 0x5 :
strcpy ( type, "DOS-Ext." ) ; break ;
case 0x6 :
strcpy ( type, "FAT16>32M" ) ; break ;
case 0x7 :
strcpy ( type, "NTFS" ) ; break ;
case 0x0b :
strcpy ( type, "FAT32" ) ; break ;
case 0x0c :
strcpy ( type, "FAT32-LBA" ) ; break ;
case 0x0d :
strcpy ( type, "VFAT16" ) ; break ;
case 0x0e :
strcpy ( type, "VFAT16-LBA" ) ; break ;
case 0x0f :
strcpy ( type, "FAT EXT" ) ; break ;
case 0x17 :
strcpy ( type, "HPFS" ) ; break ;
case 0x81 :
strcpy ( type, "Old LINUX" ) ; break ;
case 0x82 :
strcpy ( type, "LinuxSwap" ) ; break ;
case 0x83 :
strcpy ( type, "LinuxNative" ) ; break ;
case 0x85 :
strcpy ( type, "Linux Ext." ) ; break ;
default :
strcpy ( type, "Unknown" ) ; break ;
}
s_sec = ( p.pt[i].start_sec_cyl & 0x3f ) ;
t1 = ( p.pt[i].start_sec_cyl & 0xff00 ) >> 8 ;
t2 = ( p.pt[i].start_sec_cyl & 0x00c0 ) << 2 ;
s_trk = t1 | t2 ;
e_sec = ( p.pt[i].end_sec_cyl & 0x3f ) ;
t1 = ( p.pt[i].end_sec_cyl & 0xff00 ) >> 8 ;
t2 = ( p.pt[i].end_sec_cyl & 0x00c0 ) << 2 ;
e_trk = t1 | t2 ;
printf ( "\n%6s %3s", type, boot ) ;
printf ( "%4d %6d %8d", p.pt[i].start_side,
s_trk,s_sec ) ;
printf ( "%7d %6u %8u", p.pt[i].end_side, e_trk,
e_sec ) ;
printf ( " %10lu %10lu", p.pt[i].part_beg,
p.pt[i].plen ) ;
}
return 0;
}
Formateo del disquete “Track 0 Bad”
Este programa se utiliza para formatear aquellos disquetes que tienen sectores defectuosos en su pista 0 y cuando son formateados con DOS o Windows, muestran mensajes de error como "Pista 0 BAD". Sin embargo, también puede usarlo para formatear disquetes normales.
La codificación del programa se encuentra en el disco incluido con este libro con el nombre “TTFORMAT.C”. La lógica de funcionamiento del programa es la misma que la del programa publicado en la revista informática PCQUEST, en la edición de febrero de 2003.
En este programa, tratamos de hacer que este tipo de disquetes sean reutilizables al formatearlos. El programa parece que puede manejar el disquete incluso con algunos sectores defectuosos. Sin embargo, si el primer sector del disco está dañado, el disquete no se puede formatear.
El programa reescribe toda la información del directorio raíz, DBR y FAT. Si hay sectores defectuosos en la superficie del disco, se marcan como defectuosos en FAT.
En la codificación del programa, la estructura BPB se utiliza para escribir el bloque de parámetros BIOS del DBR. La estructura boot_sector se usa para escribir el DBR del disco. La estructura address_field se utiliza para interactuar con el número de cilindros, cabezas y sectores por pista y con el tamaño del sector.
Las diferentes funciones utilizadas en la codificación del programa y su descripción se han dado en la tabla que se muestra a continuación.
El DOS calcula el número de serie del volumen del disquete según la fecha y hora actuales del reloj del sistema.
La primera parte del número de serie se calcula por la suma de la hora (segundos y centésimas de segundo) y la fecha (mes y día). La segunda parte del número de serie es igual a la suma de la hora (horas y minutos) y la fecha (año).
Todos los cálculos se realizan en sistema hexadecimal. Por ejemplo, supongamos que formateó el disquete en el entorno DOS a las 11:16:28:65 del 23/10/2003. Ahora calculemos el número de serie del disco.
The time in (seconds and Hundredths of seconds) format is
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
Similarly, date in (month and day) format is
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
Similarly, time in (hours and minutes) format is,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
And the year will be
= 2003
= 07D3
Ahora, calculemos el número de serie del disquete, de acuerdo con la descripción dada anteriormente. La primera parte del número de serie será (1C41 + 0A17) = 2658 y la segunda parte del número de serie será (0B10 + 07D3) = 12E3.
Escribir la herramienta de edición de discos
La codificación del programa de edición de discos se encuentra en el disco incluido con este libro, con el nombre de archivo “TTEDITOR.C”. Puede utilizar este programa para analizar la superficie de los discos duros o disquetes. Incluso durante la mayor parte del estudio mientras escribía este libro, he usado TTEDITOR para analizar la superficie del disco o realizar modificaciones en el disco.
Algunas de las tareas importantes que puede realizar este programa de edición son las siguientes:
- Leer información por sector de la superficie de discos duros y disquetes.
- Escriba la copia de seguridad de cualquier sector en un archivo.
- Restaurar los datos del sector desde el archivo.
- Modificar el byte único.
- Calculadora hexadecimal a decimal y binaria.
El programa utiliza las funciones biosdisk( ) y _bios_disk( ) para acceder a los discos. Si desea analizar el disco más allá de los 8,4 GB, modifique el programa con el uso de Extensiones de INT 13H. La descripción de las funciones utilizadas en el programa se da en la siguiente tabla:
Función |
Descripción |
bkground( ) |
crea el fondo y el marco de la primera pantalla |
clsline( ) |
Se utiliza para borrar la fila completa de la pantalla especificada por número de fila. |
refresh( ) |
Función para recuperar todas las funciones de visualización en la pantalla |
writetofile( ) |
Función para escribir los datos de un sector en un archivo definido por el usuario. |
writetosector( ) |
Función para restaurar el sector del archivo especificado. |
msgdisp( ) |
Función para mostrar mensajes en pantalla. |
modify( ) |
Función para modificar un solo byte de cualquier sector, especificado por el usuario. |
frame( ) |
Función para dibujar la estructura del marco de visualización del sector |
dispmax( ) |
Muestra el número máximo de CHS del disco (válido hasta un disco de 8,4 GB) |
display( ) |
Muestra el sector y la información en la pantalla. |
hextodec( ) |
Función para calcular el número hexadecimal a los números decimales y binarios correspondientes. |
Página modificada el: 18/01/2022