Você está na página 1de 2

Lista de Exercícios

Aula prática de mips – 2018-1


Engenharia da Computação

Faça cada programa em um arquivo separado, com nome dado por #lista-#questao.asm,
por exemplo: 1-1.asm, 1-2.asm, etc.

Atenção: o código de todas as questões deverá estar claramente comentado, pois


caso contrário a correção será muito dificultada. É de seu interesse colaborar com a
correção!
Obs: os exercícios 1 e 2 deverão ser entregues no mesmo dia da aula prática (por
email).
Os demais exercícios (3 a 7) deverão ser entregues até a data marcada no calendário
como entrega da lista.

1. Codifique um programa correspondente ao pseudo-código abaixo para Assembly


MIPS. int x = 7;
int y = 11;
int z = 0;

if ( x >
y)
z=
y>>2;
else
z=

2. Dados três valores X, Y, Z, verificar se eles podem ser os comprimentos


dos lados de um triângulo. Se eles não formarem um triângulo, escrever o valor
1 no registrador v1($3) caso contrário (formam um triângulo) escrever o
valor 1 no registrador (2),(3) ou (4) caso eles formem um triângulo equilátero,
isósceles ou escaleno respectivamente. Antes da elaboração do
algoritmo, torna‐se necessária a revisão de algumas propriedades e
definições.
Propriedade ‐ O comprimento de cada lado de um triângulo é menor do
que a soma dos comprimentos dos outros dois lados.

Definição 1 ‐ Chama‐se triângulo equilátero aqueles que têm os


comprimentos dos três lados iguais,
Definição 2 ‐ Chamam‐se triângulos isósceles os que têm os
comprimentos de dois lados iguais.
Definição 3 ‐ Chama‐se triângulo escaleno aqueles que têm os
comprimentos dos três lados diferentes.

3. Dado três inteiros Hora, Min e Sec, faça um programa que converta esse horário em
segundos, armazene em um dos registradores temporários e na memória (posição à
sua escolha).
Obs.: Não é permitido usar a função mult.
4. Traduza o código em C abaixo para assembly MIPS. Suponha que a base do array
A e B estão em $a0 e $a1 respectivamente. Evite o uso da instrução de
multiplicação.

Int A[10], B[10];


for (i=1; i < 10; i++) {
     A[i] = A[i-1] + B[i];
}

5. Desenvolva um programa que recebe como entrada um array de inteiros a e


escreve em um outro array b todos os números primos contidos em a.
Ex.: a = [2, 4, 7, 17, 25] → b = [2,7,17]
Obs.: assuma que só serão testados números no intervalo [1, 100].

6. Implemente (recursivamente) na linguagem de montagem do MIPS, uma função que


receba dois números a e b ( b >= a) e retorne a soma de todos os números contidos
no intervalo [a,b]. Se a > b, o valor 1 deverá ser armazenado no registrador v1 e o
programa encerrado.

7. Implemente a função de Fibonacci, de forma que ela receba um inteiro como


parâmetro e retorna o número de Fibonacci do mesmo. Use recursão.

Sequência de Fibonacci:

F1 = 1, F2 = 1

Fn = Fn-1 + Fn-2

Enviar exercícios para o seu respectivo monitor!


Boa Sorte!

Você também pode gostar