



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento contiene información sobre las instrucciones mips, sus modos de direccionamiento y ejercicios resueltos. Aprende a identificar los modos de direccionamiento utilizados por las instrucciones bne, inc, j y sw, y resuelve ejercicios relacionados. Ideal para estudiantes de informática o ciencias de la computación.
Tipo: Exámenes
1 / 7
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




Nombre:...........................................................................................................
.data numero: .word 0x vector: .word 0xab0123ff,0x10,0x22,0x23,0x77,0x z: .space 20
Cuando se cargue el programa en memoria a) en la dirección vector+1 pondrá el valor 0x b) en la dirección vector+1 pondrá el valor 0xff c) en la dirección vector+1 pondrá el valor 0x d) Ninguna de las anteriores
d.8. Suponer un microprocesador con la siguiente instrucción máquina: STORE Inm8 [Ri], Inm Tiene los modos de direccionamiento inmediato y relativo a registro índice con pretautodecremento. Los registros son de 16 bits Suponiendo que R2 tiene el valor 1000, cuando se ejecute la instrucción STORE 8 [R2], 500 se accederá a la dirección de memoria 5.a. (^1008) 5.b. 1007 5.c. 1499 5.d. Ninguna de las anteriores es cierta.
d.9. De MIPS podemos decir:
a. Es un computador RISC b. Es un computador CISC c. (^) No es ni RISC ni CISC d. Ninguna de las anteriores es cierta.
3 (3. 4 puntos) Sabiendo que los datos se cargan a partir de la dirección 0x200 y las instrucciones a partir de la dirección 0x6000, $sp=0x70000, $ra=0. Responde a las siguientes preguntas:
Dirección (en hex)
.data
a= 200 b= 208 main= 6000 subr1= 602C
c. Ejecutamos el programa hasta la instrucción 1 incluida, indicar el contenido de :
PC= 602C MAR= 6010 SP= 70000 $RA= 6014
IR= 0c00180b
d. Ahora seguimos ejecutando y paramos en la instrucción 2 incluida, indicar el contenido de :
PC= 6034 MAR= 6fffc (es $sp+0) MDR= 6014 (es $ra) SP= 6fffc (es $sp inicial-4)
$RA= 6014 IR= afbf
e. Una vez ejecutado el programa entero indica el valor que se almacena en los registros:
$t0 = 20c $sp= 70000 $ra= 6014 (1er retorno)
f. Una vez ejecutado el programa, indica el valor que toman los bytes almacenamos en las direcciones :
c = 0a c+1= 0
4 (3 puntos) Hacer una rutina el lenguaje ensamblador MIPS llamada INTERCALATABLAS que dadas 2 tablas de enteros genere una tabla resultante con los elementos de las 2 tablas intercalados. El pase de parámetros será por referencia (la dirección de la tabla1 origen y tabla origen se la pasaremos en los registros $a0y $a1 respectivamente y la de la tabla resultante en $a2). Por valor le pasaremos el número de elementos de cada tabla que queremos intercalar. La rutina nos devolverá en $v0 la suma de todos los elementos de la tabla resultante. En la rutina obligatoriamente se usarán bucles para recorrer los vectores.
Hacer un programa principal que defina en memoria lo siguiente: int tabla1[4]={1,2,3,4}; int tabla2[4]={5,6,7,8}; int tabla3[4]={0x10,0x12,0x14,0x16}; int tablaintercalada1[8]; int tablaintercalada2[8]; int resul1= int resul2=
y llame a la rutina anterior 2 veces:
Comentar el programa escrito en lenguaje ensamblador. No se corregirá el programa si no está comentado.
beq $a3,$0, finrutina addi $a3,$a3,-1 # lw $t0,0($a0) #leo tabla origen sw $t0,0($a2) # escribo en tabla intercalada add $v0,$v0,$t0 # addi $a2,$a2, 4 lw $t0,0($a1) #leo tabla origen sw $t0,0($a2) # escribo en tabla intercalada add $v0,$v0,$t0 #
addi $a2,$a2, 4 addi $a0,$a0, 4 addi $a1,$a1, 4 j bucle finrutina: jr $ra