Essays.club - TCC, Modelos de monografias, Trabalhos de universidades, Ensaios, Bibliografias
Pesquisar

Lista de Exercício de Organização de Computadores

Por:   •  28/3/2018  •  2.048 Palavras (9 Páginas)  •  317 Visualizações

Página 1 de 9

...

2)

add $v0, $s1, $v0 # v0 = fib(s0-1) + fib(s0-2)

sair: lw $ra, 0($sp) # recupera os dados da pilha

lw $s0, 4($sp)

lw $s1, 8($sp)

addi $sp, $sp, 12 # oblitera a pilha

j $ra # volta para a funcao pai

Questão 3 (1 ponto): Implemente o código do SelectionSort em assembly MIPS para um vetor de 20 posições e valores inteiros distintos informados pelo usuário.

.data

vetor: .space 80

string: .asciiz "\nDigite um valor: "

string2: .asciiz "\nResultado: "

string3: .asciiz " "

tam: .word 20

.text

main: la $s0, vetor # s0 = &vetor

la $s1, tam # s1 = &tam

lw $s1, 0($s1) # s1 = tam

scan: beq $s1, $zero, fimscan # if s1 == 0 -> fimscan

li $v0, 4

la $a0, string

syscall # imprime string

li $v0, 5

syscall # le um valor

sw $v0, 0($s0) # salva em vetor[x]

addi $s0, $s0, 4

addi $s1, $s1, -1

j scan

fimscan: la $s0, vetor # s0 = &vetor

la $s1, tam # s1 = &tam

lw $s1, 0($s1) # s1 = tam

li $t0, 0 # t0 = 0 (i++)

addi $t1, $s1, -1 # t1 = s1 - 1 (tam - 1)

forI: beq $t0, $t1, fimforI # t0 == t1? (i == tam-1?)

add $t2, $t0, $zero # t2 = t0 (min = i)

addi $t3, $t0, 1 # t3 = t0 + 1 (j = i + 1)

forJ: beq $t3, $s1, fimforJ # t3 == s1? (j == tam)

li $t4, 4 # t4 = 4

mul $t5, $t3, $t4 # t5 = t3 * 4 (t5 = j*4)

add $t5, $s0, $t5 # t5 = &num[j]

lw $t5, 0($t5) # t5 = num[j]

mul $t6, $t2, $t4 # t6 = t2 * 4 (t6 = min*4)

add $t6, $s0, $t6 # t6 = &num[min]

lw $t6, 0($t6) # t6 = num[min]

slt $t7, $t5, $t6 # t7 = t5 < t6

beq $t7, $zero, falha

add $t2, $t3, $zero # min = j

falha: addi $t3, $t3, 1 # t3++ (j++)

j forJ

fimforJ: beq $t0, $t2, naomudar # t0 == t2 (i == min?)

mul $t8, $t0, $t4 # t8 = t3 * 4 (t8 = i * 4)

add $t8, $s0, $t8 # t8 = &num[j]

mul $t9, $t2, $t4 # t9 = t2 * 4 (t8 = min * 4)

add $t9, $s0, $t9 # t9 = &num[min]

lw $s2, 0($t8) # s2 = num[i]

lw $s3, 0($t9) # s3 = num[min]

sw $s3, 0($t8) # num[i] = s3

sw $s2, 0($t9) # num[min] = s2

naomudar: addi $t0, $t0, 1 # t0++ (i++)

j forI

fimforI: li $v0, 4

la $a0, string2 # imprime string2

syscall

print: beq $s1, $zero,

...

Baixar como  txt (6 Kb)   pdf (47.5 Kb)   docx (14 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no Essays.club