I am reading about memory organisation and address capability of 8086 processors.
So far I have understood that 8086 processor via its 20 bit address bus can address 1MB different physical memory locations & the whole memory location is segmented into 16 blocks, each segment is of 64KB size.So in order to access contents of memory location inside a segment we need to provide its 16 bit binary value(a.k.a offset address) which completely makes sense as we need exactly 16 bits to represent all the 64 kilobytes of memory.
what I don't understand is that why does the base address has to be a 16 bit value ?
From my understanding We just need 4 more bits(base) to represent all the 16 segments (i.e 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 ) and we need additional 16 bits(offset) to represent bytes within these segments ((2^16)*(2^4))=2^20.
Here is an example from textbook explaining offset and base address
1000:1F00 = (1000*10h)+1F00 = 11F00 ; 16 bit base and offset