Вычисление выражения по формуле - Assembler (222996)

Узнай цену своей работы

Формулировка задачи:

Как рассчитать такую формулу на ассемблере, тот что в визуал студии? Как рассчитать такую формулу на ассемблере, тот что в визуал студии? Левую и правую часть отдельно.

Решение задачи: «Вычисление выражения по формуле»

textual
Листинг программы
  1.     int l,r,a=12,b=-93;
  2.     _asm
  3.     {
  4.         mov eax,a
  5.         sub eax,b
  6.         imul eax
  7.         imul eax
  8.         mov l,eax
  9.         //
  10.         mov eax,a
  11.         imul eax
  12.         imul eax//a^4
  13.         mov ecx,eax
  14.         idiv dword ptr a//a^3
  15.         imul dword ptr b
  16.         mov ebx,-4
  17.         imul ebx//-4*a^3*b
  18.         add ecx,eax//a^4-4*a^3*b
  19.         mov eax,a
  20.         imul eax
  21.         imul dword ptr b
  22.         imul dword ptr b//a^2*b^2
  23.         mov ebx,6
  24.         imul ebx//6*a^2*b^2
  25.         add ecx,eax//a^4-4*a^3*b+6*a^2*b^2
  26.         mov eax,b
  27.         imul eax
  28.         imul dword ptr b//b^3
  29.         imul dword ptr a
  30.         mov ebx,-4
  31.         imul ebx//-4*a*b^3
  32.         add ecx,eax//a^4-4*a^3*b+6*a^2*b^2-4*a*b^3
  33.         mov eax,b
  34.         imul eax
  35.         imul eax//b^4
  36.         add eax,ecx
  37.         mov r,eax
  38.     }
  39.     cout<<l<<"="<<r<<endl;

Объяснение кода листинга программы

  1. Объявляются переменные l, r, a и b со значениями 12, -93, 12 и -93 соответственно: int l,r,a=12,b=-93;.
  2. Вступает блок кода на ассемблере с помощью директивы _asm.
  3. Значение переменной a загружается в регистр eax с помощью инструкции mov eax,a.
  4. Из регистра eax вычитается значение переменной b с помощью инструкции sub eax,b.
  5. Значение в регистре eax умножается само на себя с помощью инструкции imul eax.
  6. Полученное значение в регистре eax умножается само на себя снова с помощью инструкции imul eax.
  7. Значение в регистре eax сохраняется в переменную l с помощью инструкции mov l,eax.
  8. Значение переменной a загружается в регистр eax с помощью инструкции mov eax,a.
  9. Значение в регистре eax умножается само на себя с помощью инструкции imul eax.
  10. Полученное значение в регистре eax умножается само на себя снова с помощью инструкции imul eax.
  11. Результат делится на значение переменной a с помощью инструкции idiv dword ptr a.
  12. Полученное значение в регистре eax умножается на значение переменной b с помощью инструкции imul dword ptr b.
  13. Значение -4 сохраняется в регистр ebx с помощью инструкции mov ebx,-4.
  14. Значение в регистре ebx умножается на значение в регистре eax с помощью инструкции imul ebx.
  15. Результат сложения значения в регистре ecx и значения в регистре eax сохраняется в переменную ecx с помощью инструкции add ecx,eax.
  16. Значение переменной a загружается в регистр eax с помощью инструкции mov eax,a.
  17. Значение в регистре eax умножается само на себя с помощью инструкции imul eax.
  18. Полученное значение в регистре eax умножается на значение переменной b с помощью инструкции imul dword ptr b.
  19. Значение переменной b умножается само на себя с помощью инструкции imul dword ptr b.
  20. Значение 6 сохраняется в регистр ebx с помощью инструкции mov ebx,6.
  21. Значение в регистре ebx умножается на значение в регистре eax с помощью инструкции imul ebx.
  22. Результат сложения значения в регистре ecx и значения в регистре eax сохраняется в переменную ecx с помощью инструкции add ecx,eax.
  23. Значение переменной b загружается в регистр eax с помощью инструкции mov eax,b.
  24. Значение в регистре eax умножается само на себя с помощью инструкции imul eax.
  25. Полученное значение в регистре eax умножается на значение переменной b с помощью инструкции imul dword ptr b.
  26. Значение переменной a умножается само на себя с помощью инструкции imul dword ptr a.
  27. Значение -4 сохраняется в регистр ebx с помощью инструкции mov ebx,-4.
  28. Значение в регистре ebx умножается на значение в регистре eax с помощью инструкции imul ebx.
  29. Результат сложения значения в регистре ecx и значения в регистре eax сохраняется в переменную ecx с помощью инструкции add ecx,eax.
  30. Значение переменной b загружается в регистр eax с помощью инструкции mov eax,b.
  31. Значение в регистре eax умножается само на себя с помощью инструкции imul eax.
  32. Полученное значение в регистре eax умножается само на себя снова с помощью инструкции imul eax.
  33. Значение в регистре eax прибавляется к значению в регистре ecx с помощью инструкции add eax,ecx.
  34. Значение в регистре eax сохраняется в переменную r с помощью инструкции mov r,eax.
  35. Выводятся значения переменных l и r с помощью функции cout: cout<<l<<=<<r<<endl;.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут