Подскажите инструкцию!

Тема в разделе "WASM.BEGINNERS", создана пользователем kiprirrpik, 27 окт 2007.

  1. kiprirrpik

    kiprirrpik New Member

    Публикаций:
    0
    Требуется изменить значение регистра EAX так, чтобы в нём находилось число 3. Инструкция должна занимать 2 байта :dntknw:
     
  2. Aspire

    Aspire New Member

    Публикаций:
    0
    kiprirrpik
    mov al,3h
     
  3. kiprirrpik

    kiprirrpik New Member

    Публикаций:
    0
    Рву на себе волосы ...

    Спасибо.
     
  4. ECk

    ECk Member

    Публикаций:
    0
    а если там было FFFFFFFF? после mov al,3 там будет FFFFFF03 но не 3
     
  5. Aspire

    Aspire New Member

    Публикаций:
    0
    ECk
    Ты можешь предложить что-либо другое уложившись в два байта?
     
  6. technik5

    technik5 New Member

    Публикаций:
    0
    Могу в три предложить: add eax,3h, при условии что он пустой
     
  7. Aspire

    Aspire New Member

    Публикаций:
    0
    technik5
    В три можно предложить без всяких условий
    push 3h
    pop eax
     
  8. wsd

    wsd New Member

    Публикаций:
    0
  9. ECk

    ECk Member

    Публикаций:
    0
    Aspire
    Если он не пустой, твое предложение неверно, а я не свое предлагаю лучше чем твое, а показываю твою ошибку (в случае если ЕАХ не равен нулю)
     
  10. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Ты уверен? Я скажу 100% что ты ошыбаешся.
    Команда push dword const занимает 1 байт + 4 байта собственно dword параметр. Отсюда следствие - сам push 3 весит 5 байт. есчё + pop - получится 6 байт. Стек тут не поможет(если правда выше по коду ты где нибудь сделаеш push dword 3, тогда с pop ты влезеш в 1 байт).
     
  11. ECk

    ECk Member

    Публикаций:
    0
    rudik
    в случае опкода 68h - 5 байт (68h + DWORD), но может быть опкод 6Ah - 2 байта (6Ah BYTE), но на стек кладется дворд (оптимизация для push 0)
     
  12. wsd

    wsd New Member

    Публикаций:
    0
    rudik
    посмотри в ольке
     
  13. Mi256

    Mi256 New Member

    Публикаций:
    0
    Ну аль надо чтобы строго 2 байта - тода уш действительно надо читать откуда-то ето число иначе никак... Примеры - lodsd, pop eax (возможно также movzx, cbw +cwd но длину не помню)

    И ещо, если очень надо, то поставь переход на пустую область там помести число в еах выполни комманды, те что переход затерел, и вернись к исходному коду :)
     
  14. nester7

    nester7 New Member

    Публикаций:
    0
    + xlat
     
  15. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    kiprirrpik
    А что в EAX уже находится? И есть ли число 3 в других регистрах?
    Mi256
    mov al,3 (2 байта)+cbw(1 байт)+cwd(1 байт) А ТС просит в 2 байта
     
  16. Mi256

    Mi256 New Member

    Публикаций:
    0
    Mikl__ в скобках я дал вариант когда в al - уже до етого было 03h
     
  17. kiprirrpik

    kiprirrpik New Member

    Публикаций:
    0
    Надо заменить инструкцию xor eax, eax. Как оказалось в данном регистре всегда оказывается 0, поэтому первый из предложенных вариантов вполне подошёл. В других регистрах тройки нет :)