I have a question regarding addressing in unreal mode.
AFAIK, real mode is a 20-bit addressing mode (i.e. 4 bits for the segment and 16-bits for the offset).
Let's say that we switch to PM and change the segment limit of the DS to 4GB. If real-mode uses ONLY 16-bit for the offset, then we're still limited to 1MB. The only way that "unreal mode" would work is if the offset is a 32-bit value but AFAIK it is a 16-bit value.
From "http://www.internals.com/articles/protmode/realmode.htm"
From "http://www.ganssle.com/articles/aprot1.htm"As you already know, a processor requires a minimum of 20 address lines to have the ability to access 1MB of memory. When Intel engineers designed the 8086, it was impracticle to implement a 20 bit address register to hold the generated addresses. So instead, Intel decided to divide address space into 64KB segments and coordinate memory access through the use of two 16 bit values - a Segment and an Offset.
Any hints?Real Mode addresses are limited to 20 bits, and are generated by adding a 16 bit segment register, shifted left four bits, to a 16 bit offset. This much maligned segmentation causes no end of grief for programmers trying to access large data structures. Since an offset cannot exceed 16 bits, you just can't increment beyond 64k; you'll have to watch for a 64k boundary and then play games with the segment register.
Thanks in advance.