User's Manual

THE
80286
INSTRUCTION
SET
LOS/
LES-Load
Doubleword
Pointer
Opcode
C5
If
C4
If
FLAGS
MODIFIED
None
Instruction
LDS rw,ed
LES rw,ed
FLAGS
UNDEFINED
None
OPERATION
Clocks
7,pm=21
7,pm=21
Description
Load
EA
doubleword into
DS
and word register
Load
EA
doubleword into
ES
and word register
The four-byte pointer
at
the memory location indicated by the second operand
is
loaded into a segment
register and a word register. The first word of the pointer (the offset)
is
loaded into the register indicated
by the first operand. The last word of the pointer (the selector)
is
loaded into the segment register (DS
or ES) given by the instruction opcode.
When the segment register
is
loaded, its associated cache
is
also loaded. The data for the cache
is
obtained from the descriptor table entry for the selector given.
A null selector (values
0000-0003) can be loaded into DS or ES without a protection exception. Any
memory reference using such a segment register value will cause a
#GP(O)
exception but
will
not result
in a memory reference. The saved segment register value
will
be null.
Following
is
a list of checks and actions taken when loading the DS or ES registers:
If selector is non-null then:
Selector index must be within its descriptor table limits else
#GP
(selector)
Examine descriptor
AR
byte:
Data segment
or
readable non-conforming code segment
Descriptor DPL
~
CPL else
#GP
(selector)
Descriptor DPL
~
selector RPL else #GP(selector)
Readable conforming code segment
No DPL, RPL,
or
CPL checks
Else
#GP
(selector)
Segment must be present else
#NP
(selector)
Load registers from operand
Load segment register descriptor cache
If selector
is
null then:
Load registers from operand
Mark segment register cache as invalid
8-61