Retorna a diferença entre dois vetores em Assemly

Publicado por Marcos Augusto (última atualização em 09/10/2015)

[ Hits: 3.974 ]

Homepage: ...

Download diferenca




Este algoritmo tem como objetivo comparar os elementos de dois vetores unidimensionais e retornar a diferença entre eles.

Ele foi implementado no MARS: http://courses.missouristate.edu/kenvollmar/mars

  



Esconder código-fonte

.data
    vetor1: .word 1,2,3,4,5,6,7,8,9,10
    vetor2: .word 11,12,13,14,15,16,17,18,19,20
    vetor3: .space 40
    ler: .asciiz"\nDiferenca entre o vetor A e B: "
    espaco: .asciiz" "
.text
    la $t0,vetor1
    la $t1,vetor2
    la $t9,vetor3
    li $t2,0
    li $t4,10
    li $t5,0
    li $t6,0
 difAB:
        lw $t8,0($t0)
        la $t1,vetor2
         li $t3,0
        beq $t2,$t4,indice
        addi $t2,$t2,1
        addi $t0,$t0,4

loop1:
        beq $t3,$t4,guardaDifAB
    lw $t7,0($t1)
    addi $t1,$t1,4
    beq $t7,$t8,difAB
    addi $t3,$t3,1
    j loop1
 guardaDifAB:
    sw $t8,0($t9)
    addi $t9,$t9,4
    addi $t5,$t5,1
    j difAB
indice:
    li $t2,4
    mult $t5,$t2
    mflo  $t4
    sub $t9,$t9,$t4

    la $a0,ler
    li $v0,4
    syscall
    j saida
saida:
    beq $t6,$t5 fim
    lw $t8,0($t9)
    move $a0,$t8
    li $v0,1
    syscall
    la $a0,espaco
    li $v0,4
    syscall
    la $a0,espaco
    li $v0,4
    syscall
    addi $t6, $t6,1
    addi $t9,$t9,4
    j saida
 fim:

Scripts recomendados

Fatorial de N em Assembly

Assembler 8086 - Simples código que mostra horas e minutos em pontos

Escrita de número em octal em Assembly puro para Linux 64 bits (NASM - Netwide Assembler)

"Clear Screen" para Linux 64 bits em Assembly Puro (GNU Assembly)

"Clear Screen" para Linux x86 em Assembly Puro (Nasm - Netwide Assembler)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts