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