#include <windows.h>
char bufrus[256];
char * rus(const char * text)
{
CharToOem(text, bufrus);
return bufrus;
}
#include <math.h>
#include <conio.h>
#include <iostream.h>
int main()
{
while(1){
int a, b, c, d, e, x, sum;
cout << rus("Введите значения переменных.") << endl;
cout << "A: ";
cin >> a;
clrscr();
cout << "B: ";
cin >> b;
clrscr();
cout << "C: ";
cin >> c;
clrscr();
cout << "D: ";
cin >> d;
clrscr();
cout << "E: ";
cin >> e;
clrscr();
cout << "X: ";
cin >> x;
clrscr();
cout <<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<x<< endl;
sum=(d*x+c*x*x+b*x*x*x+a*x*x*x*x)/e;
cout << rus("Контрольное: ") << sum << endl;
__asm{
//d*x
mov eax, d;
mov ecx, x;
dec ecx;
Lab00:
add eax, d;
dec ecx;
cmp ecx, 0;
jne Lab00;
mov sum, eax;
//c*x*x
mov eax, c;
mov ebx, x;
mov ecx, x;
dec ecx;
Lab01:
add ebx, x;
dec ecx;
cmp ecx, 0;
jne Lab01;
mov ecx, ebx;
dec ecx;
Lab02:
add eax, c;
dec ecx;
cmp ecx, 0;
jne Lab02;
add sum, eax;
mov eax, ebx;
//b*x*x*x
mul eax, x;
mov ebx, eax;
mov eax, b;
mov ecx, ebx;
dec ecx;
Lab03:
add eax, b;
dec ecx;
cmp ecx, 0;
jne Lab03;
add sum, eax;
mov eax, ebx;
//a*x*x*x*x
mul eax, x;
mov ebx, eax;
mov eax, a;
mov ecx, ebx;
dec ecx;
Lab04:
add eax, a;
dec ecx;
cmp ecx, 0;
jne Lab04;
add sum, eax;
Lab05:
sub eax, e;
inc ecx;
cmp eax, e;
jnbe Lab05;
mov eax, ecx;
mov sum, eax;
}
cout << rus("С помощью вставки: ") << sum << endl;
cout << rus("Нажмите любую клавишу, чтобы продолжить, или ")<< 'q';
cout << rus(", чтобы выйти. \n");
if (getch()== 'q') break;
clrscr();
}
}
Ассемблер - цикл
Код:
................
Вот такая задача по вычислению выражения - где-то после jne Lab04; неправильно написан цикл, вместо правильного выражения он выдаёт только половину(((
[COLOR="Red"]Оформляй код по Правилам.[/COLOR]