FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Problemas con la Int 13h
Saludos a todos Uds.
Agradeciendo sus comentarios y sobre todo la ayuda que me puedan brindar. Nuevamente molestandolos con mis dudas, y es que en un anterior hilo ya habia comentado de mi interes por explorar los sectores dañados de un disco. Con la sugerencia de muchos de Uds. estoy tratando de trabajar Assembler desde Delphi, el cual ya me dio los primeros desafios. La verdad es que lo que hice en Assembler en el pasado, fue operaciones basicas...pero lo que ahora estoy intentando hacer, lo hago por primera vez. Para ponerlos al tanto les paso el codigo que me da pelea: "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" Haciendo la ejecucion paso a paso..todo va de maravillas (es lo que creo)hasta la linea que les indico... Por supuesto que las preguntas se viene a miles. Tengo por ayuda dos libros de ensamblador y dos de Delphi...pero el libro de Ensamblador, como es logico, solo trata de ensamblador y los de Delphi mencionan muy poco acerca de delphi y ensamblador...Asi que solo tengo buestra ayuda...para mis dudas. Estoy haciendo mis peripecias en una PII 400 mhz con Win98 SE, 64 MB de Ram. Estas son mis dudas: 1.- Es suficiente el codigo ensamblador que pongo, para lo que quiero hacer? (verificar un cluster si esta bien o mal es decir trabajar la Int 13 con la funcion 04 verificar sectores) 2.- De acuerdo al mensaje es un VXD el que esta dando lios..Sera por que estoy trabajando en Windows y este no deja acceder directamente al disco?. Les pediria que me den luces sobre esta oscura duda y experiencia. Mil gracias por su ayuda y por el tiempo que me brindan. PD. Disculpen por no usar las etiquetas Atentamente Carlo Última edición por carlocf fecha: 08-11-2005 a las 03:43:24. Razón: Disculpas por no usar las etiquetas |
#2
|
||||
|
||||
Pues acabo de hacer la prueba tecleando a mano el código en el Debug y me lee el disquete y no me da ningún error.
La bandera de acarreo sigue NC (Not Carry). En cualquier caso hecho de menos PUSH y salvar los registros que se van a usar y finalizar con POP Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Cita:
Atentamente Carlo |
#4
|
||||
|
||||
Esta mañana hice la prueba con W98 y ahora acabo de hacerla con XP profesional funciona correctamente si introduzco la sentencias en el Debug desde el DOS.
Debug A 100 Xor Ax,Ax Etcétera, pero si hago la prueba desde Delphi me reporta un error, por el momento no sé por qué. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#5
|
||||
|
||||
Pues me estoy temiendo lo peor, acabo de ver por distintas páginas muchos ejemplos de Ensamblador en Delphi y se ejecuta prácticamente todo el juego de instrucciones, pero ninguna de ellas ejecutaba interrupciones, como por ejemplo la 21H no tan peligrosa como la 13H, por lo que de momento pienso que esté prohibidio la ejecución de interrupciones????
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
||||
|
||||
Cita:
|
|
|
|