Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
kefir Гость
|
Добавлено: Пн Июн 10 2002 01:19 Заголовок сообщения: как оформить задержку на асссемблере? |
|
|
пишу прогу под дос(драйвер для своей бегущей строки) нужно оформить задержку порядка 0,5 сек. mov cx,0ffffh Wait: loop wait этого хватает на мало!!! поэтому не предлагать! |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
FUKS
Зарегистрирован: 14.04.2002 Сообщения: 148 Откуда: Москва
|
Добавлено: Пн Июн 10 2002 04:42 Заголовок сообщения: Re: как оформить задержку на асссемблере? |
|
|
Если при работе программы не отжидается прерываний кроме как от системного таймера, то в цикл вставляется команда hlt, а счётчик заряжается количеством тиков по 1/18.2 секунды. Если же в процессе юзер мышку гоняет, клавиатуру топчет и т.п., тогда по-грамотному надо - либо перехватывать прерывание 1c и считать попадания в обработчик, либо анализировать двойное слово по адресу 0:46ch (счётчик тиков) и учитывать флаг (1 байт) по адресу 0:470h (переход через полночь). |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Valera Гость
|
Добавлено: Пн Июн 10 2002 04:44 Заголовок сообщения: А если 0xFFFF раз вызвать цикл? (+) |
|
|
Но такая задержка будет зависеть от машины. Лучше обращаться к какому-нибудь порту в цикле. Или где-то по адресам 0:400- пишется состояние счетчика тиков, 1/52 сек. Или прерываение от таймера 1/52 сек обрабатывай. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Valera Гость
|
Добавлено: Пн Июн 10 2002 04:46 Заголовок сообщения: Сорри, правильно читать "FUKS 10-06-2002 05:42" - давно это было, забыл (-) |
|
|
- |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Roman_2002
Зарегистрирован: 21.05.2002 Сообщения: 56 Откуда: Львов
|
Добавлено: Пн Июн 10 2002 10:26 Заголовок сообщения: Re: как оформить задержку на асссемблере? |
|
|
Если процессор с кешем всех уровней то этот номер не пройдет. Можеш попробывать
mov dx, 0FFFFh mov cx, ???? _wait: out dx, al ; приблизительно 1-1,5 мкс занимает ; но по NT непроканает!!! loop _wait |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
kefir Гость
|
Добавлено: Вт Июн 11 2002 00:54 Заголовок сообщения: Re: как оформить задержку на асссемблере? |
|
|
Да это простая прога под дос, которая выводит ннформацию в 378 порт... и ее нужно немного задержать, для того чтобы регистр успел ее записать! ) есть ли какая-нть ф-я дос для задержки? |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
FUKS
Зарегистрирован: 14.04.2002 Сообщения: 148 Откуда: Москва
|
Добавлено: Вт Июн 11 2002 03:26 Заголовок сообщения: Re: как оформить задержку на асссемблере? |
|
|
>>Да это простая прога под дос, которая выводит ннформацию в 378 порт... и ее нужно немного задержать, для того чтобы регистр успел ее записать! )
Блин-переблин, при чём тут задержка, готовность порта анализировать надо! А вообще-то программа инициализирует COM-порт или сразу в 378 гонит? Наверно таки инициализирует, должна знать, что готовность к передаче (к записи в порт вывода) - 5-й бит (маска 20h) в порту 3fdh. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Uraa Гость
|
Добавлено: Пн Июн 17 2002 00:23 Заголовок сообщения: Re: как оформить задержку на асссемблере? |
|
|
Мужик Ты доки читал? Ты в курсе, что после 486(superscalar) такая задержка Интелу в жопу? |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
|