Тормозит Ольга перед DIV

Discussion in 'WASM.BEGINNERS' started by MetAlic, Sep 12, 2009.

  1. MetAlic

    MetAlic New Member

    Blog Posts:
    0
    Joined:
    Aug 13, 2009
    Messages:
    111
    Всем доброго вечера.

    Пишу простой код, включаю Олли. Далее проблема. Код:
    mov eax,53
    add eax,8
    mov ecx,2
    div ecx
    push eax



    Проблема в том, что программа не трассируется после " mov ecx,2". Если деление заменить\убрать - все нормально. В чем дело?

    Заранее спасибо.
     
  2. intel_x128

    intel_x128 New Member

    Blog Posts:
    0
    Joined:
    May 17, 2009
    Messages:
    345
    занули регистр edx

    mov eax,53
    add eax,8
    mov ecx,2
    xor edx, edx
    div ecx
    push eax
     
  3. PSR1257

    PSR1257 New Member

    Blog Posts:
    0
    Joined:
    Nov 30, 2008
    Messages:
    933
  4. VictorV79

    VictorV79 New Member

    Blog Posts:
    0
    Joined:
    Mar 26, 2009
    Messages:
    130
    Поставь определение размера

    div dword ptr ebx
     
  5. PSR1257

    PSR1257 New Member

    Blog Posts:
    0
    Joined:
    Nov 30, 2008
    Messages:
    933
    doubbled. sorry
     
  6. VictorV79

    VictorV79 New Member

    Blog Posts:
    0
    Joined:
    Mar 26, 2009
    Messages:
    130
    div dword ptr ebx
    Аааа, левое написал
    sorry
     
  7. VictorV79

    VictorV79 New Member

    Blog Posts:
    0
    Joined:
    Mar 26, 2009
    Messages:
    130
    обнуляем регистр edx для того, что бы было куда поставить значение после запятой



    intel_x128
    подскажешь по каким материалам учился
    толково и просто всё обьесняешь
     
  8. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A, p.263
     
  9. VictorV79

    VictorV79 New Member

    Blog Posts:
    0
    Joined:
    Mar 26, 2009
    Messages:
    130
    где взять описание по Русски
    про эти ELSE IF
    вроде понятно
    но по сути мне лично не понятно
    как с этим работать
    Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A
     
  10. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    VictorV79
    Гуглить не пробовали ?
     
  11. VictorV79

    VictorV79 New Member

    Blog Posts:
    0
    Joined:
    Mar 26, 2009
    Messages:
    130
    просто когда самостоятельно что то разбираешь
    бывают моменты через одно место
    и возникает вопрос
    код работает, но иногда строится бредово

    Да Гуглядь нужно
     
  12. MetAlic

    MetAlic New Member

    Blog Posts:
    0
    Joined:
    Aug 13, 2009
    Messages:
    111
    Всем спасибо. Только начинаю изучать ассемблер.

    Меня сбило столку то, что нужно обнулять регистр. Думал это должно автоматически произойти. Ведь когда мы,например, пишем:

    mov eax,1
    mov eax,2

    Будет 2 в еах.
    Почему edx автоматически не очистился под остаток от деления?
     
  13. l_inc

    l_inc New Member

    Blog Posts:
    0
    Joined:
    Sep 29, 2005
    Messages:
    2,566
    MetAlic
    Вообще-то он является ещё и частью делимого.
     
  14. MetAlic

    MetAlic New Member

    Blog Posts:
    0
    Joined:
    Aug 13, 2009
    Messages:
    111
    Да. Ступил. Все понял. Всем спасибо
     
  15. intel_x128

    intel_x128 New Member

    Blog Posts:
    0
    Joined:
    May 17, 2009
    Messages:
    345
    MetAlic
    Совет: если делишь или умножаешь на степень двойки (2, 4, 8, 16...), то проще и правильнее пользоваться shr/shl

    примеры:
    shr eax, 1 ;eax = eax / 2
    shl eax, 1 ;eax = eax * 2

    shr eax, 2 ;eax = eax/4
    shl eax, 2 ;eax = eax*4
     
  16. MetAlic

    MetAlic New Member

    Blog Posts:
    0
    Joined:
    Aug 13, 2009
    Messages:
    111
    Спасибо