Виртуальные адреса на компьютерах с архитектурой x86 всегда 32-битные, обычно с пользовательским пространством по адресам 0 - 0x7FFFFFFF и адресами ядра 0x8000000 - 0xFFFFFFFF (конечно, существуют исключения, когда адресное пространство разделяется). Страница, на которую вы разместили ссылку, говорит о 16-битном реальном режиме, где адреса 16-битные, но на самом деле можно адресовать только 1 МБ памяти, поскольку также использовалась сегментация (дополнительный регистр).
Я не уверен, почему вы говорите о 16 + 32 битах - возможно, вы смешали виртуальную адресацию и сегментацию. Все еще существуют 16-битные регистры сегментации, однако сегментация устарела, и в большинстве операционных систем она не используется. См. Руководства Intel, которые вы упомянули, чтобы узнать, как это работает.
Размер виртуальных адресов не имеет ничего общего с низкоуровневой сборкой, там вы все еще обычно пишете 32-битные приложения (если вы не пишете свою собственную ОС, для которой требуется код реального режима для загрузки на x86).