Вычисление выражения по формуле - 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;
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д