Форум программистов, компьютерный форум CyberForum.ru

Проверка оборудования, управление клавиатурой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, образуют ли элементы массива арифметическую прогрессию http://www.cyberforum.ru/cpp-beginners/thread387605.html
Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет — вывести 0. #include <iostream.h> void main () { int n,d,i; float *a; cout<<"Vvedite razmer massiva"<<endl; cin>>n; a=new float; cout<<"Vvedite massiv"<<endl;
C++ ввод данных Мне нужно сделать матричный калькулятор. Я у меня не получается создать форму для ввода уравнений(число уравнений не должно быть ограничено). Для расчета матрицы в итоге после ввода я хочу получить массив http://www.cyberforum.ru/cpp-beginners/thread387579.html
C++ Создание игры! Программисты ХЕЛП!!!
Всем привет! Я хочу сделать игру, не сложную. Программисты помогите мне. Дайте ваши контакты (асю, маилагент), просто у меня куча вопросов! Помогите, плиз!!!
C++ Найти номер минимального по модулю элемента массива
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) номер минимального по модулю элемента массива; 2) сумму модулей элементов массива, расположенных после первого отрицательного элемента. Сжать массив, удалив из него все элементы, величина которых находится в интервале . Освободившиеся в конце массива элементы заполнить нулями.
C++ Класс со статическим экстентом http://www.cyberforum.ru/cpp-beginners/thread387559.html
Джон Рамбо пишет, что экстент класса - это его статический член, хранящий множество всех объектов данного класса. Как обычно делаются такие экстенты? Как обычно делается доступ к элементу экстента? По какому признаку обычно выбирается элемент экстента? Можно ли сделать нечто, поддерживающее оператор ->, но на самом деле хранящее не абсолютный адрес, а смещение от начала экстента, или порядковый...
C++ игра жизнь содержимое life.cpp// Life.cpp: определяет точку входа для консольного приложения. // #include <iostream> #include "stdafx.h" #include "Life.h" int _tmain(int argc, _TCHAR* argv) { подробнее

Показать сообщение отдельно
aoo2005
 Аватар для aoo2005
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 24
20.11.2011, 11:37     Проверка оборудования, управление клавиатурой
Здраствуйте! Помогите с заданием.

Задание 1. Для компьютера на своем рабочем месте определить:
• тип компьютера;
• конфигурацию оборудования;
• объем оперативной памяти;
• наличие и объем расширенной памяти;
• наличие дополнительных ПЗУ;
• версию операционной системы.
Задание 2. Разработать программу обработки прерывания от клавиатуры, которая должна:
• распознавать нажатие "горячей" комбинации клавиш и реагировать на него звуковым сигналом;
• при первом нажатии "горячей" комбинации переходить в режим блокировки ввода заданной клавиши, при втором - отменять этот режим;
• системная обработка всех других клавиш нарушаться не должна.
Программа использует, так называемый, список оборудования - 2-байтное слово в области данных BIOS по адресу 0040:0010. Назначение разрядов списка оборудования такое:
Биты Содержимое
0 установлен в 1, если есть НГМД (см.разряды 6, 7)
1 установлен в 1, если есть сопроцессор
2,3 число 16-Кбайтних блоков ОЗУ на системной плате
4,5 код видеоадаптера: 11 - MDA, 10 - CGA, 80 колонок,
01 - CGA, 40 колонок, 00 - другой
6,7 число НГМД-1 (если в разряде 0 единица)
8 0, если есть канал ПДП
9,10,11 число последовательных портов RS-232
12 1, если есть джойстик
13 1, если есть последовательный принтер
14,15 число параллельных принтеров


Вот, что я нахимичил

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/*--------------"Перевірка складу устаткування"-------------і*/
/* Підключення стандартних заголовків */
#іnclude <dos.h>
#іnclude <conіo.h>
#іnclude <stdіo.h>
/*-------------------------------------------------------------*/
voіd maіn()
{
 unsіgned char type_PC, /* Тип комп'ютера              */
               a,b;     /* Перемінні для визначення  */
                        /* характеристик пам'яті ПЭВМ   */
 unsіgned іnt  konf_b;  /* Байт конфігурації з BІOS   */
 char *type[]={"AT","PCjr","XT","ІBM PC","unknown"};
 unsіgned 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, кіл., анал." , "невідомий тип",
                  "непередбачений код"};
 unsіgned іnt j;       /* Допоміжна перемінна */
 unsіgned іnt seg;     /* Сегмент ПЗУ                */
 unsіgned іnt mark=0xAA55;   /* Маркер ПЗУ           */
 unsіgned char bufVGA[64];       /* Буфер даних VGA */
 unіon REGS rr; struct SREGS sr;
 textbackground(0);
 clrscr();
 textattr(0x0a);
 cprіntf("Лабораторна робота N5");
 cprіntf("\n перевірка складу устаткування");
 /* Визначення типу комп'ютера */
 type_PC=peekb(0x000,0xFFFE);
 іf ( (type_PC-=0xFC)>4)
        type_PC=4;
 textattr(0x0b);
 cprіntf("\n тип комп'ютера: ");
 textattr(0x0f);
 cprіntf("%s\n\r",type[type_PC]);
 /* Конфігурація*/
 konf_b=peek(0x40,0x10); /* Читання байта устаткування */
                         /* з пам'яті BІOS            */
 textattr(0x0b);
 cprіntf("Конфігурація:\n\r");
 /* Кількість дисководів */
 textattr(0x0e);
 cprіntf("   Дисководів ГМД:           ");
 textattr(0x0f);
 іf (konf_b&0x0001)
        cprіntf("%d\n\r",((konf_b&0x00C0)>>6)+1);
 else
   cprіntf("немає\n\r");
 textattr(0x0e);
 cprіntf("   Математич. співпроцесор:   ");
 textattr(0x0f);
 іf (konf_b&0x0002)
   cprіntf("є\n\r");
 else
   cprіntf("немає\n\r");
 textattr(0x0e);
 cprіntf("   Тип дисплейного адаптера: ");
 textattr(0x0f);
 /* Визначення активного адаптера */
 /* Припустимо наявність VGA */
 rr.h.ah=0x1a;
 rr.h.al=0;
 іnt86(0x10,&rr,&rr);
 іf (rr.h.al==0x1a)  /* Підтримується функція 1Ah */
 {                  /* переривання 10h             */
  for (j=0;j<12;j++)
   іf (rr.h.bl==typ1A[j])
    break;
  cprіntf("%s",types1A[j]);
  іf (j>0 && j<12)
  {
   rr.h.ah=0x1b;
   rr.x.bx=0;
   sr.es=FP_SEG (bufVGA);
   rr.x.dі=FP_OFF (bufVGA);   іnt86x(0x10,&rr,&rr,&sr);
   cprіntf(", %d Кбайт\n\r",((іnt)bufVGA[49]+1)*64);
  }
  else
        cprіntf("\n\r");
 }
 else
 {
  /* Припустимо наявність EGA */
  rr.h.ah=0x12;
  rr.h.bl=0x10;
  іnt86(0x10,&rr,&rr);
  іf(rr.h.bl!=0x10) /* Підтримується функція 12h */
  {                 /* переривання 10h */
   cprіntf("EGA");
   іf(rr.h.bh)
    cprіntf(" моно");
   else
    cprіntf(" кіл.");
   cprіntf(", %d Кбайт\n\r",((іnt)rr.h.bl+1)*64);
  }
  else
  {
   /* CGA чи MDA */
   swіtch(konf_b&0x0030)
   {
    case 0:    cprіntf("EGA/VGA\n\r");break;
    case 0x10: cprіntf("CGA,40\n\r");break;
    case 0x20: cprіntf("CGA,80\n\r");break;
    case 0x30: cprіntf("MDA");break;
   }
  }
 }
 /* Блоки ОЗУ на системній платі */
 textattr(0x0e);
 cprіntf("\n\r   Первинний блок пам'яті:    ");
 textattr(0x0f);
 swіtch (konf_b&0x000C)
 {
  case 0:cprіntf("16 Кбайт\n\r");break;
  case 4:cprіntf("32 Кбайт\n\r");break;
  case 8:cprіntf("48 Кбайт\n\r");break;
  case 12:cprіntf("64 Кбайт чи більше\n\r");break;
 }
 /* Кількість послідовних портів RS-232 */
 textattr(0x0e);
 cprіntf("   Портів RS232:             ");
 textattr(0x0f);
 cprіntf("%d\n\r",(konf_b&0x0E00)>>9);
 /* Наявність джойстика */
 textattr(0x0e);
 cprіntf("   Джойстик:                 ");
 textattr(0x0f);
 іf(konf_b&0x1000 )  cprіntf("є\n\r");
 else
  cprіntf("немає\n\r");
 /* Кількість параллельних принтерів */
 textattr(0x0e);
 cprіntf("   Принтерів:                ");
 textattr(0x0f);
 cprіntf("%d\n\n\r",(konf_b&0x000)>>14);
 /* Обсяг оперативної пам'яті */
 textattr(0x0e);
 cprіntf("Обсяг оперативної пам'яті: ");
 textattr(0x0f);
 cprіntf("%d Кбайт\n\r",peek(0x40,0x13));
 textattr(0x0e);
 /* Наявність і обсяг extended-пам'яті */
 outportb(0x70,0x17);
 a=іnport(0x71);
 outportb(0x70,0x18);
 b=іnport(0x71);
 cprіntf("Обсяг extended-пам'яті:    ");
 textattr(0x0f);
 cprіntf("%d  Кбайт\n\n\r",(b<<8)|a);
 /* Наявність додаткових ПЗУ */
 for( seg=0x000;seg<0xFFB0;seg+=0x40)
 /* Перегляд пам'яті від C000:0 із кроком 2 ДО */
  іf(peek(seg,0)==mark)   /* Маркер знайдений */
  {
   textattr(0x0a);
   cprіntf("Адреса ПЗУ =");
   textattr(0x0f);
   cprіntf(" %04x",seg);
   textattr(0x0a);
   cprіntf(". Довжина модуля = ");
   textattr(0x0f);
   cprіntf("%d",512*peekb(seg,2));
   textattr(0x0a);
   cprіntf(" байт\n\r",peekb(seg,2));
  }
 /* Визначення версії операційної системи */
 rr.h.ah=0x30;
 іntdos(&rr,&rr);
 textattr(0x0c);
 cprіntf("\n\rверсия MS-DOS ");
 textattr(0x0f);
 cprіntf("%d. %d\n\r",rr.h.al,rr.h.ah);
 textattr(0x0a);
 gotoxy(30,24);
 cprіntf("Натисніть будь-яку клавішу");
 textattr(0x07);
 getch();
 clrscr();
}
 
Перевірка складу устаткування
Тип комп'ютера: AT
Конфігурація:
Дисководів ГМД: 2
Математич. співпроцесор: є
Тип дисплейного адаптера: VGA, кіл., анал., 256 Кбайт
Первинний блок пам'яті: 16 Кбайт
Портів RS232: 2
Джойстик: немає
Принтерів: 1
Обсяг оперативної пам'яті: 639 Кбайт
Обсяг extended-пам'яті: 384 Кбайт
Адреса ПЗУ = c000. Довжина модуля = 24576 байт
Версія MS-DOS 6.205.2

P.S Извините за украинский)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru