Int 21h
При вызове данного прерывания программа допускает ошибку...!
Int 21 функции 2ch используется для получения системного времени,...
Получить системное время средствами Windows API куда проще и удобнее. :)
...блин,... мне нужно сделать цикл около 100мили секунд как это сделать,... Я не знаю, кроме как взять за точку опоры системное время... и отслеживать по нему 1000_ые секунды...
ктото уже про таймеры спрашивал ....
и вообще , переходи на QNX :D - там таймерные функции есть точно (и довольно точные )
кстати - когда мне не понравилась функция delay()я на
IRQ8(int70h) повесил счётчик и всё работать как надо :D .
Используй win32api - ф-я Sleep(DWORD time) - засыпание потока на time милисекунд.
Как ты собираешся под винду использовать прерывания дос?:)
Используй win32api - ф-я Sleep(DWORD time) - засыпание потока на time милисекунд.
...я ещё не знаю как использовать прерывания дос в WIN. Пользоваться Функциями WIN32Api, мне не зя...
т.к они выполняются намного дольше (по времени), ... возможно я не успею принять данные в то время когда delphi будет копаться в библиотеках...=)...
вчера разговаривал с одним товарищем он сказал, что это реально только как пока не сказал... мне нужно было дамой ехать... Надеюсь сегодня завершить разговор...=)... Пишу я в WIN98... Кстате,... прежде чем писать функция, процедуру на ассемблере в Delphi, я её запускаю в некоем эмуляторе так там всё срабатывает нормально... есть предположение что ядро компилятора вполне может просто отрубать доступ на низком уровне к ресурсам.... вообщем пока не знаю,... буду пабтать дальше...
т.к они выполняются намного дольше (по времени)
А эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API исполняются, можно подумать, быстрее!!
А эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API исполняются, можно подумать, быстрее!!
...мне трудно что либо сказать по этому поводу... т.к я ещё не профисионал в данном вопросе... но...
например... есть цикл со счетчико в 1000 операци реализованный на дельфе в нутри этого цикла принимаем данные (процедура написана на АСМ) ... вход в цикл 15:00:00:000
выход в 15:00:00:000 а если мы ещё добывим вывод полученных данных в какое нибудь memo (или например отцифровка системного времени функциями ...API)... то цикл займёт намного больше времени...
"то есть эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API возможно исполняются быстрее...
Интересно, что ты такое серьезное пишешь?
......да нет, не чего серьёзного,... программа для решения задач навигационных систем... так мелочь...
Просто, ещё мало владею Асмой... поэтому спотыкаюсь очень часто,... ну наверное без этого нельзя... Ладно,... пошел пыхтеть над своим детищем... =)...
...мне трудно что либо сказать по этому поводу... т.к я ещё не профисионал в данном вопросе... но...
например... есть цикл со счетчико в 1000 операци реализованный на дельфе в нутри этого цикла принимаем данные (процедура написана на АСМ) ... вход в цикл 15:00:00:000
выход в 15:00:00:000 а если мы ещё добывим вывод полученных данных в какое нибудь memo (или например отцифровка системного времени функциями ...API)... то цикл займёт намного больше времени...
"то есть эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API возможно исполняются быстрее...
В студенческую пору на лаб. работах замеряли скорость выполнения операций в ДОС и в режиме эмуляции ДОС под Виндой, разница оказывалась на порядок выше, не в пользу Винды.
В студенческую пору на лаб. работах замеряли скорость выполнения операций в ДОС и в режиме эмуляции ДОС под Виндой, разница оказывалась на порядок выше, не в пользу Винды.
Используя Asm, а не Win32API ты не получишь существенного вызова
Используя Asm, а не Win32API ты не получишь существенного вызова
...брр, немного не понял, что значит "не получишь существенного вызова?
...брр, немного не понял, что значит "не получишь существенного вызова?
вызова [заменить на...] выигрыша
вызова [заменить на...] выигрыша
...тогда возникает дуратский вопрос, что вы подразумеваете под словом "существенного"... сотые, тысячные секунды?...
Прога помоему называется WinDefender - что то связанное с администрированием и ограничением доступа к опред. папкам, файлам.Версию точно не помню, но должно быть одна из последних
Блин, грубо извиняюсь,месагу не туда послал:)
...тогда возникает дуратский вопрос, что вы подразумеваете под словом "существенного"... сотые, тысячные секунды?...
при задержке порядка 100 мс разницы не будет никакой
при задержке порядка 100 мс разницы не будет никакой
...При задержке скорей всего так оно и будет, но у меня нет задержки. Мне нужен цикл, "длинна которого былабы окола 100мс"...
...При задержке скорей всего так оно и будет, но у меня нет задержки. Мне нужен цикл, "длинна которого былабы окола 100мс"...
А как ты собираешься делать длину около 100 мс?
А как ты собираешься делать длину около 100 мс?
...=) вот с этим вопросом я и обратился на форум....
...Я не знаю как это сделать наиболее точно и быстро!
...Дума простая, взять системное время mov ah, 2ch int 21h... запомнить содержимое dl, сделать своё дело в цикле, потом снова обратиться к mov ah, 2ch int 21h... и сравнить dl... Вот так вот "Глупенько", как ещё сделать не знаю... =(... Нужна какаято опорная величина...
...=) вот с этим вопросом я и обратился на форум....
...Я не знаю как это сделать наиболее точно и быстро!
...Дума простая, взять системное время mov ah, 2ch int 21h... запомнить содержимое dl, сделать своё дело в цикле, потом снова обратиться к mov ah, 2ch int 21h... и сравнить dl... Вот так вот "Глупенько", как ещё сделать не знаю... =(... Нужна какаято опорная величина...
Ты с таким же успехом можешь использовать Win32API функции, например GetSystemTime(). Чтобы не заморачиватся с проверками попробуй Sleep():
{
//time_start - получаем через GetSystemTime
... // Выполняем свое дело
//time_finish - получаем через GetSystemTime
if(time_finish - time_start < 100)
Sleep(100 - (time_finish - time_start));
}
Погрешность порядка 5 мс
...=) вот с этим вопросом я и обратился на форум....
...Я не знаю как это сделать наиболее точно и быстро!
...Дума простая, взять системное время mov ah, 2ch int 21h... запомнить содержимое dl, сделать своё дело в цикле, потом снова обратиться к mov ah, 2ch int 21h... и сравнить dl... Вот так вот "Глупенько", как ещё сделать не знаю... =(... Нужна какаято опорная величина...
"
int 15h
ah=83h
al=0
cx:dx=длительность в микросекундах (минимум 1000
,1000мкс=1мс ) )
es:bx= адрес байта ,старший бит которого по окончанию работы счётчика будет установлен в 1"
-цитата из Зубковского "Assembler ..."
удачи :)
"
int 15h
ah=83h
al=0
cx:dx=длительность в микросекундах (минимум 1000
,1000мкс=1мс ) )
es:bx= адрес байта ,старший бит которого по окончанию работы счётчика будет установлен в 1"
-цитата из Зубковского "Assembler ..."
удачи :)
...int 15 83H Ждать события. Запустить таймер и установить флаг по истечении интервала... Это немного не то что мне нужно,... но всёравно спасибо!
Ты с таким же успехом можешь использовать Win32API функции, например GetSystemTime(). Чтобы не заморачиватся с проверками попробуй Sleep():
{
//time_start - получаем через GetSystemTime
... // Выполняем свое дело
//time_finish - получаем через GetSystemTime
if(time_finish - time_start < 100)
Sleep(100 - (time_finish - time_start));
}
Погрешность порядка 5 мс
...GetSystemTime сразу обращается к kernel32 так? или есть какие то манипуляции до обращения в саму библиотеку,...? ...А так она работае довольно быстро... ^_^...