|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.11.2018, 23:05 | #1 |
Регистрация: 20.11.2018
Сообщений: 4
|
Метод Гаусса в ассемблере
Реализация с использованием ассемблерной вставки программи
для вычисления произведения матриц АВ, где А - заданная матрица размер- ности n x n, а элементы матрицы В задаются формулой bij = i + j - 1. #include <iostream> using namespace std; void main() { int n; cout << “ n : ”; cin >> n; int** a = new int*[n]; int** b = new int*[n]; int** res = new int*[n]; cout << “ А : ”; for (int i = 0; i < n; i++) { a[i] = new int[n]; b[i] = new int[n]; res[i] = new int[n]; for (int j = 0; j < n; j++) { cin >> a[i][j]; b[i][j] = i + j — 1; res[i][j] = 0; } } cout << “ A: ” << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout << a[i][j] << “ ”; } cout << endl; } cout << endl; cout << “ B: ” << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout << b[i][j] << “ ”; } cout << endl; } cout << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { __asm { mov edx, res // edx = res mov esi, i imul esi, 4 add edx, esi // edx = &res[i] push [edx] pop edx // edx = res[i] mov esi, j imul esi, 4 add edx, esi // edx = &res[i][j] push edx xor esi, esi mov ecx, n start: mov eax, a mov ebx, b a_to_eax: mov edx, i mov eax, [eax + 4 * edx] // eax = a[i] mov edx, esi mov eax, [eax + 4 * edx] // eax = a[i][esi] b_to_ebx: mov edx, esi mov ebx, [ebx + 4 * edx] // ebx = b[esi] mov edx, j mov ebx, [ebx + 4 * edx] // ebx = b[esi][j] end: pop edx imul eax, ebx // eax = a[i][esi]*b[esi][j] add [edx], eax push edx inc esi loop start pop edx } } } cout << “ A*B: ” << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout << res[i][j] << “ ”; } cout << endl; } cout << res << endl; system("pause"); } Есть такой пример. Моя задача: По заданной матрицей A и вектором b решить методом Гаусса матричное уравнение Ax = b. Пусть матрицу А и вектор В зададим так, как показано в примере, это С ++, это я понимаю. Но как для этого написать ассемблерную вставку с методом Гаусса, я не знаю. Помогите пожалуйста. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Метод Гаусса в ассемблере | Xaakii | Помощь студентам | 0 | 20.11.2018 19:09 |
Метод Гаусса на C#. | bestnicer | Помощь студентам | 0 | 27.11.2012 14:54 |
метод простых операций и метод гаусса зейделя | tarasman11 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.09.2012 14:46 |
Метод Гаусса в С++. | marko) | Общие вопросы C/C++ | 1 | 22.03.2010 16:49 |
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. | Хомяк!!!!! | Помощь студентам | 4 | 08.07.2009 10:08 |