Требуется изменить значение регистра EAX так, чтобы в нём находилось число 3. Инструкция должна занимать 2 байта
Aspire Если он не пустой, твое предложение неверно, а я не свое предлагаю лучше чем твое, а показываю твою ошибку (в случае если ЕАХ не равен нулю)
Ты уверен? Я скажу 100% что ты ошыбаешся. Команда push dword const занимает 1 байт + 4 байта собственно dword параметр. Отсюда следствие - сам push 3 весит 5 байт. есчё + pop - получится 6 байт. Стек тут не поможет(если правда выше по коду ты где нибудь сделаеш push dword 3, тогда с pop ты влезеш в 1 байт).
rudik в случае опкода 68h - 5 байт (68h + DWORD), но может быть опкод 6Ah - 2 байта (6Ah BYTE), но на стек кладется дворд (оптимизация для push 0)
Ну аль надо чтобы строго 2 байта - тода уш действительно надо читать откуда-то ето число иначе никак... Примеры - lodsd, pop eax (возможно также movzx, cbw +cwd но длину не помню) И ещо, если очень надо, то поставь переход на пустую область там помести число в еах выполни комманды, те что переход затерел, и вернись к исходному коду
kiprirrpik А что в EAX уже находится? И есть ли число 3 в других регистрах? Mi256 mov al,3 (2 байта)+cbw(1 байт)+cwd(1 байт) А ТС просит в 2 байта
Надо заменить инструкцию xor eax, eax. Как оказалось в данном регистре всегда оказывается 0, поэтому первый из предложенных вариантов вполне подошёл. В других регистрах тройки нет