Você está na página 1de 6

Arquitetura de

Computadores
Prof. Rodrigo Monteiro de Aquino
Arquitetura de Computadores
lw $t0, 0($s1) # Valor da variável a no registrador $t0
add $t2, $zero, $t0 # registrador resposta em $t2
Exercícios
iniciado com o valor de a
1) Converta o seguinte código em instruções MIPS: addi $t1, $zero, 3 # contador em $t1, iniciado em 2
LOOP: beq $t1, $zero, FIM # quando contador for 0, desviar
add $t2, $t2, $t0 # a = a + a
● Endereço de memória de a está addi $t1, $t1, -1
armazenado em $s1 J LOOP
FIM: sw $t2, 0($s1) # Armazena valor final na memória

a = 3*a

Obs: Utilize o que aprendemos na aula passada


para resolver esta questão
Arquitetura de Computadores
lw $t0, 0($s1) # Valor da variável a no registrador
$t0
Exercícios
add $t2, $zero, $t0 # registrador resposta em $t2
2) Converta o seguinte código em instruções iniciado com o valor de a
MIPS: addi $t1, $t0, -1 # contador em $t1, iniciado com o
valor a -1
LOOP: beq $t1, $zero, FIM # quando contador for 0,
● Endereço de memória de a está desviar
armazenado em $s1 add $t2, $t2, $t0 # a = a + a
addi $t1, $t1, -1
J LOOP
FIM: sw $t2, 0($s1) # Armazena valor final na memória
a = a²

Obs: Utilize o que aprendemos na aula


passada para resolver esta questão
Arquitetura de Computadores
Exercícios
3) Converta o seguinte código em instruções MIPS:

● Endereços de memória de a, b, c e d estão armazenados em $s1, $s2, $s3 e $s4


respectivamente

if a²+b² == c²
d=1
else:
d=0

Obs: Utilize o que aprendemos na aula passada para resolver esta questão

Resolução na próxima página


if a²+b² == c²
d=1
else:
d=0

lw $t0, 0($s1) # Valor de a no registrador $t0 QUAD: beq $t6, $zero, FL # quando contador for 0, desviar
lw $t1, 0($s2) # Valor de b no registrador $t1 add $t4, $t4, $t3 # valor = valor + valor
lw $t2, 0($s3) # Valor de c no registrador $t2 addi $t6, $t6, -1
addi $t3, $t0,0 # Registrador de incremento $t3 com a J QUAD
addi $t4, $t0,0 # Registrador de resultado $t4 com a FL: beq $t5, $s1, RETA # quando registrador for tiver o endereço de A,
addi $t5, $s1, 0 # Registrador de indicação de retorno desviar para RETA
addi $t6, $t0, -1 # contador em $t5, iniciado com o valor a -1 beq $t5, $s2, RETB # quando registrador for tiver o endereço de B,
J QUAD # Desvio para operação desviar para RETB
RETA: add $t0, $zero, $t4 # resultado de a² add $t2, $zero, $t4 # resultado de c²
addi $t3, $t1,0 # Registrador de incremento $t3 com b add $t7, $t0, $t1 # t7 armazena a²+b²
addi $t4, $t1,0 # Registrador de resultado $t4 com b beq $t7, $t2, IG # Se a²+b² == c² desvia para IG
addi $t5, $s2, 0 # Registrador de indicação de retorno sw $zero, 0($s4) # Armazena valor 0 na memória
addi $t6, $t1, -1 # contador em $t5, iniciado com o valor b -1 referente a variável d
J QUAD # Desvio para operação
RETB: add $t1, $zero, $t4 # resultado de b²
J FIM
addi $t3, $t2,0 # Registrador de incremento $t3 com c IG: addi $t7, $zero, 1
addi $t4, $t2,0 # Registrador de resultado $t4 com c sw $t7, 0($s4) # Armazena valor 1 na memória
addi $t5, $s3, 0 # Registrador de indicação de retorno referente a variável d
addi $t6, $t2, -1 # contador em $t5, iniciado com o valor c -1
FIM:
J QUAD # Desvio para operação
Fim!

Prof. Rodrigo Monteiro de Aquino


rodrigo.aquino@eseg.edu.br

Você também pode gostar