НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ «ХПІ»
Лабораторна робота №6
з курсу “Системне програмне забезпечення”
на тему: “Розширена пам’ять “.
Виконав:
студент групи АП-30б
Попов О.С.
Перевірив:
Межерицький С. Г.
Тема: “Розширена пам’ять”.
Мета:Освоїти можливості, надані драйвером himem.sys програмі користувача, що задіє розширену пам'ять.
Постановка задачі: На прикладі тестового варіанта програми освоїти особливості допуску драйвера himem.sys і використання деяких можливостей, наданих цим драйвером при роботі з розширеною пам'яттю.
Структура програми:
begin_pr
. . . . . . . . . . . . . . . . . . . . . . .
call far ptr begin_pr
mov ah,09h
lea dx,lf_cr
int 21h
. . . . . . . . . . . . . . . . . . . . . . . . .
текст програми, який потрібно було змінити для вірної роботи пррограми
Константи:
not_drv db ' Драйвер himem.sys не инсталлирован',10,13,'$'
not_hma db ' Нет области hma',10,13,'$'
error db 10,13, ' Ошибка','$'
open_a20 db ' a20 открыта',10,13,'$'
close_a20 db 10,13, ' a20 закрыта',10,13,'$'
Опис алгоритму програми:
У тестовому варіанті програми задіється область hma розширеної пам'яті. Спочатку з основної пам'яті сюди копіюється процедура begin_pr. Потім з області hma процедура копіюється знову в основну пам'ять. Але остання копія в основній пам'яті розміщається в іншім місці ніж перша. Процедурі тричі передається керування, причому по трьох різних початкових адресах її розміщення.
У процесі виконання тестової програми установлюється факт наявності інстальованого драйвера himem.sys, і визначається адреса точки входу в його функції. При виконанні функцій драйвера здійснюється перевірка правильності їхнього виконання. Після цього перевіряємо стан лінії а20 і в кінці реалізуємо повернення в систему.
Результати програми:
Програма, написана на мові С++ для перевірки наявності додаткової пам’яті EMS.
Структура програми:
int ems_inst(void) – перевіряє, чи проінстальована відображаєма Expanded пам’ять;
int ems_ver(void) – визначає її версію;
int ems_pages(void) – визначає кількість логічних сторінок;
char far *frame_adr(void) – визначає адресу фрейма фізичних сторінок;
Опис алгоритму програми:
Ця програма визначає наявність додаткової пам'яті на будьякій ЕОМ, якщо вона проінстальована, то ми визначаємо її версію, кількість логічних сторінок, адресу фрейма фізичних сторінок та виводимо всю цю інформацію на екран.
Результати програми:
В системе установлена отображаемая (Expanded) память
Версия EMS: 4.0
Общий объем EMS-памяти: 0 K
Общее кол-во логических страниц: 0
Адрес фрейма физических страниц: FFFF:FFFF
Програма, написана на мові С++ для перевірки наявності розширеної пам’яті XMS.
Структура програми:
int xms_inst(void) - перевіряє, чи проінстальована розширена Expanded пам’ять;
long xms_ver(void) - визначає її версію;
int a20_sost(void) - перевіряє стан лінію а20;
int a20_enable(void) – а20 відкрита;
int a20_disable(void) – а20 закрита;
int rec_hma(unsigned rec_size) – виявлена чи ні пам’ять HMA;
Опис алгоритму програми:
Ця програма визначає наявність розширенної пам'яті на будьякій ЕОМ, якщо вона проінстальована, то ми визначаємо її версію, наявність чи відсутність пам’яті HMA й перевіряємо стан лінії а20, якщо вона заблокована, то виконується спроба разблокування. Всю цю інформацію виводимо на екран
Результати програми:
В системе установлена расширенная (Extended) память
Версия XMS: 3.95
VISOV STANDARTNIY
*****
VISOV IS XMS
*****
Висновок: Я освоїв можливості, надані драйвером himem.sys програмі користувача, що задіє розширену пам'ять. Були написані свої програми по визначенню додаткової та розширенної пам’яті й отримані потрібні нам дані після виконання програм. За допомогою цих програм можливо перевіряти будьякі ЕОМ на наявність чи відсутність EMS та XMS пам’яті.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.