Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2005
Avatar de carlocf
carlocf carlocf is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
carlocf Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 08-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 08-11-2005
Avatar de carlocf
carlocf carlocf is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
carlocf Va por buen camino
Cita:
Empezado por marcoszorrilla
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.
Gracias por tu tiempo y tu ayuda...pero queria consultarte si haciendo la prueba en en delphi te genera algun error...de tal forma que puedo sospechar que el SO esta mal en la PC que estoy utilizando...Nuevamente mil gracias por tu ayuda

Atentamente Carlo
Responder Con Cita
  #4  
Antiguo 08-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 08-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 08-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por marcoszorrilla
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.
Tengo entendido que es así, que windows tiene prohibido el acceso directo mediante interrupciones "por motivos de seguridad"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:31:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi