I found some answers to my questions at http://www.x86.org/articles/pmbasics/
The site says that in protected mode, the values in the segment registers are used as pointers to look up tables called GDT and LDT (Global and Local discriptor tables) and each of these enterys are on 8 bit blocks, so the values loaded into the segment register can only be a multiple of 8 because they are pointers to the look up tables. The look up table then contains segment information, and will place the corect base/segment address in an invisible register called the segment discriptor cache, which is a register that is not accessable to the programer, The value loaded into the segment discriptor cache is then added to the 16 bit or 32 bit offset register to obtain the physical address. Thank you so much for all your help. I will have to go and learn about virtual memory now.




Reply With Quote