Thread Status:
Not open for further replies.
  1. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    люди как реализовать что-то вроде цикла на асме? типа если один регистр больше другого, то перейти на метку, допуситм а1?
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Читай http://ha.hoha.ru/a/Assembler/stats12/stat.php
     
    _________________________
  3. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    437
    Reputations:
    90
    cmp ax, bx
    jg a1
    a1: ......
     
    1 person likes this.
  4. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    во. резпект. спасибо
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Берешь Fasm и юзаешь макрос цикла ;)
     
  6. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    slesh, не катит. Из-за таких вот советов, люди начинают ассоциировать ассемблер с каким-то макро-извращением. Теряется красота... но это мое мнение.
     
    1 person likes this.
  7. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Ni0x я знаю. Но судя по задаваемому вопрос топикстартер не читал описание инструкций j* jn* я просто предлогаю альтернативное решение.
    я конечно сам не сторонник макросов, но бывает легче написать в макросном виде нежели в обычном.
    типа условие (ecx<>0 and ((ecx>10) and (eax<20) or (ecx>100) and (eax<200) or (ecx>1000) or (eax<2000)) легче в виде макроса написать.
     
  8. grinay

    grinay IQ- 137%

    Joined:
    15 Jun 2004
    Messages:
    409
    Likes Received:
    174
    Reputations:
    305
    Цикл издревне в сияруси юзается посредством регистра cx-сейчас ecx
    Делается метка цикла например
    loop1:
    и далее идет тело цикла
    например
    cmp eax,0
    jz end_loop;перейти если eax=0
    inc eax;инкремент eax к примеру
    loop loop1;как дойдет до этого места декриментируется ecx и переход обратно на метку loop1 и вот тебе и весь цикл
    П.С.В ecx должно быть нужное тебе значение.Тоесть сколько циклов например 10=10h
     
  9. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Вообще говоря использовать можно хоть ESP как счетчик.. если сместо loop loop1 поставить dec esp / jnz loop1

    Поправка - если в ECX был ноль, цикл выполнится 4294967295 раз.

    ЗЫ. Топикстартеру - читать описание инструкций loop, jmp, j*/jn*.
    Тема закрыта
     
Thread Status:
Not open for further replies.