Всё достаточно просто. У нас целый мегабайт памяти, нам надо 20 бит адреса, а регистры 16-битные.
Для того, чтобы можно было оптимально выделять память, разобьём её на блоки по 220-16 = 16 байт. Пронумеруем эти блоки, получим 16-битные номера.
Теперь для выделения фрагмента памяти мы можем взять номер первого выделяемого 16-байтного блока и количество блоков. Каждый такой выделенный фрагмент памяти назовём сегментом, а номер первого выделяемого блока - адресом сегмента. Внутри сегмента мы можем использовать 16-битную адресацию, что даёт размер сегмента в 64KB.
Но оперативная память ничего не знает о сегментах, ей нужен 20-битный адрес. Поэтому мы берём адрес сегмента, умножаем его на размер блока (16 байт) и прибавляем адрес внутри сегмента.