Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2008, 15:19   #11
fru1t__
Пользователь
 
Регистрация: 08.10.2008
Сообщений: 10
По умолчанию

вот что я в гугл нашел про это : Состав оборудования XT (и PC) определяется положением переключателей на специальных колодках. Состояние этих переключателей может быть прочитано из программы обращением к порту 0x60. Но необходимости в этом нет - эту операцию выполняет BIOS при инициализации системы. На основании этой информации BIOS формирует так называемый список оборудования - 2-байтное слово по адресу 0040:0010. Прочитать это слово можно либо обратившись по указанному адресу, либо обратившись к BIOS через прерывание 0x11. Назначения разрядов списка оборудования следующие: 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 - число параллельных принтеров.
и адрес не 0010:0040 а 0040:0010
fru1t__ вне форума Ответить с цитированием
Старый 12.10.2008, 15:20   #12
fru1t__
Пользователь
 
Регистрация: 08.10.2008
Сообщений: 10
По умолчанию

вот мне нужно на экран вывести информацию про все это... а как написать я не представляю
fru1t__ вне форума Ответить с цитированием
Старый 12.10.2008, 15:59   #13
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от fru1t__ Посмотреть сообщение
вот мне нужно на экран вывести информацию про все это... а как написать я не представляю
Примерно так:
Код:

var x:word absolute $0040:$0010;
begin
  writeln(x); // у меня $C822 (51234)
  if (x and $2) = $2 then writeln('soprocessor installed');
  if ((x shr 4) and $3) = $2 then writeln('mode 80x25 color');
  // ...

  readln;
Насчет битов 4-5. В другом источнике:

4,5 видео режим, устанавливаемый при инициализации
00 - unused 01 - 40x25 color
10 - 80x25 color 11 - 80x25 monochrome

Цитата:
Сообщение от odi_noki Посмотреть сообщение
да ну! они находятся от 0000:0000 до 0000:03ff
ну да: $0010:$0040 = $0000:$0140

Последний раз редактировалось alexBlack; 12.10.2008 в 16:10.
alexBlack вне форума Ответить с цитированием
Старый 12.10.2008, 16:57   #14
fru1t__
Пользователь
 
Регистрация: 08.10.2008
Сообщений: 10
По умолчанию

что значит строчка "if ((x shr 4) and $3) = $2"?
fru1t__ вне форума Ответить с цитированием
Старый 12.10.2008, 18:42   #15
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от fru1t__ Посмотреть сообщение
что значит строчка "if ((x shr 4) and $3) = $2"?
Так понятней ? :
y := x shr 4;
y := y and $3;
if y = $2 then

уж извините, но Вам помогла бы любая книжка по Паскалю.
alexBlack вне форума Ответить с цитированием
Старый 12.10.2008, 19:10   #16
fru1t__
Пользователь
 
Регистрация: 08.10.2008
Сообщений: 10
По умолчанию

нет структуру я понимаю, я не понимаю что значит x and $3... 3 строчка переменной x или что? и зачем значок доллара?
fru1t__ вне форума Ответить с цитированием
Старый 12.10.2008, 19:21   #17
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Почитайте:

http://tolks.narod.ru/textbook/syntax.html#3
http://www.delphikingdom.ru/asp/view...?catalogid=838
http://www.codenet.ru/progr/other/lpas2.php (Битовая арифметика)
http://programmersforum.ru/showthread.php?t=20981
http://tolks.narod.ru/textbook/index.html

Последний раз редактировалось alexBlack; 12.10.2008 в 19:23.
alexBlack вне форума Ответить с цитированием
Старый 12.10.2008, 19:48   #18
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию

У меня возникла пара вопросов.
Во-первых: Delphi ругается на строку var x:word absolute $0040:$0010; "Variable name expected"
Во-вторых:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function SegOfsToLinear(Segment, Offset: Word): Integer;
begin
  result := (Segment shl 4) or Offset;
end;

function GetBiosDate: string;
begin
  result := PChar(Ptr(SegOfsToLinear($F000, $FFF5)));
end;

begin
  write(GetBiosDate);
  readln;
end.
Программа беспричинно вылетает, хотя должна выводить дату BIOSа.

Пишу на Delphi7.

Последний раз редактировалось Kostia; 12.10.2008 в 19:54.
Kostia вне форума Ответить с цитированием
Старый 12.10.2008, 20:12   #19
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Ну почему же беспричинно:
Access violation at ..... Read of address 000FFFF5.

Если не ошибаюсь, процесс в Windows грузится с абсолютного адреса $400000

Вот это работает:
Код:
var b:byte;
begin
  b := byte(Ptr($400000)^);
  ShowMessage(intToStr(b));
Доступ к адресам вне памяти процесса дает исключение.
Никаких сегментов и тем более BIOS откуда можно прочитать данные нет.

а объявление переменной absolute по адресу в Delphi исключено (наверное по соображениям безопасности)

Тот код, который я приводил работает в Borland Pascal.
alexBlack вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто может скинуть инфу о XmL-документах Parcenson Общие вопросы Delphi 4 27.08.2008 15:34
Ошибка: "Инструкция по адресу ...." Ronni10 Операционные системы общие вопросы 1 03.01.2008 21:49
php скрипт не выводит нужную инфу.. помогите плиз escrimer PHP 2 09.08.2007 02:37
дайте инфу по следующим Api-функциям: Holly1444 Win Api 1 20.11.2006 20:19