Вычисление выражения по формуле - Assembler (222996)
Формулировка задачи:
Как рассчитать такую формулу на ассемблере, тот что в визуал студии?
Как рассчитать такую формулу на ассемблере, тот что в визуал студии? Левую и правую часть отдельно.
Решение задачи: «Вычисление выражения по формуле»
textual
Листинг программы
int l,r,a=12,b=-93; _asm { mov eax,a sub eax,b imul eax imul eax mov l,eax // mov eax,a imul eax imul eax//a^4 mov ecx,eax idiv dword ptr a//a^3 imul dword ptr b mov ebx,-4 imul ebx//-4*a^3*b add ecx,eax//a^4-4*a^3*b mov eax,a imul eax imul dword ptr b imul dword ptr b//a^2*b^2 mov ebx,6 imul ebx//6*a^2*b^2 add ecx,eax//a^4-4*a^3*b+6*a^2*b^2 mov eax,b imul eax imul dword ptr b//b^3 imul dword ptr a mov ebx,-4 imul ebx//-4*a*b^3 add ecx,eax//a^4-4*a^3*b+6*a^2*b^2-4*a*b^3 mov eax,b imul eax imul eax//b^4 add eax,ecx mov r,eax } cout<<l<<"="<<r<<endl;
Объяснение кода листинга программы
- Объявляются переменные l, r, a и b со значениями 12, -93, 12 и -93 соответственно:
int l,r,a=12,b=-93;
. - Вступает блок кода на ассемблере с помощью директивы
_asm
. - Значение переменной a загружается в регистр eax с помощью инструкции
mov eax,a
. - Из регистра eax вычитается значение переменной b с помощью инструкции
sub eax,b
. - Значение в регистре eax умножается само на себя с помощью инструкции
imul eax
. - Полученное значение в регистре eax умножается само на себя снова с помощью инструкции
imul eax
. - Значение в регистре eax сохраняется в переменную l с помощью инструкции
mov l,eax
. - Значение переменной a загружается в регистр eax с помощью инструкции
mov eax,a
. - Значение в регистре eax умножается само на себя с помощью инструкции
imul eax
. - Полученное значение в регистре eax умножается само на себя снова с помощью инструкции
imul eax
. - Результат делится на значение переменной a с помощью инструкции
idiv dword ptr a
. - Полученное значение в регистре eax умножается на значение переменной b с помощью инструкции
imul dword ptr b
. - Значение -4 сохраняется в регистр ebx с помощью инструкции
mov ebx,-4
. - Значение в регистре ebx умножается на значение в регистре eax с помощью инструкции
imul ebx
. - Результат сложения значения в регистре ecx и значения в регистре eax сохраняется в переменную ecx с помощью инструкции
add ecx,eax
. - Значение переменной a загружается в регистр eax с помощью инструкции
mov eax,a
. - Значение в регистре eax умножается само на себя с помощью инструкции
imul eax
. - Полученное значение в регистре eax умножается на значение переменной b с помощью инструкции
imul dword ptr b
. - Значение переменной b умножается само на себя с помощью инструкции
imul dword ptr b
. - Значение 6 сохраняется в регистр ebx с помощью инструкции
mov ebx,6
. - Значение в регистре ebx умножается на значение в регистре eax с помощью инструкции
imul ebx
. - Результат сложения значения в регистре ecx и значения в регистре eax сохраняется в переменную ecx с помощью инструкции
add ecx,eax
. - Значение переменной b загружается в регистр eax с помощью инструкции
mov eax,b
. - Значение в регистре eax умножается само на себя с помощью инструкции
imul eax
. - Полученное значение в регистре eax умножается на значение переменной b с помощью инструкции
imul dword ptr b
. - Значение переменной a умножается само на себя с помощью инструкции
imul dword ptr a
. - Значение -4 сохраняется в регистр ebx с помощью инструкции
mov ebx,-4
. - Значение в регистре ebx умножается на значение в регистре eax с помощью инструкции
imul ebx
. - Результат сложения значения в регистре ecx и значения в регистре eax сохраняется в переменную ecx с помощью инструкции
add ecx,eax
. - Значение переменной b загружается в регистр eax с помощью инструкции
mov eax,b
. - Значение в регистре eax умножается само на себя с помощью инструкции
imul eax
. - Полученное значение в регистре eax умножается само на себя снова с помощью инструкции
imul eax
. - Значение в регистре eax прибавляется к значению в регистре ecx с помощью инструкции
add eax,ecx
. - Значение в регистре eax сохраняется в переменную r с помощью инструкции
mov r,eax
. - Выводятся значения переменных l и r с помощью функции cout:
cout<<l<<
=<<r<<endl;
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д