HI, forgive me pls, i know i have already asked a similar question before on this forum, but im still stuck.  I am trying to work out how to convert a ds:(e)si address into a physical address in protected mode.  I am sat here thinking that surely it can't be that difficult!  As i said before, i understand how to convert a segment:offset address to actual byte memory location (not a problem).  However, I am struggling to understand/find the right information to calculate the actual address in memory in protected mode from the ds:(e)si registers.  So, e.g. if i had ds as 2000h and i knew what (e)si contained, how would i go about finding the physical address from that???
Or am i better off reading the intel manuals??
Posted on 2011-09-03 02:48:46 by malh
In protected mode the "addresses" your program uses don't point to the physical address.  They are instead descriptors.  The physical address is obtained by mapping the descriptor to the Local Descriptor Table (LDT) and the Global Descriptor Table (GDT) which have been set up by the operating system.  This is why it's called Protected Mode.  There is plenty of introductory information on the web you can read regarding these topics before digging into Intel manuals.
Posted on 2011-09-03 08:30:28 by p1ranha