Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 01:29   #1
nekxxtoxxx
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 3
По умолчанию Помогите. не могу разобраться с таймером

я взял чужую прогу, немогу понять, как работает таймер. помогите

в начале проги:
mov ah,2ch
int 21h
mov [time],dl

сам таймер:
proc timer
mov ah,2ch
int 21h
cmp dl,[time]
je end_timer
mov [time],dl
delay:
mov ah,2ch
int 21h
cmp dl,[time]
je delay
mov [time],dl
end_timer:
ret
endp
объясните, как этот процесс замедляет выполнение программы, чтобы я мог преподу объяснить плиз.
если нужно, я исходник скину
nekxxtoxxx вне форума Ответить с цитированием
Старый 18.06.2009, 02:02   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Код:
    mov ah,2ch
    int 21h             ; получаем текущее время 
    mov [time],dl     ; сохраняем кол-во сотых долей секунды

proc timer
    mov ah,2ch
    int 21h            ; получаем еще раз текущее время 
    cmp dl,[time]    ; сравниваем полученное со старым
    je end_timer     ; если совпадает, то выходим. Почему именно так я не знаю возможно ошибка.
    mov [time],dl    ; сохраняем 
delay:              ;этот цикл будет выполнятся, пока не закончится текущие 0,04 с
    mov ah,2ch
    int 21h         ; получаем время
    cmp dl,[time]   ; если совпадает со старым
    je delay           ; то повторяем.
    mov [time],dl      ; снова сохраняем и выходим
end_timer:
    ret
endp
Поскольку системные часы имеют частоту 18.2 тиков в секунду (интервал 55мс), DL имеет точность 0.04 сек.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 18.06.2009 в 02:07.
Goodwin98 вне форума Ответить с цитированием
Старый 18.06.2009, 02:05   #3
nekxxtoxxx
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 3
По умолчанию

а как сделать задержку намного больше?
nekxxtoxxx вне форума Ответить с цитированием
Старый 18.06.2009, 02:15   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Переделывать и усложнять не буду. То же самое, но ожидать будет окончания текущей секунды.
Код:
proc timer
    mov ah,2ch
    int 21h            ; получаем текущее время 
    mov [time],dh    ; сохраняем 
delay:              ;этот цикл будет выполнятся, пока не закончится текущая секунда
    mov ah,2ch
    int 21h         ; получаем время
    cmp dh,[time]   ; если совпадает со старым
    je delay           ; то повторяем.
    mov [time],dh      ; снова сохраняем и выходим
end_timer:
    ret
endp
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 18.06.2009, 03:16   #5
nekxxtoxxx
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 3
По умолчанию

а есть какие-нить другие варианты задержек?
nekxxtoxxx вне форума Ответить с цитированием
Старый 18.06.2009, 11:35   #6
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Ну например цикл в цикле
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 18.06.2009, 12:47   #7
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

например по счетчику таймера
0040h:006Ch счетчик прерываний таймера BIOS
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться Var17 Общие вопросы Delphi 6 27.03.2010 01:21
Помогите с таймером PROFI_I Компоненты Delphi 7 08.01.2009 20:51
Помогите, плз, разобраться с таймером Ya_Nika Общие вопросы C/C++ 3 11.03.2008 07:58