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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2011, 13:10   #1
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
Лампочка Чтение данных из CMOS

Всем привет! У меня ситуация следующая. Есть код написанный на Делфи с ассемблерной вставкой для чтения данных из CMOS .
Код:
Function Readcmos(I: Byte): Byte;
Var
Zn: Byte;
Begin
Asm
Mov al,i
Out 70h, Al
Wait
Xor Ax,Ax
In Al,71h
Wait
Mov Zn, Al
End;
Result:=Zn;
End;
При выполнении этого кода выскакивает ошибка “Privileged instruction” и код дальше не выполняется. В компиляторе указывается строка “Out 70h, Al” и выводится сообщение “Project ... raised exception class EPrivilege with message “Privileged instruction” .”
Я этот код писал в Паскале и он там хорошо работает. Но хотелось бы что бы он работал в обычном приложении (не консольном). Подскажите, пожалуйста, в чём может быть проблема и как её решить? Есть мнение, что этот код будет работать в Ring0.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 15.08.2011, 13:28   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Интересно, доступ к портам - привелигированная команда и из пользовательского приложения нельзя ее использовать под виндой. А как вам на паскале это удалось?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.08.2011, 13:58   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

если паскаль досовкий типа Turbo Pascal 7.0 то там будет работать. а в Delphi не будет
rpy3uH вне форума Ответить с цитированием
Старый 15.08.2011, 14:03   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
как вам на паскале это удалось?
на Паскаль это действительно работает. (кстати, как и чтение биос)

я не специалист, но думаю, что винда при создании виртуальной среды (при запуске DOS программ) эмулирует и основные области памяти, в т.ч. числе и доступ к CMOS/BIOS через порты)...

Хотите, проверьте у себя (программка на TurboPascal + компилённый exeшник в архиве прилагаются)...

а по сути вопроса - думаю, что из под Windows без ring0 в порты не залезешь.. ну, или ещё, думаю, можно драйвером проблему решить. (меня не спрашивайте как.. я не знаю... посмотрите, для начала "MiTeC System Information Component Suite" - там биос точно читается, может и CMOS можно прочитать...)

____________
Добавлено

Цитата:
Но хотелось бы что бы он работал в обычном приложении (не консольном).
а может быть, если уж ОЧЕНЬ надо, сделать "костыли" - вызывать в нужный момент DOS exeшник и читать из сформированного им файла?. Конечно, это кривая кривизна, но, на 99% будет работать (только учтите, что при запуске дос программы будет запускаться виртуальная дос машина + возможны проблемы на какой-нибудь Windows 8....
Вложения
Тип файла: rar READCMOS.rar (5.5 Кб, 26 просмотров)

Последний раз редактировалось Serge_Bliznykov; 15.08.2011 в 14:07.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.08.2011, 14:38   #5
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
если паскаль досовкий типа Turbo Pascal 7.0 то там будет работать. а в Delphi не будет
Вы правы. Я запускал на Turbo Pascal 7.0. Попробую ещё поэкспериментировать.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 15.08.2011, 14:39   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> на 99% будет работать ... возможны проблемы на какой-нибудь Windows 8

и на 100% реальны проблемы под любой 64-битной ОС, т.к. 16-ти битный код там просто не выполнится ни в каком виде.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 15.08.2011, 18:01   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Драйвер giveio.sys - на каком то из форумов попадалось, якобы умеет обращаться к CMOS
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение данных из реестра TranzitZP Microsoft Office Access 2 30.12.2010 23:01
Чтение данных Gawwws Microsoft Office Excel 3 07.02.2010 14:25
чтение данных (D2XX) fize Помощь студентам 14 12.01.2010 01:38
Чтение данных из файла в С++ Zaya007 Помощь студентам 9 17.03.2009 21:00
Чтение данных Satorin Общие вопросы Delphi 1 18.12.2008 22:10