Министерство образования и науки Российской федерации
Государственное образовательное учреждение высшего профессионального образования «Комсомольский-на-Амуре Государственный университет»
Кафедра МОП ЭВМ
по дисциплине:
Опирационные Системы
ЧАСТЬ 1
Выполнил: Демков А. Н.
Группа: 4ВТ-1
Проверил: Изабеков З.А.
2006
- изучить структуру и порядок программирования CMOS памяти персональной ПЭВМ и написать модуль, читающий и расшифровывающий все данные CMOS памяти ПЭВМ;
- изучить структуру ОЗУ ПЭВМ (в ОС реального режима), разобрать понятия CMA, UMA, HMA, EMA, XMA, EMS, XMS, UMB. Исследовать оперативную память компьютера в ОС реального режима с помощью системных утилит MEM, MSD, программ CHECIT, SI и составить сравнительную таблицу показаний этих программ по всем видам памяти ПЭВМ:
Размер памяти в Бт |
||||||
Программа |
CMA |
UMA |
HMA |
XMA |
EMS |
XMS |
MEM |
||||||
MSD |
||||||
SI |
||||||
CHECIT |
объяснить расхождение в показаниях программ ( если они имеются).
- изучить технологию выделения блоков памяти ОС реального режима при загрузке и выполнении программ и исследовать ( с помощью отладчика или написанного собственноручно модуля) цепочку MCB в памяти ПЭВМ.
Текст программы:
#include <stdio.h>
#include <conio.h>
#include <math.h>
int bit[8],cmos[64];
void scan()
{
unsigned port = 0x70;
int value,i;
for(i=0;i<64;i++)
{
outp(port,i);
cmos[i]=inp(0x71);
}
}
void tobit(int a)
{
int i,e;
for (i=0;i<8;i++)
{
e=pow(2,i);
bit[i]=(a&e) >> i;
}
}
void main(void)
{
clrscr();
char *day[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
int i;
scan();
printf("Current time:\n");
printf("%s, %02x.%02x.%02x\t",day[cmos[6]-1],cmos[7],cmos[8],cmos[9]);
printf("%02x:%02x:%02x\n",cmos[4],cmos[2],cmos[0]);
printf("\nRTC status register A:\n");
tobit(cmos[10]);
switch (bit[7])
{
case 0: printf("UIP flag set to OK\n");break;
case 1: printf("UIP flag set to NOK\n");break;
}
printf("22-stage divider set to %d%d%d\n",bit[6],bit[5],bit[4]);
printf("Rate selector set to %d%d%d%d\n",bit[3],bit[2],bit[1],bit[0]);
printf("\nRTC status register B:\n");
tobit(cmos[11]);
switch (bit[7])
{
case 0: printf("UIP flag set to OK\n");break;
case 1: printf("UIP flag set to NOK\n");break;
}
switch (bit[6])
{
case 0: printf("Periodic int. disabled\n");break;
case 1: printf("Periodic int. enabled\n");break;
}
switch (bit[5])
{
case 0: printf("Alarm int. disabled\n");break;
case 1: printf("Alarm int. enabled\n");break;
}
switch (bit[4])
{
case 0: printf("Update-ended int. disabled\n");break;
case 1: printf("Update-ended int. enabled\n");break;
}
switch (bit[3])
{
case 0: printf("Square wave disabled\n");break;
case 1: printf("Square wave enabled\n");break;
}
switch (bit[2])
{
case 0: printf("Date mode is BCD\n");break;
case 1: printf("Date mode is binary\n");break;
}
switch (bit[1])
{
case 0: printf("12-hr mode\n");break;
case 1: printf("24-hr mode\n");break;
}
switch (bit[0])
{
case 0: printf("Standart time\n");break;
case 1: printf("Daylight time\n");break;
}
printf("\nRTC status register C:\n");
tobit(cmos[12]);
printf("Read-only interrupt status bits:");
for(i=7;i>=0;i--) printf(" %d",bit[i]);
printf("\n\nRTC status register D:\n");
tobit(cmos[13]);
switch (bit[7])
{
case 0: printf("Battery is dead\n");break;
case 1: printf("Battery is OK\n");break;
}
printf("\nPress any key to continue...");
getch();
clrscr();
printf("POST diagnostics status byte:\n");
tobit(cmos[14]);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.