5.8.1. Управляющие блоки памяти

Error message

Notice: Undefined index: add term path in hansel_get_breadcrumbs() (line 524 of /data/sites/msdosworld.ru/www/sites/all/modules/hansel/hansel.module).

      Вся  оперативная память  ПЭВМ, используемая  для загрузки и

 выполнения программ, разбивается ДОС  на блоки, организованные в

 связный  список.  Каждый  блок  памяти  содержит  в своем начале

 управляющий  блок (MCB),  описывающий его  параметры. MCB  имеют

 следующий НЕДОКУМЕНТИРОВАННЫЙ формат.

 

 Смещение Длина Содержимое     Комментарий

 ───────────────┬────┬───────────────────────────────────────────

  +0        1   │Type│ Тип блока ('М' или 'Z')

                ├────┴────┐

  +1        2   │ Owner   │ Владелец блока

                ├─────────┤

  +3        2   │ Size    │ Размер блока в параграфах

                ├─────────┴─────────┐

  +5      0Bh       резерв        

                └───────────────────┘

  +10h    Длина МСВ

 ────────────────────────────────────────────────────────────────

 

      Здесь  тип  блока  может  быть  равен  'М'  (4Dh), если это

 "средний" блок памяти, или 'Z'  (5Ah), если это последний блок в

 связном списке. Владелец блока равен  нулю, если блок не выделен

 никакому процессу; в противном случае владелец равен сегментному

 адресу PSP процесса, которому выделен этот блок.

 

      После МСВ  начинается сам блок  памяти длиной (Size  * 10h)

 байтов. Его адрес возвращается при вызове фн 48h.

 

      Примечания:

 

      1. Блоки памяти всегда выравниваются на границу параграфа.

 

      2.  Если блок  типа 'М',  то следующий  блок начинается  по

 адресу: (адрес этого блока + Size):0.

 

      Если блок  типа 'Z', то  (его адрес +  Size):0=конец памяти

 ПЭВМ (помните, что A000h = 640K)

 

      3. После вызова  фн 4Bh, блок типа 'Z'  начинается с адресa

 (PSP-1):0 вызванного процесса.

 

      Не существует документированного способа получить указатель

 на  первый МСВ.  НЕДОКУМЕНТИРОВАННЫЙ способ,  работающий во всех

 версиях ДОС до 3.3 включительно, таков:

 

      mov  ah,52h

      int  21h           ; см. 5.6.16

      mov  ax,es:[bx-2]  ; указатель на первый МСВ

      mov  es,ax         ; ES=сегментный адрес первого МСВ.

 

      Существуют следующие функции управления памятью:


 Номер функции   Описание

 ───────────────────────────────────────────────────────────────

    48h          Получить блок памяти

    49h          Освободить блок памяти

    4Ah          Модифицировать блок памяти

    58h          Управление способом распределения памяти

                 (НЕДОКУМЕНТИРОВАНО)

 

Вы находитесь в разделе: 
Метки: 

Добавить коментарий