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

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

  1. kiprirrpik

    kiprirrpik New Member

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

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    kiprirrpik
    mov al,3h
     
  3. kiprirrpik

    kiprirrpik New Member

    Публикаций:
    0
    Регистрация:
    21 сен 2007
    Сообщения:
    10
    Рву на себе волосы ...

    Спасибо.
     
  4. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    а если там было FFFFFFFF? после mov al,3 там будет FFFFFF03 но не 3
     
  5. Aspire

    Aspire New Member

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

    technik5 New Member

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

    Aspire New Member

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

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
  9. ECk

    ECk Member

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

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

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

    ECk Member

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

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    rudik
    посмотри в ольке
     
  13. Mi256

    Mi256 New Member

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

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

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    + xlat
     
  15. Mikl_

    Mikl_ New Member

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

    Mi256 New Member

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

    kiprirrpik New Member

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