Я считаю, что этот метод не будет работать для EIP и EFLAGS, поскольку к ним можно получить доступ только через специальные инструкции.
Я не знаю эквивалента movl для 16-битной DOS, но я думаю, вы поняли.
unsigned long get_ebp()
{
__asm__("movl %ebp, %eax");
}
int main()
{
printf("ebp: 0x%p\n", get_ebp());
}