Anda di halaman 1dari 3

Laboratorio 2 – Arquitectura de Computadores 2

Juan David Castro Cardona, Guillermo Stiven Murillo Pantoja


Facultad de Ingeniería
Universidad del Valle
juan.david.castro@correounivalle.edu.co​, murillo.guillermo@correounivalle.edu.co

INTRODUCCIÓN -Después de ejecutar la instrucción jal, en el registro $ra queda


almacenado la dirección de la instrucción que se utiliza para
Este informe tiene como objetivo dar respuesta a ciertos volver al programa principal cuando la subrutina ha finalizado
interrogantes generados a partir del ensamble y ejecución de que es 00400010.
dos bloques de código en el cual se realizan operaciones y
asignaciones de valores con diversos registros mediante un 4. ¿En qué registro se pasa el parámetro del programa? ¿Qué
programa llamado Simula3MSv4_12. valor tiene?
Para dar respuesta a estos interrogantes se adoptará una serie de
análisis exhaustivos a cada línea del código, y ver los cambios -El parámetro del programa se pasa en el registro $ra.
que se dan en cada ciclo con el fin de conocer qué hace el -Tiene como valor 00400010.
sistema internamente y como se puede manipular con
diferentes pseudoinstrucciones. 5. ¿En qué registro se pasa el resultado del programa? ¿Qué
valor tiene?
DESARROLLO CUESTIONARIO
PARTE I. LLAMADAS A SUBRUTINAS -El resultado del programa se pasa al registro $v0
-Tiene como valor 0000000a.
1. ¿Cuál es la instrucción de llamada a la subrutina? ¿Cuáles
son las dos acciones que realiza esta instrucción? ¿Cuál es su 6. ¿Qué instrucción se utiliza para volver al programa principal
codificación binaria? ¿En qué campos se descompone? cuando la subrutina ha terminado? ¿Cuál es la codificación
binaria de esta instrucción? ¿En qué campos se divide?
-La instrucción de llamada a la subrutina es la instrucción jal
sub1. -La instrucción que se utiliza cuando la subrutina ha terminado
-La primera acción que realiza esta instrucción es modificar el es la instrucción jr $ra.
valor del PC por aquel al que apunta la etiqueta que es -Codificación numérica de la instrucción jr: 0x03e00008
0040001c y la segunda acción que realiza es almacenar la -Codificación binaria de la instrucción jr:
dirección actual del PC en $ra que es 00400010.
000000 11111 00000 00000 00000 001000
-Codificación numérica de la instrucción jal: 0x0c100007
-Codificación binaria de la instrucción jal: -Se divide en los siguiente campos según el Formato Tipo R:

000011 00000100000000000000000111 OP RS RT RD SHAMT FUNCT

-Se descompone en los siguiente campos según el Formato


Tipo J: 7. ¿Cuál es la codificación binaria de la instrucción add? ¿En
qué campos se descompone? ¿Cuál es el valor de cada campo
OP TARGET en decimal?

2. ¿Cómo se construye la dirección de salto de la instrucción -Codificación numérica de la instrucción add: 0x00841020
jal? -Codificación binaria de la instrucción add:
000000 00100 00100 00010 00000 100000
-La dirección de salto de la instrucción jal se va construyendo a
partir de ir adicionando de 4 en 4 bits al contador del programa -Se descompone en los siguiente campos según el Formato
(PC), hasta llegar al final de la instrucción, que es 0040001c. Tipo R:
OP RS RT RD SHAMT FUNCT
3. ¿Qué queda almacenado en el registro $ra después de
-Valor de cada campo en decimal:
ejecutar la instrucción jal?
0 4 4 2 0 32
000000 00000 01001 01100 00000 101010
8. ¿Cuál es la codificación binaria de la instrucción lw? ¿En
qué campos se descompone? ¿Cuál es el valor de cada campo -Se descompone en los siguiente campos según el Formato
en decimal? ¿En qué dirección de memoria se almacena? ¿Qué Tipo R:
dirección de memoria lee? OP RS RT RD SHAMT FUNCT

-Codificación numérica de la instrucción lw: 0x8d040000


2. ¿Cuál es la codificación binaria de la instrucción beq?¿En
-Codificación binaria de la instrucción lw:
qué campos se descompone? ¿A qué dirección de memoria
100011 01000 00100 0000000000000000 salta?¿Cómo se hace la traducción del campo inmediato a la
-Se descompone en los siguiente campos según el Formato dirección de salto? Hazlo.
Tipo I:
-Codificación numérica de la instrucción beq: 0x11800008
OP RS RT OFFSET -Codificación binaria de la instrucción beq:
-Valor de cada campo en decimal: 000100 01100 00000 0000000000001000
35 8 4 0 -Se descompone en los siguiente campos según el Formato
-La dirección de memoria en la que se almacena es: Tipo I:
[0x00400008] OP RS RT OFFSET
-La dirección de memoria que lee es: [0x10010000]

9. ¿Cuál es la codificación binaria de la instrucción addi? ¿En 3. ¿Cuál es la codificación binaria de la instrucción j?¿En qué
qué campos se descompone? ¿Cuál es el valor de cada campo campos se descompone? ¿A qué dirección de memoria salta?
en decimal? ¿Cómo se hace la traducción del campo dirección dentro de la
instrucción a la dirección de salto?
-Codificación numérica de la instrucción addi: 0x2002000a
-Codificación binaria de la instrucción addi: -Codificación numérica de la instrucción j: 0x08100011
-Codificación binaria de la instrucción j:
001000 00000 00010 0000000000001010
000010 00000100000000000000010001
-Se descompone en los siguiente campos según el Formato
Tipo I: -Se descompone en los siguiente campos según el Formato
Tipo J:
OP RS RT IMMEDIATE
OP TARGET
-Valor de cada campo en decimal:
8 0 2 10 4. ¿Cuál es la instrucción que se utiliza para cargar un carácter?
¿Qué codificación binaria tiene la instrucción? ¿En qué campos
10. ¿Qué modos de direccionamiento usa la instrucción sw? se divide?
¿En qué dirección de memoria se almacena? ¿En qué dirección
de memoria escribe? -La instrucción que se utiliza para cargar un carácter es: lb
$t3,0($t0)
-Los modos de direccionamiento que utiliza la instrucción sw -Codificación numérica de la instrucción lb: 0x810b0000
son los de direccionamiento indirecto a registro con -Codificación binaria de la instrucción lb:
desplazamiento. 100000 01000 01011 0000000000000000
-Se almacena en la dirección de memoria: [0x00400010]
-Se divide en los siguiente campos según el Formato Tipo I:
-Se escribe en la dirección de memoria: [0x1001000]
OP RS RT OFFSET
PARTE II. SALTOS
5. ¿Cuál es la instrucción que se utiliza para almacenar un
1. ¿Cuál es la codificación binaria de la instrucción slt? ¿En
carácter? ¿Qué codificación binaria tiene la instrucción? ¿En
qué campos se descompone?
qué campos se divide?

-Codificación numérica de la instrucción slt: 0x0009602a


-La instrucción que se utiliza para almacenar un carácter es: sb
-Codificación binaria de la instrucción slt:
$t3, 0($t0)
-Codificación numérica de la instrucción sb: 0xa10b0000
t 0111 0100 116 74
-Codificación binaria de la instrucción sb:
101000 01000 01011 0000000000000000 a 0110 0001 97 61

-Se divide en los siguiente campos según el Formato Tipo I: t 0111 0100 116 74
OP RS RT OFFSET a 0110 0001 97 61

6. ¿Cuál es la codificación binaria de la instrucción andi? ¿En CONCLUSIONES


qué campos se descompone? ¿Para qué se utiliza en este
programa? Un programa en ensamblador está compuesto por líneas,
conteniendo cada una de ellas un comentario, una pauta o una
-Codificación numérica de la instrucción andi: 0x316bffdf única instrucción. Con esto podemos concluir que es un
-Codificación binaria de la instrucción andi: lenguaje creado a base de instrucciones para intentar sustituir el
001100 01011 01011 1111111111011111 lenguaje máquina por uno similar utilizado por el hombre.
Tal como se puede observar, el lenguaje ensamblador es un
-Se descompone en los siguiente campos según el Formato lenguaje de muy bajo nivel con una dificultad elevada en
Tipo I: comparación con lenguajes de un nivel más alto, es necesario
OP RS RT IMMEDIATE conocer el funcionamiento, arquitectura y el conjunto de
instrucciones de una CPU para poder programar para ella, pero
-Se utiliza en este programa para poner en $t3 el resultado de
en contraste, es un lenguaje que se sigue utilizando para según
aplicar AND lógico entre $t3 y 0xFFDF.
qué campos debido al buen rendimiento que se puede
conseguir con él, no comparable con el de otros lenguajes de
7. ¿Qué diferencia hay entre la instrucción lb $t3, 0($t0) y la
alto nivel como puede ser Java, C++ o C.
instrucción lw $a1, 0($a1) en cuanto a operación que realizan y
en cuanto a dirección a la que acceden en memoria?

-La instrucción lb $t3, 0($t0) carga en el registro


$t3=00000070 sólo el byte de memoria apuntado por la
dirección almacenada en el registro $t0=10010000. Mientras
que en la instrucción lw $a1, 0($a1) carga en el registro
$a1=00000006 toda la palabra almacenada en la dirección de
memoria que contiene el registro $a1=10010008.

8. ¿En qué posición de memoria se encuentra la instrucción lb


$a2, 0($a2)?

-La instrucción de memoria lb $a2, 0($a2) está en la posición


de memoria: [0x0040001c]

9. ¿En qué posición de memoria se encuentra el dato etiquetado


como n?

-El dato etiquetado como n está en la posición de memoria:


0x10010008

10. ¿Cuál es la representación ASCII de “patata"?

Representacion Binario Decimal Hex


Carácter

p 0111 0000 112 70

a 0110 0001 97 61

Anda mungkin juga menyukai