Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- dados: .space 20 # reservando 20 bytes de memória para o vetor
- print1: .asciiz "\nDigite um numero: "
- print2: .asciiz " eh um numero par\n"
- print3: .asciiz " eh um numero impar\n"
- .text
- main:
- la $s0, dados # carrega endereço inicial do vetor dados
- la $a0, print1 # carrega endereço inicial de print1
- li $t0, 0 # incrementador do vetor
- loop: # abaixo: instruções necessárias para carregar o vetor dados
- li $v0, 4
- syscall # imprime mensagem solicitando numero
- li $v0, 5
- syscall # lê um numero e guarda em $v0
- add $s1, $s0, $t0 # aponta para um endereço do vetor
- sw $v0, ($s1) # guarda o numero no vetor
- addi $t0, $t0, 4 # pula para o proximo indice do vetor, 4 bytes a frente (uma palavra a frente)
- blt $t0, 20, loop # enquanto nao chegar ao final do vetor, continua no loop
- jal parImpar # chama a função parImpar
- li $v0, 10
- syscall # finaliza programa
- parImpar:
- li $t0, 0 # incrementador do vetor
- li $t3, 2 # divisor para a instrução div
- loop2:
- add $s1, $s0, $t0 # obtem endereço de um indice do vetor
- lw $t1, ($s1) # copia um numero do vetor para o registrador $t1
- div $t1, $t3 # divide o numero por 2 (quociente fica em LO e resto em HI)
- mfhi $t2 # copia o resto para o registrador $t2
- bne $t2, 0, impar # se o resto for diferente de 0, então é um numero impar (desvia para impar)
- li $v0, 1
- move $a0, $t1
- syscall # imprime o numero
- li $v0, 4
- la $a0, print2
- syscall # imprime mensagem par
- addi $t0, $t0, 4 # incrementa posição do vetor
- blt $t0, 20, loop2 # enquanto nao chegar ao final do vetor, continua no loop
- jr $ra # finaliza função e retorna para o programa principal
- impar:
- li $v0, 1
- move $a0, $t1
- syscall # imprime o numero
- li $v0, 4
- la $a0, print3
- syscall # imprime mensagem impar
- addi $t0, $t0, 4 # incrementa posição do vetor
- blt $t0, 20, loop2 # enquanto nao chegar ao final do vetor, continua no loop
- jr $ra # finaliza função e retorna para o programa principal
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement