TALLER ARQUITECTURA DE COMPUTADORES

14

Click here to load reader

description

TALLER

Transcript of TALLER ARQUITECTURA DE COMPUTADORES

Page 1: TALLER ARQUITECTURA DE COMPUTADORES

TALLER ARQUITECTURA DE COMPUTADORES

1. ¿Cuál de las siguientes afirmaciones es falsa?a) El lenguaje ensamblador es un lenguaje de alto nivel. (F)b) El lenguaje ensamblador es un lenguaje muy cercano al procesador. Vc) Los programas en lenguaje ensamblador son habitualmente más largos VQue en lenguaje C.d) El lenguaje ensamblador es específico para cada tipo de procesador. V

R/ a) El lenguaje ensamblador es un lenguaje de alto nivel. (F)La afirmación es falsa Porque el lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.

7. ¿Qué modo de direccionamiento se utiliza en una instrucción de saltoIncondicional?a) Registrob) Relativo al PCc) Pseudo directod) Base más desplazamiento

R/ c) Pseudo directo

Instrucciones de salto (incondicional)Pseudo directo

Page 2: TALLER ARQUITECTURA DE COMPUTADORES

la dirección de salto son los 26 bits menos significativos de la instrucción, desplazados 2 posiciones a la izquierda y concatenados con los 4 bits más significativos del PC.

Ejercicio 1

Suponemos: • Las variables a, b y c se almacenan en los registros $s0, $s1, $s2,

respectivamente. • La dirección del primer elemento de la tabla de palabras A (es decir

A[0]) se encuentra almacenada en el registro $s3. • La dirección del primer elemento de la tabla de palabras B (es decir

B[0]) se encuentra almacenada en el registro $s4. • Las variables i, j se almacenan en los registros $s5, $s6,

respectivamente.

Instrucciones:

• Solo podemos utilizar las instrucciones: add, addi, sub, lw y sw.

• No podemos usar más registros que los anteriormente comentados, salvo los registros temporales $t0-$t7.

1.1) Traduce las siguientes instrucciones a ensamblador: a) a = b + c; a = a + 10; a = a –b + 2; addi $s0,$t0,2a = b; add $s0, $s1, $s2

Page 3: TALLER ARQUITECTURA DE COMPUTADORES

addi $s0, $s0, 10sub $t0, $s0, $s1addi $s0, $t0, 2add $s0, $s1, $0

b) a = b + c; a = a – A[2]; add $s0, $s1, $s2lw $t0, 8($s3) sub $s0, $s0, $t0

c) a = 2*(b+c) – 2*A[3]; B[2] = a + 4*c;

add $t0, $s1, $s2add $t0, $t0, $t0 lw $t1, 12 ($s3) add $t1, $t1, $t1sub $s0, $t0, $t1add $t0, $s2, $s2add $t0, $t0, $t0add $t0, $s0, $t0sw $t0, 8($s4)

d) A[i] = 2*A[i+1];add $t0, $s5, $s5add $t0, $t0, $t0 add $t1, $s3, $t0 lw $t3, 4($t1) add $t3, $t3, $t3sw $t3, 0(t1)

e) A[i] = B[j+1] + A[i+1]add $t0, $s5, $s5add $t0, $t0, $t0add $t1, $s3, $t0 lw $t2, 4($t1) add $t4, $s6, $s6

Page 4: TALLER ARQUITECTURA DE COMPUTADORES

add $t4, $t4, $t4add $t5, $s4, $t4 lw $t6, 4($t5) add $t7, $t7, $t7sw $t7, 0($t1)

1.2) Traduce las instrucciones del ejercicio b a código máquina.

Ejercicio 2Suponemos:

• Inicialmente los registros $s0, $s1, $s2 almacenan los números enteros: 10, 12, 8, respectivamente.

• Inicialmente el registro $s3 contiene la dirección: 0x10000008 • En la memoria se almacenan los siguientes valores:

Dirección palabra Dato

0x00000014 50 0x10000010 40 0x1000000C 10 0x10000008 30 0x10000004 20 0x10000000 10

¿Qué contendrá el registro $t0 después de la ejecución de los siguientes programas?

Page 5: TALLER ARQUITECTURA DE COMPUTADORES

a) add $s0,$s1,$s2 --$s0=20sub $t0,$s0,$s2 ---$t0=12 hexadecimal ( 0000000C)

Registros al finalizar ejecución del programa pcspim

Respuesta: el registro ---$t0= decimal (12) hexadecimal ( 0000000C)

b) lw $t1,4($s3) --- acceso mem 0x0000000C, t1 = 10addi $t0,$t1,10 --- t0 = 10 + 10 = 20t0 = 20

Registros al finalizar ejecución del programa

Respuesta: el registro $t0 = decimal (20) hexadecimal (00000014)

c) sw $s0,8($s3) --- copia en mem 0x10000010 dato 10lw $t0,8($s3) ----- acceso mem 0x10000010, t0 = 10t0 = 10

Page 6: TALLER ARQUITECTURA DE COMPUTADORES

Registros al finalizar ejecución del programa

Respuesta: el registro $t0 = decimal(10) hexadecimal( 0000000A )

d) addi $t0,$s3,4 --- t0 = 0x10000008+4 = 0x0000000Clw $t0, 4($t0) -------acceso mem 0x0000000C + 4 = 0x10000010t0 = 40

Respuesta: el registro $t0 = decimal(40) hexadecimal(00000028)

Ejercicio 3

a) slt $t0, $s0, $s1 ---$t0=1 (00000001 )

Registros al finalizar ejecución del programa

Page 7: TALLER ARQUITECTURA DE COMPUTADORES

Respuesta: el registro $t0 = decimal (1) hexadecimal(00000001 )

b) slt $t1, $s0, $s1 ---10 < 12 -> 1 -> $t1=1beq $t1, $zero, fin ---No saltaslt $t1, $s0, $s2 --- 10 < 8 $t1=0beq $t1,$zero, fin ---Saltaaddi $t0, $s0, 10 fin: add $t0, $s0, $0---$t0=10 (0000000A)

registros al finalizar ejecución del programa

Respuesta: el registro $t0 = decimal(10) hexadecimal(0000000A )

c) slt $t1, $s0, $s1 ---10 < 12 ---$t1=1beq $t1, $zero, fin --- No Salta slt $t1, $s2, $s0 ---8< 10 ---$t1=1beq $t1,$zero, fin --- No Salta $addi $t0, $s0, 10 fin: $add $t0, $s0, $0 ---- t0 = 10

registros al finalizar ejecución del programa

Page 8: TALLER ARQUITECTURA DE COMPUTADORES

Respuesta: el registro $t0 = decimal(10) hexadecimal (0000000A)

d) slt $t1, $s0, $s1 -----10 < 12 beq $t1, $zero, fin ----- NO slt $t1, $s0, $s2 ------10< 8 bne $t1,$zero, fin -------NO $addi $t0, $s0, 10 fin: $add $t0, $s0, $0----t0 = 10

registros al finalizar ejecución del programa

Respuesta: el registro $t0 = decimal (10) hexadecimal (0000000A)

e) bne $s0, $s1, sino ---si pasa a la etiqadd $t0, $s0, $s1 j fin sino: sub $t0, $s1, $s0 ---$t0=2fin:

Page 9: TALLER ARQUITECTURA DE COMPUTADORES

registros al finalizar ejecución del programa

Respuesta: el registro $t0 = decimal (2) hexadecimal (00000002)

f) addi $s0, $s0,2 ---$s0=12bne $s0, $s1, sino ---no pasa a la etiqadd $t0, $s0, $s1 ---$t0=24j fin sino: sub $t0, $s1, $s0 fin:

registros al finalizar ejecución del programa

Respuesta: el registro $t0 = decimal (24) hexadecimal(00000018)

Page 10: TALLER ARQUITECTURA DE COMPUTADORES

g)bucle: slt $t1, $s0, $s1 ----- 1, 5, 9beq $t1, $zero, fin_bucle---- 2, 6, 10addi $s0,$s0,1 # 3, 7j bucle # 4, 8fin_bucle: add $t0, $s0, $zero ---- 11 t0 = 12

registros al finalizar ejecución

Respuesta: el registro $t0 = decimal (12) hexadecimal (0000000c)

h)bucle: slti $t1, $s0, 16 ----- 1,5,9,13beq $t1, $zero, fin_bucle ----2,6,10,14addi $s0,$s0,2 #3,7,11j bucle #4,6,12fin_bucle: add $t0, $s0, $zero ------15 t0 = 16

registros al finalizar ejecución

Page 11: TALLER ARQUITECTURA DE COMPUTADORES

Respuesta: el registro $t0 = decimal (16) hexadecimal (00000010)

i)bucle: beq $s0,$s1,fin_bucle -----1,4,7addi $s0, $s0, 1 -----2,5j bucle #3,6fin_bucle: add $t0, $s0, $zero -----8 t0 = 12

registros al finalizar ejecución

Respuesta: el registro $t0 = decimal (12) hexadecimal (0000000C)

j)b1: slt $t0, $s0, $s1 ----,1,5,9beq $t0, $zero, b2 ------2,6,10addi $s0, $s0, 1 ----------3,7j b1 #4,8b2: slt $t0, $s0, 17 ------11,15,19,23

Page 12: TALLER ARQUITECTURA DE COMPUTADORES

beq $t0,$zero,fin ---------12,16,20,24addi $s0, $s0, 2 -----------13,17,21j b2 #14,18,22fin: add $t0,$s0,$zero ----25 t0 = 18

Registros al finalizar ejecución

Respuesta: el registro $t0 = decimal (18) hexadecimal (00000012 )