Ensamblador - Pantalla azul con Int 13h

 
Vista:

Pantalla azul con Int 13h

Publicado por Carlo (3 intervenciones) el 06/11/2005 21:37:38
Saludos
Estoy haciendo un programa sobre delphi 5.0 en win 98, PII de 400 MHZ, 64 de Ram el asunto es que cuando emito la Int 13h me da un error y aparece la pantalla azul con un error en un VXD estoy intentando usar la Interrupcion 13h con la funcion 04 para verificar sectores en un diskette..por que el error?

Gracias por la ayuda
Carlo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Perdon.Aclaro la pregunta

Publicado por Carlo (3 intervenciones) el 08/11/2005 03:04:19
Saludos al foro

Disculparan el mensaje anterior por que creo que no tenia claridad, asi tambien creo que muchos se preguntaran ¿Que tiene que ver Delphi 5.0 en esto? bueno es que como muchos de Uds. saben Delphi es uno de los Lenguajes de Programacion que trabaja de maravillas con Ensamblador mediante la clausula "asm" en la cual se integra la programacion de assemlbler con la delphi y se aprovecha un lenguaje de alto nivel junto con los nemotecnicos de assembler. Disculparan que no haya hecho la aclaracion del tema.. Para que me puedan enteder mejor les paso el codigo que estoy intentando utilizar:

Procedure PruebaCluster;
{Encargado de probar un cluster en un disco
utilizando codigo Assembler}
Var
bDLUnidad,bDHCara,bCHPista,bCLSector,bALNSectores,bResul:ShortInt;
Label
bOk,bErr;
Begin
//Asignamos los valores a ser revisados
bDLUnidad:=0; //Unidad A:
bDHCara:=0; //Cara 0
bCHPista:=3; //Pista 3
bCLSector:=7; //Sector 57
bALNSectores:=1;
Asm //Inicio del codigo assembler
Xor AX,AX //Ponemos a 0 el registro AX
Mov AH,4 //Verificar sectores
Mov DL,bDLUnidad
Mov DH,bDHCara
Mov CH,bCHPista
Mov CL,bCLSector
Mov AL,bALNSectores
Int 13h //Llamar a la Interrupcion 13
Jnc bOk //Saltar si no hay error
Mov bResul,1 //Si hay error
Jmp bErr //Saltar a error
bOk: Mov bResul,0 //No hay error
bErr: //Terminar
End;
Form1.txtResultado.Text:=IntToStr(bResul);
End;

El problema que tengo es que al llegar a la linea Int 13h la pantalla se pone azul con el siguiente mensaje:

"Excepcion grave 0D en 0028:00002ABC en VXD VMM(01) +00001ABC"

Mi intension como veran es la de poder verificar un sector, si esta bien o mal, en un diskette de 3.5 . Por cuestiones de trabajo desarrolle un pequeño programa en Delphi para el Instituto que enseño, el programa debe entrar en un diskette que debe ser usado por los alumnos para realizar sus trabajos. El mismo programa debe generar datos que se guardan en el mismo disco, para luego el profe los pueda calificar. El problema surge cuando los alumnos se prestan sus trabajos (se copian los discos) incluyendo sus resultados. Por este motivo se me pidio que los discos no puedan ser copiados tan facilmente, asi que me acorde del sistema de proteccion antiguo del Disco llave,,que muchos de Uds saben...el problema es que con delphi no se puede tener acceso directo al disco asi que la solucion estaba en usar Ensamblador...el problema es que yo no conozco el lenguaje asi que un libro es mi fuente de ayuda..lo malo que el libro es de hace algunos años (1980 creo) y solo habla de MASM para programar el cual tampoco conozco. La idea pasaba por que el program desde el diskette verifique un sector malogrado y recien inicie...creo que ya me entendieron..Todo esto (como no conozco MASM pero si algo de delphi) lo queria hacer en delphi pero ya me estrelle...asi que esa es la razon por la que pido su valiosa ayuda.

Agradeciendo anticipadamente la ayuda que me puedan dar.
Atentamente Carlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar