che cosa è sbagliato in questo codice?
codice:
unsigned char *p = (unsigned char *)0xB8000;
for (int i=0; i<=3999; i++, p++)
 if (i%2==0)
   *p = 'E';
 else 
   *p = (2 + (4 << 3 ));
visto che so che la memoria video in modalita testo-colore 80x25 risiede negli intervalli 0xb8000..0xb8000+2*80*25, e visto che è così mappata:
0xb8000 ASCII_CARATTEREINPOSIZIONE(0,0)
0xb8001 COLOREDI_CARATTEREINPOSIZIONE(0,0)
0xb8002 ASCII_CARATTEREINPOSIZIONE(1,0)
0xb8003 COLOREDI_CARATTEREINPOSIZIONE(1,0)
0xb8004 ASCII_CARATTEREINPOSIZIONE(2,0)
0xb8005 COLOREDI_CARATTEREINPOSIZIONE(2,0)

il mio codice dovrebbe funzionare, ma l'applicazione crasha... perchè??