Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Текст программы




/*----Лабораторная работа N4-----------------*/

/*----"Проверка состава оборудования"--------*/

 

/* Подключение стандартных заголовков */

#include <dos.h>

#include <conio.h>

#include <stdio.h>

 

/*-----------------------------------------------*/

void main()

{

unsigned char type_PC, /* Тип компьютера */

a,b; /* Переменные для определения */

/* характеристик памяти ПЭВМ */

unsigned int konf_b; /* Байт конфигурации из BIOS */

char *type[]={"AT","PCjr","XT","IBM PC","unknown"};

unsigned char typ1A[]={0,1,2,4,5,6,7,8,10,11,12,0xff};

char *types1A[]={"нема дисплею","MDA, моно","CGA, цв.",

"EGA, цв.","EGA, моно","PGA, цв.",

"VGA, моно, анал.","VGA, кол., анал.",

"MCGA, кол., цифр.","MCGA, моно, анал."

"MCGA, кол., анал.","неизвестный тип",

"непредусмотренный код"};

unsigned int j; /* Вспомогательная переменная */

unsigned int seg; /* Сегмент ПЗУ */

unsigned int mark=0xAA55; /* Маркер ПЗУ */

unsigned char bufVGA[64]; /* Буфер данных VGA */

union REGS rr;

struct SREGS sr;

 

textbackground(0);

clrscr();

textattr(0x0a);

cprintf("Лабораторная работа N4");

cprintf("\nПроверка состава оборудования");

 

/* Определения типа компьютера */

type_PC=peekb(0xF000,0xFFFE);

if((type_PC-=0xFC)>4)

type_PC=4;

textattr(0x0b);

cprintf("\nТип компьютера: ");

textattr(0x0f);

cprintf("%s\n\r",type[type_PC]);

 

/* Конфигурация*/

konf_b=peek(0x40,0x10); /* Чтение байта оборудования */

/* из памяти BIOS */

textattr(0x0b);

cprintf("Конфигурация:\n\r");

 

 

/* Количество дисководов */

 

textattr(0x0e);

cprintf(" Дисководов ГМД: ");

textattr(0x0f);

if(konf_b&0x0001)

cprintf("%d\n\r",((konf_b&0x00C0)>>6)+1);

else

cprintf("нет\n\r");

textattr(0x0e);

cprintf(" Математич. сопроцессор: ");

textattr(0x0f);

if(konf_b&0x0002)

cprintf("есть\n\r");

else

cprintf("нет\n\r");

textattr(0x0e);

cprintf(" Тип дисплейного адаптера: ");

textattr(0x0f);

 

/* Определение активного адаптера */

/* Предположим наличие VGA */

rr.h.ah=0x1a;

rr.h.al=0;

int86(0x10,&rr,&rr);

if(rr.h.al==0x1a) /* Поддерживается функция 1Ah */

{ /* прерывания 10h */

for(j=0;j<12;j++)

if(rr.h.bl==typ1A[j])

break;

cprintf("%s",types1A[j]);

 

if(j>0 && j<12)

{

rr.h.ah=0x1b;

rr.x.bx=0;

sr.es=FP_SEG(bufVGA);

rr.x.di=FP_OFF(bufVGA);

int86x(0x10,&rr,&rr,&sr);

cprintf(", %d Кбайт\n\r",((int)bufVGA[49]+1)*64);

}

else

cprintf("\n\r");

}

else

{

/* Предположим наличие EGA */

rr.h.ah=0x12;

rr.h.bl=0x10;

int86(0x10,&rr,&rr);

if(rr.h.bl!=0x10) /* Поддерживается функция 12h */

{ /* прерывания 10h */

cprintf("EGA");

if(rr.h.bh)

cprintf(" моно");

else

cprintf(" кол.");

cprintf(", %d Кбайт\n\r",((int)rr.h.bl+1)*64);

}

else

{

/* CGA или MDA */

switch(konf_b&0x0030)

{

case 0: cprintf("EGA/VGA\n\r");break;

case 0x10: cprintf("CGA,40\n\r");break;

case 0x20: cprintf("CGA,80\n\r");break;

case 0x30: cprintf("MDA");break;

}

}

}

 

/* Блоки ОЗУ на системной плате */

textattr(0x0e);

cprintf("\n\r Первичный блок памяти: ");

textattr(0x0f);

switch (konf_b&0x000C)

{

case 0:cprintf("16 Кбайт\n\r");break;

case 4:cprintf("32 Кбайт\n\r");break;

case 8:cprintf("48 Кбайт\n\r");break;

case 12:cprintf("64 Кбайт или больше\n\r");break;

}

 

/* Количество последовательных портов RS-232 */

textattr(0x0e);

 

cprintf(" Портов RS232: ");

textattr(0x0f);

cprintf("%d\n\r",(konf_b&0x0E00)>>9);

 

/* Наличие джойстика */

textattr(0x0e);

cprintf(" Джойстик: ");

textattr(0x0f);

if(konf_b&0x1000)

cprintf("есть\n\r");

else

cprintf("нет\n\r");

 

/* Количество параллельних принтеров */

textattr(0x0e);

cprintf(" Принтеров: ");

textattr(0x0f);

cprintf("%d\n\n\r",(konf_b&0xC000)>>14);

 

/* Объем оперативной памяти */

 

textattr(0x0e);

cprintf("Объем оперативной памяти: ");

textattr(0x0f);

cprintf("%d Кбайт\n\r",peek(0x40,0x13));

textattr(0x0e);

 

/* Наличие и объем extended-памяти */

outportb(0x70,0x17);

a=inport(0x71);

outportb(0x70,0x18);

b=inport(0x71);

cprintf("Объем extended-памяти: ");

textattr(0x0f);

cprintf("%d Кбайт\n\n\r",(b<<8)|a);

 

/* Наличие дополнительных ПЗУ */

for(seg=0xC000;seg<0xFFB0;seg+=0x40)

/* Просмотр памяти от C000:0 с шагом 2 К */

if(peek(seg,0)==mark) /* Маркер найден */

{

textattr(0x0a);

cprintf("Адрес ПЗУ =");

textattr(0x0f);

cprintf(" %04x",seg);

textattr(0x0a);

cprintf(". Длина модуля = ");

textattr(0x0f);

cprintf("%d",512*peekb(seg,2));

textattr(0x0a);

 

cprintf(" байт\n\r",peekb(seg,2));

}

 

/* Определение версии операцийной системы */

rr.h.ah=0x30;

 

intdos(&rr,&rr);

textattr(0x0c);

cprintf("\n\rВерсия MS-DOS ");

textattr(0x0f);

cprintf("%d.%d\n\r",rr.h.al,rr.h.ah);

 

textattr(0x0a);

gotoxy(30,24);

cprintf("Нажмите любую клавишу");

textattr(0x07);

getch();

clrscr();

}




Поделиться с друзьями:


Дата добавления: 2017-02-01; Просмотров: 117; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.