Вечный таймер с помощью нескольких команд

Тема в разделе "WASM.BEGINNERS", создана пользователем Rihter, 26 апр 2006.

  1. Rihter

    Rihter New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2006
    Сообщения:
    76
    Не используя не одной API-ф-ций. Блин очень нужно?
     
  2. Marazm

    Marazm Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    95
    Rihter

    а что такое вечный таймер?
    Код (Text):
    1. jmp $
    ?? не таймер, но вычный и без API:))
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Вызывать в цикле инструкцию rdtsc, если я правильно угадал о чём вопрос.
     
  4. Rihter

    Rihter New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2006
    Сообщения:
    76
    Marazm





    Что то вроде Loop

    Но что бы было с задержкой 1 second.

    Например



    Metka

    ECX = ???

    Мои действий...

    Loop Metka



    Но Loop не подойдет...
     
  5. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    А почему Loop не подходит? Уточни тогда постановку задачи.
     
  6. Marazm

    Marazm Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    95
    Rihter

    Батенька, да вы ленивый совсем. Что мешает заглянуть в исходники того же menuet-os?
    Код (Text):
    1.  
    2. ; READ TSC / SECOND
    3.         mov   esi,boot_tsc
    4.         call  boot_log
    5.         call  _rdtsc
    6.         mov   ecx,eax
    7.         mov   esi,250               ; wait 1/4 a second
    8.         call  delay_ms
    9.         call  _rdtsc
    10.         sub   eax,ecx
    11.         shl   eax,2
    12.         mov   [0xf600],eax          ; save tsc / sec
    13.  
    14. ;...
    15. delay_ms:     ; delay in 1/1000 sec
    16.         push  eax
    17.         push  ecx
    18.    
    19.         mov   ecx,esi
    20.         imul  ecx,66
    21.    
    22.         in    al,0x61
    23.         and   al,0x10
    24.         mov   ah,al
    25.         cld
    26.    
    27.  cnt1:  in    al,0x61
    28.         and   al,0x10
    29.         cmp   al,ah
    30.         jz    cnt1
    31.    
    32.         mov   ah,al
    33.         loop  cnt1
    34.    
    35.         pop   ecx
    36.         pop   eax
    37.    
    38.         ret
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Rihter

    Таки правильно угадал. На этом форуме со временем можно стать профессиональным телепатом ;)
     
  8. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    Только загруженность процессора по-моему от этого всё равно страдает. У меня под MenuetOs в System Zone 1 быстро повышается температура, до перегрева процессора не далеко. Если играть в игры, такую же хрень словить можно. А при обычных условиях в Windows такого нет.
     
  9. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    В Windows они, падло, hlt в отдельный цикл ставят.

    Вот температура и не повышается.