Hola
Quiero hacer una rutina en C que me lea un sector del disco. Para ello voy a recurrir a INT 13h (lectura de sector) sabiendo que esta rutina me dejará el resultado en el par ES:BX
 
La cuestión es ¿como hago para saber direccionar con ES:BX una variable que yo declaro?
 
Por ejemplo
 
struct PALABRA {
        unsigned int    ax, bx, cx, dx, si, di, cflag, flags;
    };
 
struct BYTE {
        unsigned char   al, ah, bl, bh, cl, ch, dl, dh;
    };
 
union   REGS    {
        struct  PALABRA x;
        struct  BYTE h;
    };
 
struct  REGSEG   {
        unsigned int es;  unsigned int cs;  unsigned int ss;  unsigned int ds;
    };
 
int main(int argc, char *argv[])
{
   char Sector[512];
   union REGS Registros;
   struct REGSEG Segmento;
   Registros.h.ah=0x2; /* función a desarrollar: lectura de sector */
   Registros.h.al=1; /* número de sectores a leer */
   Registros.h.ch=0; /* pista/cilindro a leer */
   Registros.h.cl=1; /* numero de primer sector a leer */
   Registros.h.dh=0; /* número de cabeza a leer */
Aquí está el problema ¿Como se que poner en ES y en BX para que la rutina deje el resultado en Sector?
   Segmento.es=x;    /* posición donde quedará lo leído es ES:BX */
   Registros.x.bx=x;
   int86x(0x13,*Registros,*Registros, *Segmento);
   system("PAUSE");	
   return 0;
}
 
Es decir, yo declaro una variable Sector y quiero que en ella quede el resultado. La interrupción 13h deja el resultado en ES:BX luego tengo que hacer que ES:BX apunte a Sector
¿Como se hace esto?
 
Un saludo 
   
 

