АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Примітка

Читайте также:
  1. Примітка

Інформація про векторну таблицю зв’язку приведена для версії MS DOS 6.22. Дана інформація відсутня у документації на операційну систему MS DOS, і відповідно може змінюватись від версії до версії.

 

Блоки керування пам¢ятю МСВ (Memory Control Block)

Зона оперативної пам¢яті, починаючи з області програм MS DOS і до відеопам¢яті, розбита на фрагменти. Перед кожним фрагментом знаходиться блок керування пам¢ятю.

Всередині блоку МСВ зберігається довжина, що описується даним МСВ (табл. 2.5), фрагменту пам¢яті. Наступний фрагмент пам¢яті, починається одразу за попереднім. Усі блоки керування пам¢ятю зв¢язані у список.

Блоки МСВ бувають двох типів – М і Z. М-блоки – це проміжні блоки. Блок типу Z є останнім і єдиним блоком у списку.

 

Таблиця 2.5 – Формат блоку МСВ

Зміщення (байт) Розмір (байт) Опис
    Тип блоку МСВ (М чи Z)
    Зміщення компоненти адреси власника блоку, цей блок завжди вирівняний на межі параграфу (коли 0, то блок описує сам себе)
    Число параграфів у цьому блоці
    Зарезервовано

 

Приклад 5. Програма знаходить у пам¢яті програмні блоки МСВ і виводить для кожного ім¢я власника.

/*Компілятор Turbo C, Turbo C++ або Borland C++*/

#include <stdio.h>

#include <dos.h>

int main (void)

{

union REGS regs;

struct SREGS segregs;

typedef struct

{

unsigned char marker;

unsigned int owner;

unsigned int sizePara;

unsigned char dummy [3];

unsigned char name [8];

}mcb;

mcb far *ptr;

unsigned int segm, i;

regs.h.ah=0x52;

intdosx(&regs, &regs, &segregs);

segm=peek (segregs.es,regs.x.bx-2);

printf(" Адреса МСВ Розмір блока ім¢я власника\n"

" пам¢яті(байт) \n\n ");

ptr=MK_FP(segm,0);

print ("04X:0000 8lu*,segm, (long) ptr->size Para*16);

if (! Ptr->owner) printf("Блок вільний");

else if (_osmajor>=4&&(segm +1)=ptr->owner)

{

for (i=0;i<=7;i++) (printf("c",ptr->name[i]);

}

printf("\n\");

while (ptr ->>marker=’M’)

{

segm=segm+ptr->sizePara+1;

ptr=MK_FP(segm,0);

printf(" 04X:0000 8lu*, segm,

(long)ptr->sizePara*16);

if (!ptr-> owner) printf ("Блок вільний");

else if (_osmajor>=4&&(segm+1)==ptr->owner)

{

for(i=0;i<=7;i++)(printf ("C", ptr->name[i]);

}

printf ("\n");

}

return 0;

}

 

 

Розширена пам¢ять

Пам¢ять, вища ніж 1 Мб, називається розширеною пам¢яттю -Extended Memory. Є дві специфікації використання цієї пам¢яті:

а) EMS (Expanded Memory Specificatson) – програмна специфікація використання розширеної пам¢яті DOS-програмами через 4 сторінки по 16 Кбайт, які відображають розширену пам¢ять в область UMA (здебільшого з адреси D0000h);

б) XMS (Extended Memory Specification) - програмна специфікація використання розширеної пам¢яті DOS-програми через переключення у захищений режим і навпаки.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)