Страница 1 из 2
Как сделать задержку в несколько секунд?
Добавлено: 30 окт 2004, 18:16
Vano
Не знаю с помощью какого вектора прерываний можно сделать задержку по времени. Подскажите кто знает!
Добавлено: 30 окт 2004, 20:42
Andy
Формирование задержки - ah = 86h, int 15h
Код: Выделить всё
Вход:
ah = 86h
cx:dx = длительность задержки в микросекундах (cx - старшее слово)
Выход:
al = маска в регистре управления прерываниями (не буду подробно)
Флаг CF = 0 если задержка выполнена и CF = 1 если таймер занят
Таким образом задержка например на 10 милисекунд:
Добавлено: 02 ноя 2004, 16:47
Vano
Я сделал так, но у меня всё время CF=1. Чё так не пойму??

Добавлено: 02 ноя 2004, 23:36
Andy
Я сделал так, но у меня всё время CF=1. Чё так не пойму??
Потому что из под винды наверное запускаешь. А винда видимо еще и ХР какая нибудь... Запусти из ДОСа
Добавлено: 03 ноя 2004, 10:42
Vano
А можно ли как-то это сделать из-под Windows?
Добавлено: 03 ноя 2004, 11:07
Romeo
Тогда делай виндовый экзэшник и используй для зажержки таймер. Ключевые слова для поиска в MSDN: SetTimer и KillTimer.
Добавлено: 03 ноя 2004, 11:18
Vano
Моё приложение написано на 16-разрядном ассемблере(Tasm), а там нет таких команд.
Добавлено: 03 ноя 2004, 11:55
Romeo
Понимаешь в чём проблема. Если ты пишешь на 16-ти разрядном TASM, то запускай эту программу на 16-ти разрядных операционных системах аля DOS, Win 3/3.11 :) (на самом деле всё будет правильно работать и на Windows 95/98). Если же ты используешь современную операционную систему (старше либо равно Windows ME), то будь добр - обзаведись пристойным 32-битным компилятором (MASM, WASM и т.д.). Не бывать кондиционеру в запорожце :)
Добавлено: 03 ноя 2004, 17:36
Vano
Попробовал запустить прогу под DOSом всё равно никакой задержки не получилось

Добавлено: 03 ноя 2004, 17:44
Romeo
Либо DOS не натоящий (например эмуляция на Windows XP/2000), либо напартачил что-то.