Assembly Physical vs logical address?
Why is it that when converting from a cs:ip address to a physical one, you multiply the cs by 10h, not 10000h? If each segment has 16^4 bytes, and the offset has 16^4 possible values, shouldn't you multiply the segment by 16^4, then add the offset?
Comments
This reflects the legacy of the x86 architecture. The 8086 had a 1Meg address space (16x64k) so to manage memory effeciently, ie in 16 byte increments, the cs was the upper 16 bits of the 20 bit address. Programs that lived in one segment (64K) could be relocated anywhere on 16 byte boundries. In those days every byte of memory was presious.