Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/55: Рейтинг темы: голосов - 55, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 02.12.2009
Сообщений: 38

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

13.03.2012, 15:27. Показов 10132. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru