i8086 and i8086 had 20 lines of address some which were multiplexed with data.
also those processors had only 16 bits registers size used particularly for
There were 4 registers named segment registers
one for stack one for program code and one for data, and one more additional
to copy data between segments.
So for example if your stack pointer is set to 0x1234,
but stack segment register is set on 0x4000
the address of stack cell in memory looks like this:
i286 and its clones had different implementations
it seams they all had 24 lines address bus.
Only 20 lines of address were accessible in real mode (8086-compliant mode)
The rest to 24 were available in some advanced mode but also with segmentation.
In the OS MS-DOS it became possible to use additional memory (over addressable
To do that application called special driver which switched in that advanced
copied some part of data the into the addressable space, and switched back.
In I386 it became possible to address in each segment up to 4GB of memory,
and locate in the whole 4GB (32bit) address space,
however some OSes used some bits in the address as flags,
so it was really possible to access only 256MB or 512MB or 1GB or 2GB of memory.
So, I don't know how did you access the memory with these limitations.