русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-06-12; просмотров: 544; Нарушение авторских прав


/*----Лабораторная работа 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("Лабораторная работа N5");

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();

}



<== предыдущая лекция | следующая лекция ==>
Описание алгоритма программы | Результаты работы программы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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