Você está na página 1de 20

Arquitetura de

Computadores
Prof. Rodrigo Monteiro de Aquino
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3
● Endereço de memória de a e de b estão armazenado em $s1 e $s2,
respectivamente

1)
if (a != b)
a=b-1
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3
● Endereço de memória de a e de b estão armazenado em $s1 e $s2,
respectivamente

1)
lw $t0, 0($s1) # Valor de a no registrador $t0
if (a != b)
lw $t1, 0($s2) # Valor de b no registrador $t1
a=b-1 beq $t0, $t1, FIM # Desvio se forem iguais
addi $t0, $t1, -1 # Subtrai 1 do valor de b e armazena em $t0
FIM: sw $t0, 0($s1) # Armazena valor de a novamente na memória
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3
● Endereço de memória de a e de b estão armazenado em $s1 e $s2,
respectivamente

2)
while (a != b)
a += 1
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3
● Endereço de memória de a e de b estão armazenado em $s1 e $s2,
respectivamente

2) lw $t0, 0($s1) # Valor de a no registrador $t0


lw $t1, 0($s2) # Valor de b no registrador $t1
while (a != b) LOOP:beq $t0, $t1, FIM # Saída do laço se forem iguais
a += 1 addi $t0, $t0, 1 # Soma 1 ao valor de a
J LOOP # Retorna para a instrução LOOP
FIM: sw $t0, 0($s1) # Armazena valor de a novamente na memória
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios

Aula passada:
Converta os códigos a seguir em instruções assembly do
MIPS:
● i: registrador $s3
● base do array arr1 está em $s4
● Endereço de memória de a e de b estão armazenado
em $s1 e $s2, respectivamente

3)
while (arr[i] != b)
a += b
i+=1
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
lw $t2, 0($s1) # Valor de a no registrador $t2
lw $t3, 0($s2) # Valor de b no registrador $t3
Exercícios LOOP: sll $t0, $s3, 2# $t0 = i *4
add $t0, $t0, $s4 # Endereço de arr1[i]
Aula passada: lw $t1, 0($t0) # Valor de arr1[i] no registrador $t1
beq $t1, $t3, FIM # Desvio se forem iguais
Converta os códigos a seguir em instruções assembly do
add $t2, $t2, $t3 # Soma b ao valor de a
MIPS: addi #s3, #s3, 1 # Soma 1 ao valor de i
● i: registrador $s3 J LOOP # Retorna para a instrução LOOP
● base do array arr1 está em $s4 FIM: sw $t2, 0($s1) # Armazena valor de a na memória
● Endereço de memória de a e de b estão armazenado
em $s1 e $s2, respectivamente

3)
while (arr[i] != b)
a += b
i+=1
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios
Converta os códigos a seguir em instruções assembly do
MIPS:
● i: registrador $s3;
● base do array arr1 está em $s4
● base do array arr2 está em $s5
● base do array arr3 está em $s6
● Endereço de memória de a e de b estão armazenado em
$s1 e $s2, respectivamente

4) i = 0 ;
while ( i !=5 )
arr3[i] = arr1[i] + arr2[i]
i+=1
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
addi $s3, $zero, 0 # Valor 0 no registrador $s3 (i)
Exercícios LOOP: sll $t0, $s3, 2# $t0 = i *4
add $t1, $t0, $s4 # Endereço de arr1[i]
Converta os códigos a seguir em instruções assembly do lw $t2, 0($t1) # Valor de arr1[i] no registrador $t2
MIPS: add $t1, $t0, $s5 # Endereço de arr2[i]
lw $t3, 0($t1) # Valor de arr2[i] no registrador $t3
● i: registrador $s3;
add $t1, $t0, $s6 # Endereço de arr3[i]
● base do array arr1 está em $s4 lw $t4, 0($t1) # Valor de arr3[i] no registrador $t4
● base do array arr2 está em $s5 addi $t5, $zero, 5 # Valor 5 no registrador $t5
● base do array arr3 está em $s6 beq $s3, $t5, FIM # Desvio se forem iguais
● Endereço de memória de a e de b estão armazenado em add $t4, $t2, $t3 # Soma arr1[i] com arr1[i] e
armazena em arr3[i]
$s1 e $s2, respectivamente
addi #s3, #s3, 1 # Soma 1 ao valor de i
sw $t4, 0($t1) # Armazena valor de arr3[i] na
4) i = 0 ; memória
while ( i !=5 ) J LOOP # Retorna para a instrução LOOP
arr3[i] = arr1[i] + arr2[i] FIM:
i+=1
Arquitetura de Computadores
Os registradores da arquitetura MIPS
Arquitetura de Computadores
As instruções MIPS
Arquitetura de Computadores
As instruções MIPS
Arquitetura de Computadores
Códigos das instruções MIPS
Arquitetura de Computadores
Representação de caracteres
● Padrão American Standard Code for Information Interchange (ASCII)
● Representação com 8 bits
Arquitetura de Computadores
Diferença de 32
Representação de caracteres
● Padrão American Standard Code for Information Interchange (ASCII)
● Representação com 8 bits
Arquitetura de Computadores
Outros comandos para leitura/escrita da memória

● Load Byte:
○ lb $s1, 20($s2) # Carrega os 8 bits menos significativos do valor na posição de memória apontada por $s2
● Store Byte:
○ sb $s1, 20($s2) # Carrega os 8 bits menos significativos do valor na posição de memória apontada por $s2

● Load Half:
○ lh $s1, 20($s2) # Carrega os 16 bits menos significativos do valor na posição de memória apontada por $s2
● Store Half:
○ sh $s1, 20($s2) # Carrega os 16 bits menos significativos do valor na posição de memória apontada por $s2
Arquitetura de Computadores
Exercícios
1) Converta o seguinte código em instruções MIPS:

● Endereço de memória de a está armazenado em $s1

a = 3*a

Obs: Utilize o que aprendemos na aula passada para resolver esta questão
Arquitetura de Computadores
Exercícios
2) Converta o seguinte código em instruções MIPS:

● Endereço de memória de a está armazenado em $s1

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
Fim!

Prof. Rodrigo Monteiro de Aquino


rodrigo.aquino@eseg.edu.br

Você também pode gostar