Задержка

  • Автор темы XIII
  • Дата начала
Статус
Закрыто для дальнейших ответов.
X

XIII

#1
Помогите, пожалуйста, написать процедуру задержки вмилисекундах. Желательно на Ассемблере.

Заранее спасибо всем ответившим Leshiy_XIII
 
?

????

#2
Если использовать WinAPI, то:
QueryPerformanceCounter
The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter.

Syntax

Код:
BOOL QueryPerformanceCounter(   

 LARGE_INTEGER *lpPerformanceCount
);
Parameters

lpPerformanceCount
[out] Pointer to a variable that receives the current performance-counter value, in counts.

Return Value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.


Remarks

On a multiprocessor computer, it should not matter which processor is called. However, you can get different results on different processors due to bugs in the basic input/output system (BIOS) or the hardware abstraction layer (HAL). To specify processor affinity for a thread, use the SetThreadAffinityMask function.

QueryPerformanceFrequency
The QueryPerformanceFrequency function retrieves the frequency of the high-resolution performance counter, if one exists. The frequency cannot change while the system is running.

Syntax

Код:
BOOL QueryPerformanceFrequency(   

 LARGE_INTEGER *lpFrequency
);
Parameters

lpFrequency
[out] Pointer to a variable that receives the current performance-counter frequency, in counts per second. If the installed hardware does not support a high-resolution performance counter, this parameter can be zero.

Return Value

If the installed hardware supports a high-resolution performance counter, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError. For example, if the installed hardware does not support a high-resolution performance counter, the function fails.
 
X

XIII

#3
<!--QuoteBegin-????+9:01:2005, 18:53 -->
<span class="vbquote">(???? @ 9:01:2005, 18:53 )</span><!--QuoteEBegin-->Если использовать WinAPI, то...[/quote]
Премного благодарен!
 
?

????

#4
Если на ассемблере под 386+, то при известной частоте процессора можно использовать комманду rdtsc
Примеры обратные твоей задаче (рассчёт частоты) можно посмотреть тут 1 2 3 ...
 
D

Dico

#5
;А вот задержка до нажатия любой клавиши
CSEG segment
org 100h
Begin:
;Пауза (нажмите любой символ)
mov ah, 10h
int 16h

;основная часть пр-мы

;Завершение программы
mov ah, 04Ch
int 21h
CSEG ends
end Begin
 
X

XIII

#6
Еще раз спасибо, очень выручили меня. :) А за одинаковые топики, извините, пожалуйста, - очень нужно было.
 
M

MASSER

#7
Какую минимальную длительность самой короткой задержки можно получить из под Windows?
 
X

XIII

#8
Поскольку кварцевый генератор подключенный к таймеру, генерирует такты с периодом, примерно 0,840336 мкс, то вряд ли удастся сделать задержку короче. Да и зачем?
 
Статус
Закрыто для дальнейших ответов.