Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Int 21h

13K
20 февраля 2006 года
Bagk
20 / / 27.01.2006
Как использовать прерывания 2ch int 21h в дельфи?
При вызове данного прерывания программа допускает ошибку...!
3.8K
20 февраля 2006 года
Supervisor
158 / / 29.05.2005
int=0x21 - это сервис DOS, а программа, написанная в среде Delphi, предназначена для исполнения в Windows. Ну и на кой ей использовать 21-ое прерывание??
13K
20 февраля 2006 года
Bagk
20 / / 27.01.2006
Int 21 функции 2ch используется для получения системного времени,... У меня есть некий ассемблеровский отладчик,... работает под WIN,... так там всё нормально работает... Может нужно сохранить вектор прерывания,... хм...
3.8K
21 февраля 2006 года
Supervisor
158 / / 29.05.2005
Цитата:
Originally posted by Bagk
Int 21 функции 2ch используется для получения системного времени,...


Получить системное время средствами Windows API куда проще и удобнее. :)

13K
21 февраля 2006 года
Bagk
20 / / 27.01.2006
...это точ но =)... Но, сколько на это уйдёт времени?
13K
21 февраля 2006 года
Bagk
20 / / 27.01.2006
...блин,... мне нужно сделать цикл около 100мили секунд как это сделать,... Я не знаю, кроме как взять за точку опоры системное время... и отслеживать по нему 1000_ые секунды...
252
21 февраля 2006 года
koderAlex
1.4K / / 07.09.2005
Цитата:
Originally posted by Bagk
...блин,... мне нужно сделать цикл около 100мили секунд как это сделать,... Я не знаю, кроме как взять за точку опоры системное время... и отслеживать по нему 1000_ые секунды...


ктото уже про таймеры спрашивал ....
и вообще , переходи на QNX :D - там таймерные функции есть точно (и довольно точные )
кстати - когда мне не понравилась функция delay()я на
IRQ8(int70h) повесил счётчик и всё работать как надо :D .

2.9K
27 февраля 2006 года
RYM
109 / / 06.06.2005
Как ты собираешся под винду использовать прерывания дос?:)
Используй win32api - ф-я Sleep(DWORD time) - засыпание потока на time милисекунд.
13K
28 февраля 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by RYM
Как ты собираешся под винду использовать прерывания дос?:)
Используй win32api - ф-я Sleep(DWORD time) - засыпание потока на time милисекунд.



...я ещё не знаю как использовать прерывания дос в WIN. Пользоваться Функциями WIN32Api, мне не зя...
т.к они выполняются намного дольше (по времени), ... возможно я не успею принять данные в то время когда delphi будет копаться в библиотеках...=)...
вчера разговаривал с одним товарищем он сказал, что это реально только как пока не сказал... мне нужно было дамой ехать... Надеюсь сегодня завершить разговор...=)... Пишу я в WIN98... Кстате,... прежде чем писать функция, процедуру на ассемблере в Delphi, я её запускаю в некоем эмуляторе так там всё срабатывает нормально... есть предположение что ядро компилятора вполне может просто отрубать доступ на низком уровне к ресурсам.... вообщем пока не знаю,... буду пабтать дальше...

3.8K
28 февраля 2006 года
Supervisor
158 / / 29.05.2005
Цитата:
Пользоваться Функциями WIN32Api, мне не зя...
т.к они выполняются намного дольше (по времени)


А эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API исполняются, можно подумать, быстрее!!

13K
28 февраля 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by Supervisor
А эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API исполняются, можно подумать, быстрее!!



...мне трудно что либо сказать по этому поводу... т.к я ещё не профисионал в данном вопросе... но...
например... есть цикл со счетчико в 1000 операци реализованный на дельфе в нутри этого цикла принимаем данные (процедура написана на АСМ) ... вход в цикл 15:00:00:000
выход в 15:00:00:000 а если мы ещё добывим вывод полученных данных в какое нибудь memo (или например отцифровка системного времени функциями ...API)... то цикл займёт намного больше времени...
"то есть эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API возможно исполняются быстрее...

2.9K
28 февраля 2006 года
RYM
109 / / 06.06.2005
Интересно, что ты такое серьезное пишешь?
13K
01 марта 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by RYM
Интересно, что ты такое серьезное пишешь?




......да нет, не чего серьёзного,... программа для решения задач навигационных систем... так мелочь...
Просто, ещё мало владею Асмой... поэтому спотыкаюсь очень часто,... ну наверное без этого нельзя... Ладно,... пошел пыхтеть над своим детищем... =)...

324
02 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by Bagk
...мне трудно что либо сказать по этому поводу... т.к я ещё не профисионал в данном вопросе... но...
например... есть цикл со счетчико в 1000 операци реализованный на дельфе в нутри этого цикла принимаем данные (процедура написана на АСМ) ... вход в цикл 15:00:00:000
выход в 15:00:00:000 а если мы ещё добывим вывод полученных данных в какое нибудь memo (или например отцифровка системного времени функциями ...API)... то цикл займёт намного больше времени...
"то есть эмулируемые виндой сервисы DOS, которые, в конечном счете, обращаются к тем же функциям Windows API возможно исполняются быстрее...



В студенческую пору на лаб. работах замеряли скорость выполнения операций в ДОС и в режиме эмуляции ДОС под Виндой, разница оказывалась на порядок выше, не в пользу Винды.

324
02 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by AndreySar
В студенческую пору на лаб. работах замеряли скорость выполнения операций в ДОС и в режиме эмуляции ДОС под Виндой, разница оказывалась на порядок выше, не в пользу Винды.



Используя Asm, а не Win32API ты не получишь существенного вызова

13K
02 марта 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by AndreySar
Используя Asm, а не Win32API ты не получишь существенного вызова



...брр, немного не понял, что значит "не получишь существенного вызова?

324
02 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by Bagk
...брр, немного не понял, что значит "не получишь существенного вызова?



вызова [заменить на...] выигрыша

13K
02 марта 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by AndreySar
вызова [заменить на...] выигрыша



...тогда возникает дуратский вопрос, что вы подразумеваете под словом "существенного"... сотые, тысячные секунды?...

2.9K
02 марта 2006 года
RYM
109 / / 06.06.2005
Прога помоему называется WinDefender - что то связанное с администрированием и ограничением доступа к опред. папкам, файлам.Версию точно не помню, но должно быть одна из последних
2.9K
02 марта 2006 года
RYM
109 / / 06.06.2005
Цитата:
Originally posted by RYM
Прога помоему называется WinDefender - что то связанное с администрированием и ограничением доступа к опред. папкам, файлам.Версию точно не помню, но должно быть одна из последних


Блин, грубо извиняюсь,месагу не туда послал:)

324
03 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by Bagk
...тогда возникает дуратский вопрос, что вы подразумеваете под словом "существенного"... сотые, тысячные секунды?...



при задержке порядка 100 мс разницы не будет никакой

13K
03 марта 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by AndreySar
при задержке порядка 100 мс разницы не будет никакой



...При задержке скорей всего так оно и будет, но у меня нет задержки. Мне нужен цикл, "длинна которого былабы окола 100мс"...

324
03 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by Bagk
...При задержке скорей всего так оно и будет, но у меня нет задержки. Мне нужен цикл, "длинна которого былабы окола 100мс"...



А как ты собираешься делать длину около 100 мс?

13K
03 марта 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by AndreySar
А как ты собираешься делать длину около 100 мс?



...=) вот с этим вопросом я и обратился на форум....
...Я не знаю как это сделать наиболее точно и быстро!
...Дума простая, взять системное время mov ah, 2ch int 21h... запомнить содержимое dl, сделать своё дело в цикле, потом снова обратиться к mov ah, 2ch int 21h... и сравнить dl... Вот так вот "Глупенько", как ещё сделать не знаю... =(... Нужна какаято опорная величина...

324
03 марта 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by Bagk
...=) вот с этим вопросом я и обратился на форум....
...Я не знаю как это сделать наиболее точно и быстро!
...Дума простая, взять системное время mov ah, 2ch int 21h... запомнить содержимое dl, сделать своё дело в цикле, потом снова обратиться к mov ah, 2ch int 21h... и сравнить dl... Вот так вот "Глупенько", как ещё сделать не знаю... =(... Нужна какаято опорная величина...



Ты с таким же успехом можешь использовать Win32API функции, например GetSystemTime(). Чтобы не заморачиватся с проверками попробуй Sleep():

 
Код:
for(...)
{
    //time_start - получаем через GetSystemTime
    ... // Выполняем свое дело
    //time_finish - получаем через GetSystemTime

    if(time_finish - time_start < 100)
        Sleep(100 - (time_finish - time_start));
}


Погрешность порядка 5 мс
252
03 марта 2006 года
koderAlex
1.4K / / 07.09.2005
Цитата:
Originally posted by Bagk
...=) вот с этим вопросом я и обратился на форум....
...Я не знаю как это сделать наиболее точно и быстро!
...Дума простая, взять системное время 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 ..."
удачи :)

13K
03 марта 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by koderAlex
"
int 15h
ah=83h
al=0
cx:dx=длительность в микросекундах (минимум 1000
,1000мкс=1мс ) )
es:bx= адрес байта ,старший бит которого по окончанию работы счётчика будет установлен в 1"
-цитата из Зубковского "Assembler ..."
удачи :)



...int 15 83H Ждать события. Запустить таймер и установить флаг по истечении интервала... Это немного не то что мне нужно,... но всёравно спасибо!

13K
03 марта 2006 года
Bagk
20 / / 27.01.2006
Цитата:
Originally posted by AndreySar
Ты с таким же успехом можешь использовать Win32API функции, например GetSystemTime(). Чтобы не заморачиватся с проверками попробуй Sleep():

 
Код:
for(...)
{
    //time_start - получаем через GetSystemTime
    ... // Выполняем свое дело
    //time_finish - получаем через GetSystemTime

    if(time_finish - time_start < 100)
        Sleep(100 - (time_finish - time_start));
}


Погрешность порядка 5 мс



...GetSystemTime сразу обращается к kernel32 так? или есть какие то манипуляции до обращения в саму библиотеку,...? ...А так она работае довольно быстро... ^_^...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог