title: How does x86 real-mode segments overlap help memory saving?
body: <p>I'm teaching my 12 y.o. 8086 assembly language and yesterday we were talking memory, addressing and segmentation. I showed him how segments can be visualized as a sequence of overlapping 64Kb blocks starting on 16 byte boundaries, with the offset being an 8080-style pointer within a segment. Then he asked a question I could not answer: <strong>why (what for, with what purpose) do they overlap</strong>?</p>
  
  <p>Trying to research this question I found many copies of the 20 bit math, and a few vague mentions of some <em>memory savings this scheme presumably allows</em>. Can somebody elaborate on the memory saving part? Or any other ways to take practical advantage of the overlaps?</p>