Консультация № 108918
11.11.2007, 12:01
0.00 руб.
0 1 1
Здравствуйте! У меня такая проблема. В CMOS есть такой параметр как Resume By Alarm. Раньше задавался такой вопрос: Как программно установить время будильника. В ответе сказано что нужно прописать в регистры 70h и 71h нужные значения: в 70h индексы 1 - секунды, 3 - минуты, 5 - часы, а в 71h, собственно, данные. Так вот не работает. Пробовал заходить в BIOS и ставить там значения, но в регистре 71h значения не меняются(всегда 0). Пробовал весь 71h порт сканировать - нигде не нашёл установленных значений в BIOS. Помогите, заранее спасибо. Код прилагается.

Приложение:
masm model small .data s db 256 dup(0) .stack 100h .codemain: mov ax, @data mov ds, ax xor ax, ax xor si, si mov cx, 256start: mov ax, si out 70h, al jmp $+2 in al, 71h mov s[si], al inc siloop start mov ax, 4C00h int 21h end main

Обсуждение

Неизвестный
11.11.2007, 14:37
общий
это ответ
Здравствуйте, _ArNi_!
Как-то я задавался вопросом, тем, аналогичным сейчас Вашему. Нашёл уже готовые программные решения. Одно из которых - программа bilarm в которой есть база данных производителей и моделей материнских плат выбрав из которых свою или близкой к своей я добивался того, что в BIOSe действительно менялись время включения компьютера.
Однако, пусть это будет моим субъективным мнением - сам факт существования подобной программы со списком мат.плат - говорит о том, что предположение о том, что адрес (например который Вы упоминаете 71h) во всех BIOS‘ах далеко не одинаковый. И сделать что-то вроде универсальной программы - не получится.
Так что - вот Вам готовое решение - программа Bilarm, посмотрите. (~ 91 кБ)
http://chester-soft.narod.ru/dlyasaita/progi/Bilarm.rar

Внимание, именно по причине того, что адреса расположения таймеров включения компьютера в BIOS во всех BIOS‘ах разные (хм... теперь уже я говорю это не как предположение) при выборе НЕ своей мат.платы в этой программе и записи значений времени - Вы можете повредить свой BIOS. Будьте осторожны.

Из своего практического опыта работы с этой программой могу сказать, даже если Вы не найдёте в списке этой программы свой BIOS, можно найти близкий по следующему принципу. В своём BIOS предварительно ставите какое-то время включения, например 12.44 и загрузив Windows, открываете эту программу, и смотрите в списке - при выборе какой мат.платы время в окошке совпадает с этим Вашим 12.44

Ещё один нюанс. Расписание изменённое в этой программе начинает действовать (!)только после перезагрузки компьютера. Т.е. если Вы поставили время включения и просто выключили компьютер - расписание не сработает!
Форма ответа