Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Assembly Language - <b>int 15h, 89h (137) switch to protected mode xt-286, at</b> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 15h,  89h (137)      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.

       On 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)
                                 (see below)

       Returns:       AH         0 if successful, else nonzero

       Registers destroyed:      AX, BP, and all segment registers

  --------------------------------------------------------------------------

       Notes:         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.

See Also: INT 15h, 87h

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson