1
На самом деле на самом деле путают прямо сейчас, как получить среднее значение из двух разных массивов с плавающей запятой. Пока я понимаю, как сделать один массив, но для второго массива у меня нет подсказки. По какой-то причине я думал, что это довольно просто, но второй массив немного сложнее.Среднее число плавающих чисел Сборка
Вот каст:
#include <iostream>
using namespace std;
extern "C" double Average (int, double []);
void main()
{
double Array1 [10] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.0};
double Array2 [11] = {-1.1, -2.2, -3.3, -4.4, -5.5, -6.6, -7.7, -8.8, -9.9, -10.0, -11.0};
cout << "Average of Array1 is " << Average (10, Array1) << endl;
cout << "Average of Array2 is " << Average (11, Array2) << endl;
}
Мой код:
.386
.model flat
public _Average
.data
.code
_Average proc
finit
mov ecx, [esp + 4] ; get the number of elements
mov ebx, [esp + 8] ; get the address of the array
fld REAL8 PTR [ebx]
fadd REAL8 PTR [ebx + 8]
fadd REAL8 PTR [ebx + 16]
fadd REAL8 PTR [ebx + 24]
fadd REAL8 PTR [ebx + 32]
fadd REAL8 PTR [ebx + 40]
fadd REAL8 PTR [ebx + 48]
fadd REAL8 PTR [ebx + 56]
fadd REAL8 PTR [ebx + 64]
fadd REAL8 PTR [ebx + 72]
fdiv REAL8 PTR [ebx + 72]
ret
_Average endp
end
Вы должны использовать ECX в качестве счетчика цикла и выполнить FADD внутри цикла , Вам также необходимо разделить количество элементов и убедиться, что оно не равно нулю. –
Почему бы не реализовать Среднее значение в C++ во-первых, получить сборку с помощью '-S' -устройства g ++, а затем изменить его по своему усмотрению? –