сборка x86 - masm32:абсолютная разбивка операций умножения и деления [закрыто]
Вопрос
Я просмотрел весь Интернет в поисках простой для понимания оценки того, как умножать и делить в сборке masm32.Мои вопросы таковы:
Куда мне следует поместить умножаемые числа?
Где я должен разместить делимые числа?
Куда девается остаток при делении?
Не мог бы кто-нибудь, пожалуйста, ответить на это за меня?
Спасибо,
Программа
Решение
Ответ на этот вопрос можно очень легко найти, заглянув на соответствующую страницу сайта. Ссылка на набор инструкций Intel 64 и IA-32.В данном случае вы ищете MUL
и DIV
инструкции (в случае, если вы работаете с неподписанными операндами) или IMUL
и IDIV
инструкции, которые используются для умножения и деления целых чисел со знаком.
Итак, на случай, если вам действительно не хочется просматривать руководство :
- Один из операндов умножения должен быть помещен в
EAX
зарегистрируйтесь, если вы используетеMUL
.Это немного более гибко, если вы используетеIMUL
инструкция, которая позволяет указать исходный и конечный регистры. - Делимое число всегда является 64-разрядным числом в 32-разрядном режиме.Старшие биты переходят в
EDX
, в то время как младшие биты переходят вEAX
. - Остаток всегда помещается в
EDX
.