Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 21:53   #1
Sempe4
 
Регистрация: 06.09.2009
Сообщений: 9
По умолчанию Assembler, матрица

Нужно написать функцию на ассемблере в прогу на с++. Эта функцию должна подсчитать сумму элементов диагонали матрицы которые кратные 20 и 50.
Код:
int suma(int mas[3][3], int n)
{
	int l=4, sum=0,	a1=50, a2=20;		
	
	_asm
	{
		        mov esi,mas //записую адрес массива в esi
			mov eax, n    //
			inc eax         //считаю смещнеие между элементами
			mul l            // диагонали и записую в edi
			mov edi, eax //
			mov ecx, n
			mov edx, 0
			mov ebx, 0
l0:
		mov eax, [esi]	//записую элемент диагонали начиная с первого
		div a1                // делю на первое число
		cmp edx, 0          // 
		jz l1                   // если делится то переход на l1
	        add esi, edi         //
		dec ecx            //
		cmp ecx, 0        //
		jz l3                // если не делится проделать со следующим эл
		jnz l0               //
		

l1:
		mov eax, [esi]  // 
		div a2             // тут делю тот же эл, который делится на а1
		cmp edx, 0      // 
		jz l2	             // если поделился то переход на l2
		add esi, edi     //
		dec ecx         //
		cmp ecx, 0     //
		jz l3              //если не делится проделать со следующим эл
		jnz l0            //
		
l2:
		add ebx, [esi] // тут суммирую элементы, которые пройшли
		add esi, edi    // две проверки
		dec ecx         //
		cmp ecx, 0     //
		jz l3             //
		jnz l0           //
l3:
		mov sum, ebx
	}
	return sum;
}
проблема в том, что если в диагонале все числа делятся на а1 и а2 то все нормально суммируется, а если есть эл который не делится, то суммируются элементы только те, которые стоят до него.
Помогите, пожалуйста.

Последний раз редактировалось Sempe4; 16.11.2010 в 21:56.
Sempe4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11
Задача Assembler (матрица) LeFF Помощь студентам 2 22.06.2008 13:38