Hi Lars.
Gibt es in C eine Möglichkeit eine Variable ueber einen
bestimmten Speicherbereich zu legen ?
Es gibt eine Möglichkeit, aber nur für DOS, da unter Windows der Speicher etwas anders gehandhabt wird.
In DOS.H sind folgende Makros definiert:
#define MK\_FP(seg,ofs) ((void \_seg \*)(seg) + (void near \*)(ofs))
#define FP\_SEG(fp) ((unsigned)(void \_seg \*)(void far \*)(fp))
#define FP\_OFF(fp) ((unsigned)(fp))
Mit MK_FP kannst du einen beliebigen Far Pointer erzeugen, mit FP_SEG und FP_OFF kannst du die Segment- und Offset-Adresse rauskriegen.
Um dein Beispiel zu nehmen:
Var X : Array[0…1999] of Word absolute $b800:blush:0;
WORD \*x = MK\_FP(0xB800, 0x0);
Dann könntest du x als Array behandeln ( x[0] bis x[1999] und darüber hinaus 
Ich würde aber eine andere Definition für einen Far Pointer verwenden, die ohne den _seg Modifier auskommt:
#define MK\_FP(seg,ofs)
((void far \*)((((long)(seg) & 0xFFFF)
(Ohne Gewähr, ich habs aus dem Kopf einfach hingeschrieben...)
cu
Klaus