Кто бы мог подумать, что это две большие разницы?
#define pointer1 (uint16_t*)(base+seg)...*(uint16_t*)(pointer1+REG)=data;*(pointer+REG)=data;