Сейчас на форуме: vasilevradislav, tyns777, zombi-vadim (+3 невидимых)

 eXeL@B —› Программирование —› Измерить температуру проца на асме
Посл.ответ Сообщение


Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 31 января 2008 08:28
· Личное сообщение · #1

Вообщем нужен сабж. Как можно осуществить?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 31 января 2008 08:49
· Личное сообщение · #2

А что гугл думает по этому поводу?




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 31 января 2008 08:59 · Поправил: Spirit
· Личное сообщение · #3

Rainbow
mov dx, 295h
mov al, 4Eh
out dx, al
inc dx
in al, dx
or al, 1
out dx, al
dec dx
mov al, 50h
out dx, al
in al, dx ;; al - temperature


Инфа:
msdn2.microsoft.com/en-us/library/aa394493.aspx

З.Ы.: 2 минуты проведенные в гугле. В следующий раз ищи сам, прежде чем задовать такой вопрос.

-----
iNTERNATiONAL CoDE CReW





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 31 января 2008 09:16
· Личное сообщение · #4

Ara пишет:
А что гугл думает по этому поводу?

Где-то час шарился по гуглу 0 результатов ничего не нашёл



Spirit :
Rainbow
mov dx, 295h
mov al, 4Eh
out dx, al
inc dx
in al, dx
or al, 1
out dx, al
dec dx
mov al, 50h
out dx, al
in al, dx ;; al - temperature


не пойму как происходит измерение?




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 31 января 2008 09:47
· Личное сообщение · #5

Rainbow
Выполни этот код и в al'e у тебя будет температура

-----
iNTERNATiONAL CoDE CReW





Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 31 января 2008 09:50
· Личное сообщение · #6

Rainbow пишет:
не пойму как происходит измерение?

...это обращение к соответствующим портам ввода-вывода с помощью команд in и out.
Доступно скорее всего на нулевом уровне привилегий.

-----
the Power of Reversing team





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 31 января 2008 10:19 · Поправил: Rainbow
· Личное сообщение · #7

Дело в том что это надо для курсяка. Я же не напишу один этот код всё. хотелось бы узнать как это всё работает.

... после выполнения первого out прога валится...



Ранг: 10.2 (новичок)
Активность: 0=0
Статус: Участник

Создано: 31 января 2008 10:43 · Поправил: Unmoored
· Личное сообщение · #8

Хм, ну вобще можно из асма заюзать WMI. Интересно как это будет выглядеть А собственно почему именно ASM? Вобще как задание то хоть выглядит? Напиши ка код который достаёт температуру процессора неизвестно какой архитектуры под неизвестно какой ОС но строго на ассемблере?
P.S. Запускай под Windows 98/DOS. Тогда валиться не будет. Я так понимаю этот код работает напрямую с SMBus? Даж не представляю чего случится если этот код попытаться выполнить во время работы прог а ля ASUS Probe...




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 31 января 2008 10:48
· Личное сообщение · #9

Unmoored пишет:
Хм, ну вобще можно из асма заюзать WMI. Интересно как это будет выглядеть А собственно почему именно ASM?


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



Ранг: 10.2 (новичок)
Активность: 0=0
Статус: Участник

Создано: 31 января 2008 10:58
· Личное сообщение · #10

Поправил пост выше пока ты писал ответ Ну не хватает определенности. Если интересно как этот код работает изучай SMBus. Команды IN/OUT под ОС семейства Windows NT (2K, XP и т.д.) разрешены только в режиме ядра. Так что если надо чтоб этот код пахал под этими ОС есть 2 пути:
1. Написать драйвер режима ядра (это скорее тянет на диплом).
2. Ознакомиться с драйвером GiveIO. Вот первое краткое описание которое нагуглил.
www.pcports.ru/articles/3.php




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 31 января 2008 12:06
· Личное сообщение · #11

Rainbow пишет:
не пойму как происходит измерение?

Наверно дергается из биоса материнки...



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 31 января 2008 14:19
· Личное сообщение · #12

Spirit твой код будет работать далеко не везде.
Он рассчитан на конкретный тип сенсора (плоо-моему Winbond), на других работать не будет.
К тому же даже для одинаковых сенсоров некоторые производители материнок подключают сенсор таким образом, что он отображается напрямую на IO пространство (как у тебя), другие вешают его как устройство на SMBus...
В общем низкоуровневого 100% способа прочитать температуру на всех типах материнок просто нет.
Unmoored пишет:
Ну не хватает определенности. Если интересно как этот код работает изучай SMBus.

Этот код к SMBus отношения не имеет.
Rainbow пишет:
не пойму как происходит измерение?

Измерение происходит аппаратно, температуру замеряет сенсор.
Ты просто читаеш его текущие показания и всё.
Вообще скачай исходники lmsensors и убедись что если делать универсально - это не простая задача.
Кода там много. А вообще у современных процессоров (Core2 и выше) есть встроенный сенсор и если не ошибаюсь температуру можно при помощи CPUID с каким-то кодом получить.
Тут всё достаточно просто, в сети даже такие программки где-то были...


 eXeL@B —› Программирование —› Измерить температуру проца на асме
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати