[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 15h,  87h (135)      Move Block                                XT-286, AT

    Provides the ability for a Real Mode program to move a block of data
    to or from the area above 1 Megabyte in the Protected Mode.

       On entry:      AH         87h
                      CX         Size in words of block to move (maximum:
                                 8000h = 32K)
                      ES:SI      Pointer to a Global Descriptor Table (GDT)
                                 (see below)

       Returns:       Carry      Set if error, else cleared
                      Zero       Cleared if error, else set
                      AH         Status of Operation
                                 00h - Successful
                                 01h - Memory Parity error
                                 02h - Exception interrupt error occurred
                                 03h - Gate address line 20h failed

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

       Notes:         This service is available only for the AT and XT-
                      286.

                      ES:SI points to a list of 6 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 6 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.
                                              Initialized by user to 0.
                                              Modified by BIOS.
                            10h       8       Descriptor of Source block.
                                              Initialized by user.
                            18h       8       Descriptor of Destination block.
                                              Initialized by user.
                            20h       8       Descriptor for Protected Mode
                                              Code Segment. Initialized by user
                                              to 0. Modified by BIOS.
                            28h       8       Descriptor for Protected Mode
                                              Stack Segment. Initialized by
                                              user to 0. Modified by BIOS.

                      Therefore, for a block move to be performed, only
                      the third and fourth descriptors need to contain
                      values other than 0s. The source and target
                      descriptor fields should be initialized as follows:

                      *  The segment limit field (offset 00h) must contain 2 *
                      (CX - 1) or greater.

                      *  The 24-bit address field (offset 02h) must contain
                      the source or destination address.

                      *  The Access Rights byte (offset 05h) must contain 93h
                      (CPL0-R/W).

                      Transfers of large blocks of data may result in lost
                      interrupts, since no interrupts are allowed during
                      the move.

See Also: INT 15h, 89h
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson