информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Spanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 ФБР нашла русский след в атаках... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
re: есть сомнения... 26.10.01 20:55  Число просмотров: 1010
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Как написать корректный delay,используя таймер(4тобы
> на
> > разных компах работал). Я написал 4то-то вроде:
> > delay proc
> > push bx
> > push cx
> > push dx
> > xor ah,ah
> > int 1ah
> > xchg bx,dx
> > add bx,0Ah
> > @comp: int 1ah
> > cmp dx,bx
> > jna @comp
> > pop dx
> > pop cx
> > pop bx
> > retn
> > delay endp
> > Но ЕСЛИ я это подгружу к pas-файлу,то полу4ится о4ень
> долго
> > (и это с add bx,0Ah -то?!)
>
> Единственное, что может быть при твоем запуске произошло
> переполнение таймера и он обнулился, а ты этого не
> проверяешь
> в результате пришлось ждать очень долго

хм я не вижу осбой опасности в переполнении регистров int 1ah(cx:dx)
пускай будет ноль-к ниму все равно + зна4. 0Ah и процедура
будет проверять условие выхода(лишнее тому подтверждение - это
работоспособнось file'a compiling under tasm)

может я 4е не понял?



<programming>
[ASM]-Delay с помощью timer'a. 26.10.01 17:38  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как написать корректный delay,используя таймер(4тобы на разных компах работал). Я написал 4то-то вроде:
delay proc
push bx
push cx
push dx
xor ah,ah
int 1ah
xchg bx,dx
add bx,0Ah
@comp: int 1ah
cmp dx,bx
jna @comp
pop dx
pop cx
pop bx
retn
delay endp
Но ЕСЛИ я это подгружу к pas-файлу,то полу4ится о4ень долго
(и это с add bx,0Ah -то?!)
[ASM]-Можно юзануть и Int 15h... 26.10.01 22:13  
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> Как написать корректный delay,используя таймер(4тобы на
> разных компах работал). Я написал 4то-то вроде:
> delay proc
> xor ah,ah
> int 1ah
> xchg bx,dx
> add bx,0Ah
> @comp: int 1ah
> cmp dx,bx
> jna @comp
> Но ЕСЛИ я это подгружу к pas-файлу,то полу4ится о4ень долго
> (и это с add bx,0Ah -то?!)

Для *.PAS я могу посоветовать int 15h - просто и сердито. К тому же можно
задержку в ~100мкс (!) сделать. Пример ниже.
Недостатки: почему-то не работает под NT(возвращает CF- ошибка, но хоть
не виснет ;) Под 98 все пучком.
У сервиса int 15 есть ф-ция передачи управления на дальний адрес после
заданного числа мкс. Очень удобно для разных там девайсов.
{************************TIMER FUNCTIONS -1**************************}
PROCEDURE DLY(MSEC:WORD);
BEGIN
ASM
MOV AX,MSEC
MOV DX,1000
MUL DX
MOV CX,DX
MOV DX,AX
MOV AH,86H
INT 15H
END;
END;
PROCEDURE SOUND_ON(FREC:WORD);
BEGIN
ASM
MOV AL,0B6h
OUT 43h,AL
MOV AX,4F38h
MOV DX,14h
DIV FREC
OUT 42h,AL
MOV AL,AH
OUT 42h,AL
IN AL,61h
OR AL,3
OUT 61h,al
END;
END;
PROCEDURE SOUND_OFF;
BEGIN
ASM
IN AL,61h
AND AL,11111100b
OUT 61h,AL
END;
END;
Begin
{Все как в нормальном ПАСЕ}

Sound_On(200); {Вместо Sound}
Dly(2000); {Вместо Delay}
Sound_Off; {Вмсето NoSound}

End.
[ASM]-Попробуй так 26.10.01 21:08  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Delay           proc    near

                push    ds
                xor     ax,ax
                mov     ds,ax
                sti
@@2:   mov     al,ds:46Ch
@@1:   cmp     al,ds:46Ch
                je      @@1
                loop    @@2
                pop     ds
                ret
Delay           endp

; задержка на 10 с
                mov     cx,10*18
                call    Delay

---
[ASM]-Delay с помощью timer'a. Вроде все верно. 26.10.01 19:26  
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
> Как написать корректный delay,используя таймер(4тобы на
> разных компах работал). Я написал 4то-то вроде:
> delay proc
> push bx
> push cx
> push dx
> xor ah,ah
> int 1ah
> xchg bx,dx
> add bx,0Ah
> @comp: int 1ah
> cmp dx,bx
> jna @comp
> pop dx
> pop cx
> pop bx
> retn
> delay endp
> Но ЕСЛИ я это подгружу к pas-файлу,то полу4ится о4ень долго
> (и это с add bx,0Ah -то?!)

Единственное, что может быть при твоем запуске произошло переполнение таймера и он обнулился, а ты этого не проверяешь
в результате пришлось ждать очень долго
re: есть сомнения... 26.10.01 20:55  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Как написать корректный delay,используя таймер(4тобы
> на
> > разных компах работал). Я написал 4то-то вроде:
> > delay proc
> > push bx
> > push cx
> > push dx
> > xor ah,ah
> > int 1ah
> > xchg bx,dx
> > add bx,0Ah
> > @comp: int 1ah
> > cmp dx,bx
> > jna @comp
> > pop dx
> > pop cx
> > pop bx
> > retn
> > delay endp
> > Но ЕСЛИ я это подгружу к pas-файлу,то полу4ится о4ень
> долго
> > (и это с add bx,0Ah -то?!)
>
> Единственное, что может быть при твоем запуске произошло
> переполнение таймера и он обнулился, а ты этого не
> проверяешь
> в результате пришлось ждать очень долго

хм я не вижу осбой опасности в переполнении регистров int 1ah(cx:dx)
пускай будет ноль-к ниму все равно + зна4. 0Ah и процедура
будет проверять условие выхода(лишнее тому подтверждение - это
работоспособнось file'a compiling under tasm)

может я 4е не понял?



Voobcheto dlia takih celei ispolzuet sytemnye resursy. 26.10.01 22:54  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Delay-sytemnye resursy. 27.10.01 00:57  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
если можно чуть подробней.
Delay-sytemnye resursy. 27.10.01 05:16  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
> если можно чуть подробней.
Esli s tochnostu do ms togda SetTimer()

esli nado eche glubzhe kopnut` to vse zavisit ot Skorosti processora i nado ispolzovat`
QueryPerformanceCounter()
QueryPerformanceFrequency()
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach