Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прерывание BIOS, не видит библиотек, union REGS и movedate() не находит. 
:(
    Опции темы
v_enom
Дата 30.9.2007, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Мне необходимо написать программу, позволяющую по прерываниям BOIS определить набор устройств, подключенных к ПК.

но у меня проблема: компилятор ругается, что нет функции  movedate 
Error:  laba1_vitka.cpp(24,10):Call to undefined function 'movedata'
хотя ее библиотека  mem.h подключена

или 
не видит union REGS в это тексте проги из книжки, хотя есть #include <dos.h>
я запускал на borland C 5.0 и Builder'e. 

просто прописать через asm {} вот это:

// Вызываем прерывание INT 11h для получения
  // слова конфигурации компьютера
  rg.h.ah = 0x0;
  int86(0x11, &rg, &rg);
  
  // Получаем слово конфигурации и сохраняем 
  // его в структуре HdwCfg
  uword = (unsigned int)rg.x.ax;
  memcpy(&HdwCfg, &uword, 2);

я не знаю как... что и куда заносить, в какие регисры. подскажите пожалуйста


Почему не видит библиотек???

Код

// =====================================================
// Получение информации о конфигурации компьютера
// при помощи BIOS
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// =====================================================
#include <stdio.h>
#include <conio.h>
#include <memory.h>
#include <dos.h>

// Битовые поля слова конфигурации
typedef struct _HDWCFG
{
  unsigned  HddPresent:   1; // 0
  unsigned  NpuPresent:   1; // 1
  unsigned  AmountOfRAM:  2; // 2-3
  unsigned  VideoMode:    2; // 4-5
  unsigned  NumberOfFdd:  2; // 6-7
  unsigned  DmaPresent:   1; // 8
  unsigned  NumberOfCom:  3; // 9-11
  unsigned  GamePresent:  1; // 12
  unsigned  JrComPresent: 1; // 13
  unsigned  NumberOfLpt:  2; // 14-15
} HDWCFG;     

int main(void) 

  union REGS  rg;
  HDWCFG HdwCfg; 
  unsigned uword;

  printf("\nHDWCFG (C)A. Frolov, 1997");

  // Вызываем прерывание INT 11h для получения
  // слова конфигурации компьютера
  rg.h.ah = 0x0;
  int86(0x11, &rg, &rg);
  
  // Получаем слово конфигурации и сохраняем 
  // его в структуре HdwCfg
  uword = (unsigned int)rg.x.ax;
  memcpy(&HdwCfg, &uword, 2);
  
  // Выводим на экран конфигурацию компьютера
  printf("\n\nConfiguration word: %04.4X", HdwCfg);
  
  if(HdwCfg.HddPresent)
    printf("\nHDD present");

  if(HdwCfg.NpuPresent)
    printf("\nNPU present");

  printf("\nRAM banks: %d", HdwCfg.AmountOfRAM);
  printf("\nVideo Mode: %d", HdwCfg.VideoMode);
  printf("\nNubber of FDD: %d", HdwCfg.NumberOfFdd + 1);
    
  if(HdwCfg.DmaPresent)
    printf("\nDMA present");

  printf("\nNubber of COM ports: %d", HdwCfg.NumberOfCom);
  
  if(HdwCfg.GamePresent)
    printf("\nGame adapter present");

  if(HdwCfg.JrComPresent)
    printf("\nPCjr Com present");

  printf("\nNumber of LPT ports: %d", HdwCfg.NumberOfLpt);

  // Вызываем прерывание INT 12h для определения 
  // объема основной оперативной памяти компьютера
  rg.h.ah = 0x0;
  int86(0x12, &rg, &rg);

  // Выводим объем оперативной памяти
  printf("\nRAM istalled: %d Kbytes", 
    (unsigned int)rg.x.ax);

  // Получаем объем расширенной оперативной памяти,
  // доступной через прерывание INT 15h
  rg.h.ah = 0x88;
  int86(0x15, &rg, &rg);

  // Выводим объем расширенной оперативной памяти
  printf("\nExtended RAM istalled: %ld Kbytes", 
    (unsigned int)rg.x.ax);

  getch();
  return 0;
}



PM MAIL   Вверх
bsa
Дата 30.9.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



v_enom, попробуй это собирать под Borland C++ 3.1
PM   Вверх
v_enom
Дата 30.9.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



Цитата(bsa @ 30.9.2007,  15:22)
v_enom, попробуй это собирать под Borland C++ 3.1

я попробую, но все же как добраться до прирываний из builder'a ???
это же можно как-то сделать?
PM MAIL   Вверх
JackYF
Дата 30.9.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(v_enom @  30.9.2007,  15:46 Найти цитируемый пост)
до прирываний из builder'a

Windows не даст.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 30.9.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(JackYF @  30.9.2007,  17:18 Найти цитируемый пост)
Windows не даст. 

Windows то даст в режиме V86
а вот если Builder не может генерировать 16-ти битные исполняемые файлы, то и Windows не поможет


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 30.9.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(MAKCim @  30.9.2007,  19:58 Найти цитируемый пост)
а вот если Builder не может генерировать 16-ти битные исполняемые файлы

ну я это и имел в виду smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
apook
Дата 1.10.2007, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата(v_enom @  30.9.2007,  14:04 Найти цитируемый пост)
просто прописать через asm {}

Билдер и асм не дает включать, и нет: прерываня биос, 16-бит,union REGS и int86 и т.д



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
MAKCim
Дата 1.10.2007, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(apook @  1.10.2007,  02:12 Найти цитируемый пост)
Билдер и асм не дает включать

с чего бы это?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
apook
Дата 1.10.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата(MAKCim @  1.10.2007,  08:50 Найти цитируемый пост)
с чего бы это?
Недоверяет...



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
JackYF
Дата 1.10.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(apook @  1.10.2007,  02:12 Найти цитируемый пост)
Билдер и асм не дает включать

даёт. Только никаких прерываний, можешь с регистрами и памятью работать...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.