C/Visual C - direcciones de puertos...

 
Vista:

direcciones de puertos...

Publicado por Germán B. (143 intervenciones) el 14/01/2001 00:00:00
Tengo que hacer un programa que trabaja con puertos paralelos.
La dirección del LPT1 está almacenada en la palabra 0x400008.
En mi máquina ahí obtengo el valor 0x378 que es la dirección
del byte de datos del LPT1. El byte que le sigue (en 0x379)
sería el byte de status, y el que le sigue (en 0x37a) el de control.
Ahora bien, no entiendo por qué no puedo "ver" las
tres direcciones esas con un programita así:

void main(void) {
int far *dirdonde=(int far *)0x400008;
unsigned char *dirpuerto;

dirpuerto=(unsigned char *) *dirdonde;

printf("Direcciones: %x %x %x\n",
dirpuerto,
dirpuerto+1,
dirpuerto+2);
}

El resultado de esto es 378 0 379, cuando yo esperaría
que fuera 378 379 37a.
¿¿Qué está pasando??
Gracias
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

RE:direcciones de puertos...

Publicado por Germán B. (143 intervenciones) el 15/01/2001 00:00:00
Contestando mi propio mensaje, el problema es que los punteros son de 32 bits, tendría que mostrar las direcciones con %lx en vez de %x.
Ahora bien, resuelto eso, tengo otro problema.
Si quiero ver el contenido de esas direcciones, hago:

printf("Valores: %u %u %u\n",
dirpuerto[0], dirpuerto[1], dirpuerto[2]);

Y esto me da General Protection Exception - Processor Fault (con Borland C++).
¿Alguien tiene idea por qué? ¿Será que no se puede acceder directamente a las direcciones de los puertos?
Gracias
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