Você está na página 1de 2

1)

1 ADDI $s0, $zero, 3 Somando o valor 0 + 3 e colocando no registrador s0


2 ADDI $s1, $zero, 5 Somando o valor 0 + 5 e colocando no registrador s1
3 ADDI $s2, $zero, 7 Somando o valor 0 + 7 e colocando no registrador s2
4 SB $s0, -10($sp) Armazenar o valor contido em s0 = 3 na 10ª posição acima do
endereço que se encontra o StackPointer
5 SB $s0, -9($sp) Armazenar o valor contido em s0 = 3 na 9ª posição acima do
endereço que se encontra o StackPointer
6 SW $s0, -8($sp) Armazena na 8ª posição acima do endereço que se encontra o StackPointer o
byte mais significativo. O restante dos bites vão ser preenchidos abaixo do
valor declarado como o byte mais significativo.

O valor 3 foi armazenado na 5ª posição porque ele pede uma Store Word, logo, o byte que foi armazenado na
posição 8 será o mais significativo, contendo o valor 0, e isso irá acontecer até que seja preenchido todos os 32 bites.
Então como o valor 3 era o menos significativo, ele acabou ficando armazenado na 5ª posição, 3 endereços abaixo do
valor inicial dado, formando assim os 32 bites necessários.

2)

1 ADDI $s3, $zero, 15 Somando o valor 0 + 15 e colocando no registrador s3


2 ADDI $s4, $zero, 10 Somando o valor 0 + 10 e colocando no registrador s4
3 slt $t0, $s3, $s4 Comparação com os valores s3 e s4. O valor contido em s3 é maior do que
o valor de s4, logo t0 receberá 0.
4 beq $t0, $zero, Else Pulando para o Label Else caso o valor de t0 seja igual a 0.
5 add $s0, $s3, $s4 Não executado
6 j Fim Não executado
7 Else: sub $s0, $s3, $s4 Subtraindo o valor de s3 = 15 - 10 = s4, colocando então o valor 5 no
registrador s0
8 Fim: Não executado

O registrador s0 possui o valor 5.

3)

1 ADDI $s0, $zero, 24 Somando o valor 0 + 24 e colocando no registrador s0


2 ADDI $s1, $zero, 64 Somando o valor 0 + 64 e colocando no registrador s1
3 SLT $t0, $s0, $s1 Comparação com os valores s0 e s1. O valor contido em s1 é maior do que o
valor de s0, logo t0 receberá 1.
4 BNE $t0, $zero, L1 Pule para L1 se o valor contido em t0 não for igual a 0.
5 srl $t2, $s0, 2 Não executado
6 J FIM Não executado
7 L1:sll $t2, $s0, 2 Deslocando a esqueda 2 bits o valor contido em s0. Temos que s0 = 24, então
t2 irá conter o valor 96, após o deslocamento de 2 bits a esquerda.
8 FIM: Não executado

O registrador s0 possui o valor 24.

4)

1 ADDI $t0, $zero, 0 Somando o valor 0 + 0 e colocando no registrador t0


2 ADDI $t1, $zero, 5 Somando o valor 0 + 5 e colocando no registrador t1
3 L1: slt $t2, $t0, $t1 1 execução: Comparação com os valores t0 e t1. O valor contido em t1 é maior
do que o valor de t0, logo t2 receberá 1;
2 execução: Comparação com os valores t0 e t1. O valor contido em t1 é maior
do que o valor de t0, logo t2 receberá 1;
3 execução: Comparação com os valores t0 e t1. O valor contido em t1 é maior
do que o valor de t0, logo t2 receberá 1;
4 execução: Comparação com os valores t0 e t1. O valor contido em t1 é menor
do que o valor de t0, logo t2 receberá 0.
4 BEQ $t2, $zero, FIM 1 execução: Pule caso o valor t2 for igual a 0, porém t2 não é igual a 0;
2 execução: Pule caso o valor t2 for igual a 0, porém t2 não é igual a 0;
3 execução: Pule caso o valor t2 for igual a 0, porém t2 não é igual a 0;
4 execução: Pule para FIM, já que o valor contido em t2 é igual a 0.
5 ADDI $t0, $t0, 2 1 execução: Some o valor de t0 = 0 + 2, então t0 = 2;
2 execução: Some o valor de t0 = 2 + 2, então t0 = 4;
3 execução: Some o valor de t0 = 4 + 2, então t0 = 6;
6 j L1 Pule para L1;
7 FIM: Fim do programa

O registrador s0 possui apenas lixo de memória, visto que ele não foi declarado nem inicializado nas instruções dadas
na questão 4.

Você também pode gostar