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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2013, 23:50   #1
КРИЖ
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 44
По умолчанию Надо написать программу на ассемблере, которая транспонировала бы матрицу без ведения дополнительной

Надо написать программу на ассамблере, которая транспонировала бы символьную матрицу без ведения дополнительной.
У меня вышло что-то так, но это не работает. Может кто подскажет, где ошибка как её исправить и пояснить почему там не правильно.или разъяснить как правильно хотя бы двигаться по матрице.
Код:
void main(void)
{
	char **q;
	q=new char*[3];
	for(unsigned int i=0;i<3;++i)
	{
		q[i]=new char[3];
		for(unsigned int j=0;j<3;++j)
		{
			cin>>q[i][j];
		}
	}
	cout<<endl;
	cout<<"matrix A="<<endl;
	for(unsigned int i=0;i<3;++i)
	{
		for(unsigned int j=0;j<3;++j)
		{
			cout<<q[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<endl;
	/*
	for(unsigned int i=0;i<3;++i)
	{
		for(unsigned int j=i;j<3;++j)
		{
			if(i!=j)
			{
				q[i][j]=q[j][i]^q[i][j];
				q[j][i]=q[j][i]^q[i][j];
				q[i][j]=q[j][i]^q[i][j];
			}
			
		}
	}
	*/
	_asm
	{
		xor eax,eax
		xor ebx,ebx
		xor esi,esi
		xor edi,edi
		xor ecx,ecx
		xor edx,edx
		xor ecx,q
		BEGIN_1:
				mov esi,[ecx+4*eax]//eax-i
				mov ch,byte ptr [esi+ebx]//q[i][j]
				cmp eax,3
				je E_1
				mov ebx,eax//j=i
				mov edi,[ecx+4*ebx]
				mov cl,byte ptr [edi+eax]//q[j][i]
				BEGIN_2:
						cmp ebx,3
						je E_2
						add ebx,1
						cmp cl,ch
						je E_2
						xor ch,cl
						xor cl,ch
						xor ch,cl
						mov byte ptr[esi+ebx],ch
						mov byte ptr[edi+eax],cl
						jmp BEGIN_2
				E_2:
				mov [ecx+4*eax],esi
				mov [ecx+4*ebx],edi
				add eax,1
				xor ebx,ebx
				jmp BEGIN_1
	E_1:
	}
	cout<<"transport matrix A="<<endl;
	for(unsigned int i=0;i<3;++i)
	{
		for(unsigned int j=0;j<3;++j)
		{
			cout<<q[i][j]<<" ";
		}
		cout<<endl;
	}
	getchar();
	getchar();
}

Последний раз редактировалось КРИЖ; 15.12.2013 в 23:58.
КРИЖ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу, которая вводит символьную матрицу размером 3x4 Mixasnt Помощь студентам 4 30.10.2012 21:25
Написать программу, которая формирует квадратную матрицу nxn andruxa-forever Помощь студентам 0 02.02.2011 12:03
Составить программу, которая заполняет квадратную матрицу... Катюшка_92 Общие вопросы C/C++ 1 18.09.2010 20:43
Написать небольшую программу для ведения дом. бухгалтерии Hallo Фриланс 26 03.09.2010 22:31
Надо написать программу на ассемблере _Toretto_ Фриланс 1 26.12.2009 13:17