Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2012, 12:41   #1
Glaciuse
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 44
По умолчанию Как работает Sleep(x)?

В асм это прерывание 15h в ah 86h, в dx:cx кол-во миллисекунд.
Есть такая процедура в Borland Си: Sleep(x), как она работает?
Glaciuse вне форума Ответить с цитированием
Старый 19.04.2012, 12:50   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это функция WinAPI судя по всему.
вообще переключение потоков идет не реже чем тики системного таймера(поидее).
а так просто диспетчер потоков смотрит истекло время ожидания или нет, если не то не дает потоку квантов и все.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.04.2012, 13:10   #3
Glaciuse
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 44
По умолчанию

А можно поподробней на ассемблере?
Там ведь должна быть переменная, которая хранит кол-во миллисекунд.
Как декрементится эта переменная?
Там в цикле должен опрашиваться таймер, например тот, что у меня, работает на частоте 1193180, и максимальное число в регистре 65536, т.е. он выдает сигнал о переполнении таймера 18.2 раза в секунд 1193180/65536 (т.е. интервалы между прерываниями от таймера = 55 мсек.) Как реализованна задержка в Sleep(x), например, для 10 мсек?
Заранее спасибо.

Последний раз редактировалось Glaciuse; 19.04.2012 в 13:16.
Glaciuse вне форума Ответить с цитированием
Старый 19.04.2012, 16:24   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

http://frolov-lib.ru/books/bsp/v02/ch5_3.htm - читаем, просвещаемся..
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 19.04.2012, 18:56   #5
Glaciuse
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 44
По умолчанию

Большое спасибо!
Glaciuse вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как применить sleep только для form1 scroyler Работа с сетью в Delphi 15 11.02.2012 22:54
Аналог Sleep() Larboss Общие вопросы Delphi 6 29.10.2011 02:21
Sleep() работает не точно, как точнее 8Observer8 Win Api 13 24.04.2011 19:47
Как заменить sleep в потоке? чтобы получить задержку 5 мили Dasverd2010 Общие вопросы Delphi 13 07.09.2010 14:29
Альтернатива sleep Zuzlan Общие вопросы Delphi 2 01.11.2007 01:44