# How can segment be 60KB

I read that each segment is 64KB,but how? If you have address ABCD:EFGH , then 1 segment is 16B if it is addreses by bytes. How do they don't overlap? Example: 0000:0010 = 00010 0001:0000 = 00010 , is is same address.

• I can't understand what you are asking, or why you think a segment is only 16 bytes long. If the address is 16 bits, how many bytes do you think you can address? I don't understand what overlap has to do with it. – D.W. Jun 21 '18 at 19:01
• One segment has just 16 distinct addresses,when offset is from 0000-000F segment with offset 0010 overlaps with next segment with offset 0000. – user8216974 Jun 21 '18 at 19:05
• by overlap i mean,it has the same logical address – user8216974 Jun 21 '18 at 19:06
• Is this about real-mode segmentation on the x86? – harold Jun 21 '18 at 19:13
• x86 where ABCD:EFGH = ABCD0+EFGH, how can cpu differenciate between 0000:0010 and 0001:0000 it points to same 20 bit address,00010 – user8216974 Jun 21 '18 at 19:14

In "real mode" on the x86, an address is 32 bits long. The higher 16 bits can be considered the segment address, while the lower 16 bits are the address within the segment. But it's a bit more complicated than having $2^{16}$ segments of $2^{16}$ addresses each.
If you have a 16-bit address, then you're able to address $2^{16} = 65,536$ different locations. If each of those is a byte, you have 65,536 bytes, or 64KB, of addressable memory. So a segment is at most 64KB long.
This also limits the total amount of addressable memory to $2^{20}$ bytes, rather than the $2^{32}$ you would expect with an address of that length. But this is also by design: the 8086 has only 20 address pins. So despite the apparent clumsiness of this system, it ended up working out well.