Escolar Documentos
Profissional Documentos
Cultura Documentos
Computadores
Prof. Rodrigo Monteiro de Aquino
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios
1)
if (a != b)
a=b-1
a
s ad
s
Pa
la
Au
Arquitetura de Computadores
Exercícios
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
2)
while (a != b)
a += 1
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:
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:
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:
if a²+b² == c²
d=1
else:
d=0
Obs: Utilize o que aprendemos na aula passada para resolver esta questão
Fim!