Matriz Simétrica em Assembler

Algoritmo em Assembler para verificar se matriz é ou não simétrica.

#Para verificar que eh simetrica, todas as posicoes M[i,j] devem ser
#iguais as posicoes M[j,i], entao varremos a matriz comparando cada
#posicao com sua simetrica. Se passar todas as comparacoes sendo iguais
#eh simetrica, senao quer dizer que alguma posicao eh diferente, nao
#sendo simetrica.

.section .text
.global simetrica

simetrica:
	push %ebp				#guardar e atualizar EBP
	mov %esp,%ebp
	xor %edi,%edi				#limpa registradores
	xor %esi,%esi

	laco:					#varre todas posicoes
		mov $0,%edx
		mov $4,%eax
		mul %esi			#indice1
		mov 12(%ebp),%edx		#N
		mul %edx
		add 8(%ebp),%eax		#inicio da matriz
		mov (%eax,%edi,4),%ecx		#move pos1 para ECX
		mov $0,%edx
		movl $4,%eax
		mul %edi			#indice2
		movl 12(%ebp),%edx		#N
		mul %edx
		add 8(%ebp),%eax		#inicio da matriz
		movl (%eax,%esi,4),%ebx		#move pos2 para EBX

		cmp %ecx,%ebx			#pos1 e pos2 sao posicoes simetricas
		jne diferente			#se passar, por enquanto sao simetricas
		inc %esi
		cmp 12(%ebp),%esi		#compara linhas
		jne laco
		mov $0,%esi
		inc %edi
		cmp 12(%ebp),%edi		#compara colunas
		jne laco
		mov $1,%eax			#comparou todas e eh simetrica
		jmp fim

	diferente:
		mov $0,%eax			#nao eh simetrica

	fim:
		leave				#finalizando
		ret
Compartilhe:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • FriendFeed
  • LinkedIn
  • Live
  • MySpace
  • PDF
  • Rec6
  • Reddit
  • RSS
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Identi.ca
  • Netvibes
  • Tumblr
  • blogmarks
  • Posterous
  • Yahoo! Buzz

Posts relacionados:

  1. Algoritmo Quadrado Mágico em Assembler
  2. Modificando Look and Feel Aparência em Interfaces Java
  3. Certas diferenças
  4. Máquina de Mealy

Tags: ,

This entry was posted on quarta-feira, setembro 17th, 2008 at 19:11 and is filed under algoritmos. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed.