Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Inny

[Assembler] Nieskończona pętla z opóźnieniem

inny

Najlepsza odpowiedź plx211, 03.01.2016 15:05

malo pisalem w asm, ale nieskonczona petle uzyskasz przez skoki:

infinity:
;kod
jmp infinity

co do opóźnienia, to jedyne co mi przychodzi to sprawdzanie czasu i wykonywanie odpowiedniego skoku

Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 03.01.2016 12:51

Witam. Jak wykonać pętlę w Assemblerze, która będzie nieskończona i wykonywana co 50 milisekund ?


  • +
  • -
  • 0

#2 plx211

    Wszechpomocny

  • Użytkownik

Reputacja: 231
Wszechwidzący

  • Postów:397
  • Lokalizacja:Polska
Offline

Napisano 03.01.2016 15:05   Najlepsza odpowiedź

malo pisalem w asm, ale nieskonczona petle uzyskasz przez skoki:

infinity:
;kod
jmp infinity

co do opóźnienia, to jedyne co mi przychodzi to sprawdzanie czasu i wykonywanie odpowiedniego skoku


  • +
  • -
  • 1

#3 Pan PrO

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 03.01.2016 18:05

Wpadłem na troszkę inny pomysł. Każde wykonanie pętli ma jakieś opóźnienie, czyli można zrobić tak, że po np. 100 wykonaniu petli wykonuje skok do mojej funkcji

 

oto kod:

.data

    szFmt       db  "%#08x", 0
    szColor     db  "00F0F0F0h", 0
    szTak       db  "Zgadza sie", 0

.data?

    Buf         db  12 d*p (?)

.code

    mov al, 100   ; Ustawia 100 dla al

infinity:

    inc bx        ; zwiększa wartość bx o 1

    cmp al, bx      ; porównywanie  al i bx

    je jest         ;  skok do "jest" jeśli równe

jmp infinity

jest:

    invoke  GetDC, NULL
    invoke  GetPixel, eax, 200, 200

    invoke  wsprintf, offset Buf, offset szFmt, eax
    
    cmp szColor, offset Buf

    je tak

tak:

    invoke  MessageBox, NULL, offset Buf, NULL, MB_OK

Dopiero zaczynam zabawę z assemblerem, więc chciałbym sie dowiedzieć czy czegoś tam brakuje, jest coś nieoptymalnie zrobione itd.


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: inny

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych