Monday, December 7, 2009

Segmentation in IA32 Real Mode

The start address of the segment must be within the first 1M memory space. The length of segment is fixed to 64KB (most significant 16 bits in the address). There is also no protection of segment among tasks.

The 64K memory above 1M line is called extended memory or HMA (High memory area). In real mode, one can access HMA by setting the segment register to xFFFF. For example,

mov ax,ffff
mov ds,ax
mov al,[0010]

The effective address - FFFF0+0010=10000.

This method is not effective for 8086/8088 which does not have A20 pin. Instead, the address will be wrapped around to 0000 (segment wrapping).

No comments: