Int 15h, 89h Switch to Protected Mode XT-286, AT
Switches into Protected (virtual address) mode. Also transfers
control to the code segment in the protected mode specified by the
user.
Entry AH = 89h
BH = Index into Interrupt Descriptor Table (IDT)
stating start of first 8 hardware interrupts
(Interrupt Level 1)
BL = Index into Interrupt Descriptor Table (IDT)
stating start of second 8 hardware interrupts
(Interrupt Level 2)
ES:SI = Pointer to a Global Descriptor Table (GDT)
Return AH = 0 if successful, else nonzero
AX,BP, and all segment registers changed
──────────────────────────────────────────────────────────────────
This service is available only for the AT and XT-286.
ES:SI points to a list of eight descriptors. Each descriptor is 8
bytes long. A descriptor is formatted as follows:
Offset Bytes Description
00h 2 Word containing segment limit
02h 2 Low word of 24-bit address
04h 1 High byte of 24-bit address
05h 1 Access rights byte
06h 2 Reserved (must be 0)
The Global Descriptor Table (GDT) pointed to by ES:SI consists of
a list of eight descriptors. The descriptors are defined below,
appearing in the same order as they appear in memory.
Offset Bytes Description
00h 8 Dummy Descriptor. Initialized by user to 0.
08h 8 Descriptor of this GDT as a data
segment. Initialized by user.
10h 8 Descriptor of Interrupt Descriptor
Table (IDT). Initialized by user.
18h 8 Descriptor of Data Segment.
Initialized by user.
20h 8 Descriptor of Extra Segment.
Initialized by user.
28h 8 Descriptor of Stack Segment.
Initialized by user.
30h 8 Descriptor of Code Segment.
Initialized by user.
38h 8 Descriptor of Temporary BIOS Code
Segment. Initialized by user to 0.
The six descriptors that must be initialized by the user must have
the segment limit, base address, and access rights byte fields
initialized.
The BIOS is not available to the user; thus the user must perform
all I/O.
The user must initialize an exception handler and table.
There can't be any overlap between the Interrupt Descriptor Table
(IDT) and the Real Mode BIOS Interrupt Descriptor Table (IDT).
Because of to the 80286's reserved areas, the user must move the
interrupt vector locations.
Reinitialization of the hardware interrupt controllers is needed
in order to define those locations that do not exist in the 80286
reserved areas.