Как уже упоминалось в комментариях Нейта Элдриджа, сегменты перекрываются. Каждый последующий 86-сегментный режим начинается на 16 байт после предыдущего. Поэтому (как уже упоминалось) существует 4096 (4 Ки) способов адресации любого байта.
Исключение составляет обработка A20 на более поздних процессорах x86. На тех, если A20 включен, память в первых 64 КиБ имеет меньше псевдонимов, указывающих на это. Адрес, который «обернет» на 8086, начиная с 0FFFFh:0010h
, указывал бы на первые 64 КиБ (начиная с линейного адреса 00_0000h
).
Если A20 включен, старшие адреса делают больше не «переносить», так что 0FFFFh:0010h
фактически ссылается на линейный адрес 10_0000h
(ровно на 1 МБ = 1_048_576 байт). Наибольший доступный адрес в режиме Real или Virtual 86 с включенным A20 составляет 0FFFFh:0FFFFh
, что указывает на линейный 10_FFEFh
(чуть ниже 1088 КиБ - 16 байт), то есть 1_114_096 байт адресуется с использованием дальнего адреса 16:16.