1 / 1 / 0
Регистрация: 02.12.2009
Сообщений: 38

Почему после IMUL флаги OF и CF выставляются подобным образом?

13.03.2012, 15:27. Показов 10153. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
резутьтаты после знакового умножения такие: 1) 0000000011111111
2) 1111111100000000
Почему флаги OF и CF после знакового умножения устанавливаются в 1 в обоих случаях?
Обясните пожалуйста?
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2012, 15:27
Ответы с готовыми решениями:

Одновременно выставляются флаги для двух полей
На форме добавил два поля и расположил их рядом в одной строке. Для одного ставлю флаг Hide paragraph when document is Opened for reading,...

Сформировать массив подобным образом
Здравствуйте. Уже час 3 или 4 сижу не могу сформировать данного вида массив: let slotsData = '{"0": {"0":...

Как реализовать работу с моделями в одной форме подобным образом
В общем, есть 4 таблицы в БД ORACLE на фреймворке YII2. Первая таблица s_quiz_topic в которой содержаться темы. Поля: $id_rec ...

2
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
14.03.2012, 05:10
cvbcvb, внимательно читай описание команд
Синтаксис команды:
IMUL источник
IMUL приемник, источник
IMUL приемник, источник, число
Назначение: Умножение чисел со знаком
Команда имеет три формы, различающиеся числом операндов:
1) IMUL источник: источник (регистр или переменная) умножается на AL, АХ или ЕАХ (в зависимости от размера операнда), и результат располагается в АХ, DX:AX или EDX:EAX соответственно.
2) IMUL приемник,источник: источник (регистр или переменная) умножается на приемник (регистр), и результат заносится в приемник.
3) IMUL приемник,источник,число: источник (регистр или переменная) умножается на число, и результат заносится в приемник (регистр).
Во всех трех вариантах считается, что результат может занимать в два раза больше места, чем размер источника. В первом случае приемник автоматически оказывается достаточно большим, но во втором и третьем случаях могут произойти переполнение и потеря старших бит результата. Флаги OF и CF будут равны единице, если это произошло, и нулю, если результат умножения поместился целиком в приемник (во втором и третьем случаях) или в младшую половину приемника (в первом случае).
Значения флагов SF, ZF, AF и PF после команды IMUL не определены.
2
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
15.03.2012, 10:58
Лучший ответ Сообщение было отмечено как решение

Решение

чтобы было более понятно - перефразирую Рикардо Нарваха, в переводе Aquila - "Введение в крэкинг с нуля, используя OllyDbg" - Глава 5
IMUL (умножение со знаком)
Инструция IMUL - это инструкция для умножение со знаком и употребляется аналогично MUL.
Assembler
1
IMUL ECX
Данная операция производит умножение ECX на EAX, а результат сохраняется в EDX:EAX с учётом знака операндов.
Несмотря на сходство с инструкцией MUL, IMUL позволяет использовать больше одного операнда, что невозможно в случае с MUL.
Цитата Сообщение от туториал CAOS'а
Несмотря на использовальние регистров EAX и EDX по умолчанию, можно указать другие источники и приёмники данных вплоть до трёх операндов. Первый - место, куда необходимо поместить результат и которое всегда должно быть регистром, второй и третий - два значения, которые нужно перемножить.
В этих примерах увидим применение этой инструкции с одним, двумя и тремя операндами.
код команда комментарий
F7EB imul ebx EAX*EBX -> EDX:EAX
В первом примере использование команды IMUL похоже на использование команды MUL, не считая того, что здесь учитываются знаки.
код команда комментарий
696E74020080FF imul ebp, [esi+74], FF800002 [ESI+74]*FF800002 -> EBP
Во втором примере используются три операнда: содержимое ESI+74 умножается на FF800002, а результат сохраняется в EBP. Пусть ESI = 401000, ESI + 74 - это адрес 401074, содержимым которого, допустим, является число C7000000. C7000000, будет умножено на FF800002, а результат данной операции будет сохранён в EBP. Калькулятор даёт нам следующий результат операции C7000000 * FF800002 = C69C80018E000000. Но поскольку EBP не может вместить его полностью, то в нём остаётся только то, что поместилось, а остальное отбрасывается. EBP=8E000000. При этом флаги OF и CF будут равны единице. Если бы содержимое [ESI+74] было равно 1, тогда 1 * FF800002 = FF800002, EBP=FF800002 и флаги OF и CF будут равны нулю.
В третьем примере два операнда, из которых перемножаются оба, а результат сохраняется в первый из них.
код команда комментарий
0FAF55E8 imul edx, [ebp-18] EDX * [EBP-18] -> EDX
Как видим, основной способ для умножения больших чисел - использовать IMUL только с одним операндом, так как в этом случае результат сохраняется в EDX:EAX, то есть он может быть двойного размера, чего нельзя добиться при использовании двух или трёх операндах, соответственно, данную возможность следует применять для умножения небольших чисел.
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2012, 10:58
Помогаю со студенческими работами здесь

Установить флаги OF, DF, ZF и CF. Остальные флаги сбросить
Прошу помочь со следующим заданием: Установить флаги OF, DF, ZF и CF. Остальные флаги сбросить. Как я понял, нужно использовать команды...

Какие флаги во флаговом регистре изменились при выполнении арифметических операций и почему?
Ребят помогите пожалуйста. Задание. Часть 1. Даны числа а=FEDCh и b=ABCDh (числа в 16-ричном системе счисления). Нужно выполнить...

Почему невозможно открыть код таким образом и почему форма с ним никак не контактирует
И при двойном клике на элемент, открывается, а точнее переходит, на исходный код. Никак не пойму в чем проблема, а ответ по-любому...

Какие значения примут флаги после выполнения данного кода
Есть заданная команда mov AL, 2Ch add AL, 54h Какие значения примут флаги ZF, SF, CFи OF.и регистра AL У меня получилось так ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru