Программирование арифметических операций на языке Ассемблер Составить программу на языке ассемблер для микропроцессора Intel 8080, вычисляющую значение функции Y. Соблюдение указанного приоритета операций обязательно.
Выбрать произвольно адреса ячеек памяти (в пределах адресуемого Intel 8080 пространства) для хранения значений аргументов и значения функции. Составить программу и отладить её в эмуляторе Intel 8080.
Y=x1–(x2+x3–x4
print('x=?')
x = int(input())
print('n=?')
n = int(input())
g = 2
y = 0
c=0
if (n % 2) == 1:
print('Так нельзя по условию')
exit(0)
else:
while c<(n/2):
y = y + (1 - x) / g
g=g+2
c=c+1
print('у=', y)
Объяснение:
Получилось решить через цикл While
Можно и через For, но у меня там что-то пошло не так , однако это решение уменьшит количество переменных (должно, по крайней мере). Если оно вам надо - напишите , в комментарии, я отошлю как разберусь.
Если нужно разобрать что как работает и что есть что - пишите в комментарии, я попробую .
/*Решение с обобщения формула Брахмагупты для произвольного четырехугольника. Функция perimeter(double x[], double y[]) возвращает значение периметра, функция area(double x[], double y[]) возвращает значение площади, пример использования и реализация приведены ниже. */
#include <iostream>
#include <math.h>
double perimeter(double x[], double y[]);
double area(double x[], double y[]);
int main()
{
double x[4], y[4];
std::cout << "Quadrangle ABCD\n";
for (auto i = 0; i < 4; i++)
{
std::cout << "Input coordinates of point " << char(i + 'A') << ": ";
std::cin >> x[i] >> y[i];
}
std::cout << perimeter(x, y) << " " << area(x, y);
return 0;
}
double perimeter(double x[], double y[])
{
double a[4], p = 0;
for (auto i = 0; i < 4; i++)
{
a[i] = sqrt((x[i]-x[(i + 1) % 4]) * (x[i]-x[(i + 1) % 4]) + (y[i]-y[(i + 1) % 4]) * (y[i]-y[(i + 1) % 4]));
p += a[i];
}
return p;
}
double area(double x[], double y[])
{
double a[4], p = 0, s = 1, d[2];
for (auto i = 0; i < 4; i++)
{
a[i] = sqrt((x[i]-x[(i + 1) % 4]) * (x[i]-x[(i + 1) % 4]) + (y[i]-y[(i + 1) % 4]) * (y[i]-y[(i + 1) % 4]));
p += a[i];
}
for (auto i = 0; i < 4; i++)
{
s *= (p / 2- a[i]);
}
for (auto i = 0; i < 2; i++)
{
d[i] = sqrt((x[i]-x[i + 2]) * (x[i]-x[i + 2]) + (y[i]-y[i + 2]) * (y[i]-y[i + 2]));
}
s -= (a[0] * a[2] + a[1] * a[3] + d[0] * d[1]) * (a[0] * a[2] + a[1] * a[3] - d[0] * d[1]) / 4;
s = sqrt(s);
return s;
}