Matriz Simétrica em Assembler
Posted by sippert | Filed under algoritmos
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
Nenhum post relacionado.





















