Цитата(partsun @ Jun 5 2007, 12:26)

assert(sizeof(&abc)==2 && sizeof(&def)==1);
это только при первоначальной отладке (проверяется истинность выражения), в релизе не используется
можно везде убрать убрать с помощью
#define assert()
или использовать опцию компиляции для релиза -DNDEBUG
а для работы с внешней памятью общий смысл такой
- замена указателя на тип far (длина уже 32 бит)
и работа с ним как обычно в Си
для инициализации соответственно надо привести типы к одному
пример
int far * ptr=(int far *) 0x123456L;
0x12 - ляжет в DMPG
0x3456 - как смешение
все по правилам стандартного Си не более.
пример операций c указателями:
ptr++;
ptr+=5;
*ptr++==..
*(ptr+1)=..
*(ptr+100)=..
..=*ptr++;
..=(ptr+10);
возможны и другии вариации использования модификатора far
лучше сразу для проверки смотреть в сгенеренный ассемблерный листинг
и для эффективного кода оптимизация должна быть включена