THE 80286 INSTRUCTION SET

LOS/ LES-Load Doubleword Pointer

Opcode

Instruction

Clocks

Description

C5

If

LDS

rw,ed

7,pm=21

Load EA doubleword into DS and word register

C4

If

LES

rw,ed

7,pm=21

Load EA doubleword into ES and word register

FLAGS MODIFIED

None

FLAGS UNDEFINED

None

OPERATION

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

Page 271
Image 271
Intel 80286, 80287 manual LOS/ LES-Load Doubleword Pointer, Lds, Les