С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 57

Определить тип видеоконтроллера, его режим и дату создания BIOS; проверить исправность НМД

11.09.2014, 11:54. Показов 3477. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка в программе

Есть задание: написать программу, которая может: определить тип видеоконтроллера, его режим и дату создания BIOS; проверить исправность НМД. Программа написана, но ошибки. Пожалуйста, помогите.

C++
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
//
#include "stdafx.h"
#include <iostream>
#include<conio.h>
#include<windows.h>
#include <dos.h>
using namespace std;
void main()
{
            system("CLS");
            char far b, *b1, *b2;
            int B, B1;
        
            outportb(0x70,0xE0);
b = intportb(0x70);
B = (int) *b &8;
if (B == 0) cout<<"HMD ispraven";
else cout<<"HMD ne ispraven";
cout<<"\n\n";
b1 = ( char far * ) 0x00400010;
cout<<*b1;
B1 = (int) *b&48; 
 
 
switch (B1) {
case 0: cout<<"Ne ispol'zuetsa ili EGA"; break;       
case 16: cout<<"CGA, EGA, VGA v rejime 40x25";break;
case 32: cout<<"CGA, EGA, VGA v rejime 80x25";break;
case 48: cout<<"Monohromniy kontroler"; break;
}
cout<<"\n\n";
 
b2 = ( char far * ) 0xF000FFF5;
cout<<"Data sozdaniya BOIS:\n";
for(int i = 0;i<8; i++) cout<<*(b2++);
getch();
}
Ошибки:

C++
1
2
3
4
    1   IntelliSense: идентификатор "outportb" не определен 
    2   IntelliSense: идентификатор "intportb" не определен 
    3   IntelliSense: операнд * должен быть указателем   
    4   IntelliSense: операнд * должен быть указателем
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2014, 11:54
Ответы с готовыми решениями:

Вывести дату создания BIOS
Необходим код вывода даты создания Биоса. Ассемблер

WinCE - проверить дату создания/модификации файла на FTP
Приветствую. Как в C# для WinCE проверить дату создания/модификации файла на FTP? Насколько понимаю, самый простой способ - wininet.dll...

Проверить дату создания файла и если не совпадает - завершить работу
Пишу код. Хочу что бы скрипт проверил дату создания файла и если не совпадает завершил работу: $t = FileGetTime(&quot;1.exe&quot;, 1) ...

23
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
11.09.2014, 12:02
Цитата Сообщение от Kristi-na Посмотреть сообщение
идентификатор "outportb" не определен
загаловочный файл нужен. что-то вроде #include <dos.h>.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
11.09.2014, 12:04
Цитата Сообщение от Kristi-na Посмотреть сообщение
сть задание: написать программу, которая может: определить тип видеоконтроллера, его режим и дату создания BIOS;
все это возможно было под ДОС, под виндой не пустит на низкий уровень
Цитата Сообщение от Kristi-na Посмотреть сообщение
IntelliSense: идентификатор "outportb" не определен
IntelliSense: идентификатор "intportb" не определен
потому что винда и компилятор не тот
тут нужен BC 3.1
outportb intportb, если мне память не изменяет, это запись/ чтение из физического порта,т. е. на уровне железа
Винда такого не дозволяет

Добавлено через 40 секунд
Цитата Сообщение от mss307 Посмотреть сообщение
загаловочный файл нужен. что-то вроде #include <dos.h>.
а это что?
Цитата Сообщение от Kristi-na Посмотреть сообщение
#include <dos.h>
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
11.09.2014, 12:06
Цитата Сообщение от Kristi-na Посмотреть сообщение
B = (int) *b &8;
судя по твоему коду, B имеет тип инт. разыменовывать int как-то странно.

Добавлено через 50 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а это что?
не увидел.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
11.09.2014, 14:28
Цитата Сообщение от Kristi-na Посмотреть сообщение
CGA, EGA, VGA
За такими компьютером придется идти в музей......
Искать IBM PC XT, IBM PC AT, IBM 386
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
11.09.2014, 19:09
Цитата Сообщение от zss Посмотреть сообщение
Искать IBM PC XT, IBM PC AT, IBM 386
286 еще забыл
а на 386 уже стояли VGA и SVGA, кои по сигнатуре уже никак не отличались
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
11.09.2014, 21:17
Цитата Сообщение от ValeryS Посмотреть сообщение
286 еще забыл
PC AT была на 286 процессоре
PC XT - на 88( 8 битная шина 86 процессора, который у нас был выпущен как КР1810ВМ86).
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
11.09.2014, 22:12
Цитата Сообщение от zss Посмотреть сообщение
PC AT была на 286 процессоре
PC XT - на 88( 8 битная шина 86 процессора, который у нас был выпущен как КР1810ВМ86).
спорить не буду, время много прошло
но по моему
XT 8088 ( кастрированный 86, 8битка)
AT 8086
AT286 80286
был еще 80186 но в серию не пошел, я имею ввиду компы IBM, сам то камень использовался

Добавлено через 4 минуты
Цитата Сообщение от zss Посмотреть сообщение
на 88( 8 битная шина 86 процессора, который у нас был выпущен как КР1810ВМ86).
неправда ваша дяденька
аналог 8088 это КР1810ВМ88 https://ru.wikipedia.org/wiki/К1810ВМ88
а 8086 это КР1810ВМ86 https://ru.wikipedia.org/wiki/К1810ВМ86
википедия все помнит
0
 Аватар для Pingvin001
1 / 1 / 0
Регистрация: 22.03.2014
Сообщений: 142
23.01.2015, 19:48
Цитата Сообщение от Kristi-na Посмотреть сообщение
C
1
2
3
b2 = ( char far * ) 0xF000FFF5;
cout<<"Data sozdaniya BOIS:\n";
for(int i = 0;i<8; i++) cout<<*(b2++);
Я знаю как на С получить производителя процессора, а вместе с вышеуказанной датой, образуется идентификация компа, тем более, что серийный номер процессора из CPUID получается только в 3 пнях, а в 4 уже нет.
Цитата Сообщение от ValeryS Посмотреть сообщение
Винда такого не дозволяет
Как же тогда в Винде идентифицировать комп?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.01.2015, 20:04
EnumDisplayDevicesW() для определения видеокарты.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
23.01.2015, 20:21
Цитата Сообщение от Pingvin001 Посмотреть сообщение
Как же тогда в Винде идентифицировать комп?
Идентификатора "компа" не существует, не в "Винде" не где либо еще.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
23.01.2015, 20:27
Цитата Сообщение от castaway Посмотреть сообщение
Идентификатора "компа" не существует,
как такового нет
но можно снять серийник винта, версию БИОС,МАК адрес если есть сетевуха, вроде бы можно снять серийник процессора, где то слышал, хотя сам никогда не пользовался
и из этих данных собрать какой нибудь идентификатор
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
23.01.2015, 20:37
ValeryS, можно взять идентификаторы (серийники) "запчастей", и "сложить их", получив "псевдо-единый", но речь шла про единый для ПК. Такого нет.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.01.2015, 20:52
Серийный номер процессора программно получить нельзя.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
23.01.2015, 21:23
Цитата Сообщение от nmcf Посмотреть сообщение
Серийный номер процессора программно получить нельзя.
Инструкция cpuid выдаёт серийный номер процессора начиная с Pentium III.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.01.2015, 21:49
Ну вот для Pentium III может и можно, я говорю про современные, прикрыли эту возможность. Можно только идентификатор получить.
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
23.01.2015, 22:10
Цитата Сообщение от castaway Посмотреть сообщение
Инструкция cpuid выдаёт серийный номер процессора начиная с Pentium III.
не получается
C++
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
#include <stdio.h>
 
union Ver
{
 char buf[12];
 int ID[3];
};
 
 
int main ( )
{
 Ver ver;
 
int tmp1,tmp2,tmp3;
_asm
   {
    xor EAX,EAX;
    CPUID;
    mov ver.ID[0],EBX;
    mov ver.ID[1],EDX;
    mov ver.ID[2],ECX;
    //mov tmp,EAX;
    mov EAX,3;
    CPUID;
    mov tmp1,EBX;
    mov tmp2,EDX;
    mov tmp3,ECX;
    //mov tmp,EAX;
 
 
  }
 printf("name=%s \n",ver.buf);
 printf("s/n= %d%d%d",tmp1,tmp2,tmp3);
 
 return 0 ;
 
}
вот здесь http://habrahabr.ru/company/intel/blog/220851/
вот что пишут
Processor Serial Number

Во времена Pentium III каждый процессор получил уникальный серийный номер, содержавшийся в CPUID.3.ECX и CPUID.3.EDX [7]. Легко представить, насколько такая фича была бы удобна для нужд защиты ПО от копирования. Однако в 1999 году Европейское сообщество запротестовало, разумно опасаясь, что подобная функциональность повредит приватности пользователей таких систем. Уже в Intel Pentium IV серийный номер был убран, сейчас лист 3 возвращает нули.
1
23.01.2015, 22:15

Не по теме:

nmcf, ValeryS, не знал что так всё изменилось..

0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
23.01.2015, 22:19
Цитата Сообщение от castaway Посмотреть сообщение
не знал что так всё изменилось..
я и сам не знал
вообще никогда не пользовал, пока ты инструкцию не скинул
я больше в интернете инфу искал, чем тестовую программу накидывал
может что то и неправильно сделал
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
24.01.2015, 17:55
В GCC есть встроенная инструкция cpuid.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdio>
#include <cpuid.h>
 
int main()
{
    unsigned int data[5];
    data[4] = 0;
 
    // get vendor
    __get_cpuid( 0, &data[0], &data[1], &data[3], &data[2] );
    printf( "%s\n", &data[1] );
 
    // get serial number
    __get_cpuid( 3, &data[0], &data[1], &data[2], &data[3] );
    printf( "%08x %08x %08x %08x\n", data[0], data[1], data[2], data[3] );
}
GenuineIntel
00000000 00000000 00000000 00000000
Увы, но мой Core-i3 серийного номера не имеет...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2015, 17:55
Помогаю со студенческими работами здесь

Как открыть файл и получить дату его создания
Учусь работать с файлами использую visual studio 2013, как открыть файл, как получить инфу когда он создан, в label ??? вот код, ...

Вывести название файла, дату его создания и автора
Через ListView вывожу содержимое папки. Необходимо выводить название файлов, дату создания и автора. Имя и дату вывел через: ...

Как в C# узнать размер файла и дату его создания ?
например у меня есть точки авто-сохранения ,которые формируются в отдельных файлах. как обратиться к их свойствам ? Добавлено через 19...

Проверить исправность конденсатора
Конденсатор(такой как 2 основных больших конденсатора на БП) является полярным или неполярным.Нужно проверить на исправность такой...

Записать дату и время создания каждого файла в его имя
Здравствуйте! Прошу помощи. Есть каталог со множеством файлов (например, jpg, больше тысячи). Нужно в их имена добавить даты и время ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru