MASM & API & порты
Надо высчитать за сколько времени будут произвдене несколько мат операций.Алгоритм таков:
создам поток, который будет высчитывать эти операции и завершаться
создам тамейр,который вернет время жизни потока,после его завершения
выведу результаты таймера
алгоритмбез ошибок?
и несколько вопросов:
1)можно ли и как считать,записать в порт таймера с помошью апи число?
считать из регистра счетчика,записать в регистр частоты регенерации памяти.
2)в секции биос,для дос приложений,есть информация о тактовой частоте процессора?нужно будет понизить ее с помощью системного таймера,потом повысить и вывести изменения частот.я предпологаю,что есть,если так,то она обновится,если я ее изменю без перезагрузки программы?
Заранее спасибо за ответы.
Про порт таймера вообще не понял.
Частота и системынй таймер как-то не связаны вообще.
Цитата: Phodopus
Про порт таймера вообще не понял.
Частота и системынй таймер как-то не связаны вообще.
Однако.Я тоже сначало не понял,но оказалось что еще как связаны.Цитирую методичку по асму,которую написал наш препод
Цитата:
В состав таймера входят:
- регистр констант пересчета CR (16 разрядов).
Каналы таймера подключаются к внешним ус*тройствам при помощи трех линий:
...
CLK (CLOCK) - вход тактовой частоты;
OUT - выход таймера.
Канал 1 работает в режиме 2, (CR) = 18 и исполь*зуется для управления регенерацией памяти. Сигнал на регенерацию появляется каждые 15 мсек (Трег =1/ (1193800/18)= 15*10). Выход OUT канала 1 подключен ко входу канала 0 ПДП, который по сигналу таймера производит регенерацию памяти. Увеличе*ние значения счетчика позволяет увеличить произ*водительность процессора, однако, это может при*вести к потере данных в ОЗУ.
Микросхема таймера использует для обмена информацией следующие порты ввода/вывода:
Адрес Операция Назначение
40h запись Загрузка счетчика канала 0
чтение Чтение счетчика канала 0
41h запись Загрузка счетчика канала 1
чтение Чтение счетчика канала 1
42h запись Загрузка счетчика канала 2
чтение Чтение счетчика канала 2
43h запись Запись управляющего слова в регистр режима канала
Вот как то так.Если я правильно понял,то таким образом можно изменять частоту процессора.Вот собственно само задание:
Написать программу, перепрограммирующую частоту регенерации памяти на 2-3 единицы в сторону увеличения и уменьшения, и вычислить скорость работы процессора при каждом изменении.
Я собирался читать из 41h порта читать текущее значение константы пересчета в al,инкреминировать и так же записывать обратно.Появилось только два вопроса:
1)можно ли в сегменете bios посотреть частоту
2)если можно,то изменится ли она в процессе выполнения программы,а не после перезапуска.
Я написал какую то глупость?
Насчет таймера не уверен - это к нашим железячникам, но вот API + порты IO это глупость :)
тогда последний вопрос,если все таки у меня получится,надо же как то посмотреть частоту процессора.как это сделать?надо что б под тасм инструкция была,для .368 и 16 разрядная.
Да в общем случае частота процессора величина условная и определяется ее измерением - само число никуда не зашивалось. Так что считаешь количество тактов на еденицу времени. Время, имхо, с помощью RTC брать. Возможно полученное значение по таблице сопоставлять придется, таких деталей для +/- новых процессоров я уже не знаю.
имхо для таких целей лучше всего применить ассемблерную команду RDTSC (чтение из счетчика тактов процессора).
Увы,но реализация именно этой задачи мне нужна на ТАСМе,а он в количестве бит ограничен.регистр констант пересчета меняется нормально.а есть же какое нибудь стороннее ПО,которое может отображать тактовую частоту процессорав реал тайм?я видел такую программу,кажется она была из разряда спец ПО для материнок,но забыл как она называется.