Help


from Wikipedia
« »  
Each segment begins at a multiple of 16 bytes, from the beginning of the linear ( flat ) address space.
That is, at 16 byte intervals.
Since all segments are 64 KiB long, this explains the huge overlap that can occur between segments and that any location in the linear memory address space can be accessed with many segment: offset pairs.
The actual location of the beginning of a segment in the linear address space can be calculated with segment × 16.
A segment value of 0Ch ( 12 ) would give an linear address at C0h ( 192 ) in the linear address space.
The address offset can then be added to this number.
0Ch: 0Fh ( 12: 15 ) would be C0h + 0Fh = CFh ( 192 + 15 = 207 ), CFh ( 207 ) being the linear address.
Such address translations are carried out by the segmentation unit of the CPU.
The last segment, FFFFh ( 65535 ), begins at linear address FFFF0h ( 1048560 ), 16 bytes before the end of the 20 bit address space, and thus, can access, with an offset of up to 65, 536 bytes, up to 65, 520 ( 65536 − 16 ) bytes past the end of the 20 bit 8088 address space.
On the 8088, these address accesses were wrapped around to the beginning of the address space such that 65535: 16 would access address 0 and 65533: 1000 would access address 952 of the linear address space.
Programmers using this feature led to the Gate A20 compatibility issues in later CPU generations, where the linear address space was expanded past 20 bits.

2.383 seconds.