Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Эталон времени в DOS-сесии NT/XP, замена int15h нужна!!!! 
:(
    Опции темы
Ruterian
Дата 13.10.2004, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 9.1.2004
Где: Вязьма, Минск

Репутация: нет
Всего: нет



Необходимо написать процедуру, которая вызывала бы задержку 5 мс, независимо от тактовой частоты CPU и операционной системы (как известно, в виртуальном режиме DOS-окна NT/XP int15h работает некорректно). У кого какие идеи? :-)
PM MAIL WWW ICQ   Вверх
oleg1973
Дата 13.10.2004, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 2
Всего: 34



на то он и виртуальный режим
не думаю что там можно этого добится


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
xach
Дата 22.10.2004, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



А как насчёт VerticalRetrace???
Я правда не знаю сколько это весит времени, но уверен, что
таким образом можно не плохо синхронизировать программу, т.к.
на всех компах(с лучевыми монитором) код приведённый ниже
даёт стабильную паузу...

Код
WaitRetrace:                  ;Псевдо процедура
mov dx,3dah
@VS:
in al,dx
and al,8
jz @VS
ret


:)
PM MAIL   Вверх
Akina
Дата 22.10.2004, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



в виртуальном режиме DOS-окна NT/XP любая временнАя задержка будет работать некорректно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
xach
Дата 22.10.2004, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



Как насчёт вычислений FPU
Они-то выполняются железно, в независимости от частоты...
Или я не прав?
PM MAIL   Вверх
Akina
Дата 22.10.2004, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



xach
А связь-то какая? MicroTimer конечно есть - но вот в ДОС-окне...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Girder
Дата 22.10.2004, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Попробуй... мож поможет - 100 лет уже Dos проги в NT-ах не запускал :)

1)Замени(любым удобным для тебя способом) обработчик прерывания Int 08 на свой... к примеру такой :)
Код
FlagTime dw ?
int08 proc far
inc word ptr cs:[FlagTime]
iret
int08 endp

2)Выстави нужную частоту
Код
;**********************************
;Установка частоты вызова INT 08  *
;**********************************
Mnz: push ax
mov  al,34h
out  43h,al
mov  ax,174Dh  ;Твоя частота :)
;Формула:Hz=1193180/AX=...(Hz)
;Расчет AX по известной частоте:AX=1193180/Hz
out  40h,al
mov  al,ah
out  40h,al
pop  ax
ret

3)Где надо тебе будет задержка... просто проверяй состояние FlagTime на изменение... можеш и сам его менять а потом проверять...

PS:Под Nt не проверял... :)
ИМХО: В любом случаи... точняк чтоб 5 мс... - не получится :)

Это сообщение отредактировал(а) Girder - 22.10.2004, 14:42


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Гость_xach
Дата 22.10.2004, 18:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Akina
Я имел ввиду вычисления сопроцессора, а не какой-то его таймер...
:hmmm
  Вверх
Атос
Дата 6.11.2004, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 11.9.2004
Где: Екатеринбург

Репутация: нет
Всего: нет



используй оп-код RDTSC (на всех пентюхах есть)

в принципе по нему очень неплохо можно синхронизироваться...

вопрос только в том, чтобы дали вообще процвремя задаче...
если же дают (со скрипом smile), то, предварительно замерив по двум замерам RDTSC и зная время между ними, можно вычислить частоту процессора (а это константа - ибо есть генератор тактов)... и в цикле ты сможешь поймать 5 мс задержку с точностью до нескольких сотых - тысячных микросекунды в VM под виндами.... А если же делаешь под ДОСом без резидентов или к примеру под VxWorks smile то добьешься редкостной точности... все уже зависит от кол-ва немаскируемых прерываний и скоростьи самого проца smile
PM MAIL ICQ   Вверх
oleg1973
Дата 7.11.2004, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 2
Всего: 34



Атос
вся фигня что тайминг на разных процах разный
к примеру NOP на 286 будет 5 тактов а на пне про 2 такта
таким макаром RDTSC чущ покажет


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Ruterian
Дата 22.2.2005, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 9.1.2004
Где: Вязьма, Минск

Репутация: нет
Всего: нет



проблема давно успешно решена тут
http://forum.vingrad.ru/index.php?showtopic=42654
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.