Está en la página 1de 4

Alumno:

Alumno:
Grupo:

Sesión III

Codificación de las instrucciones

El objetivo de esta sesión es comprobar y practicar lo estudiado en teorı́a acerca de la


codificación binaria de las instrucciones, campos en los que se divide, contenido de cada campo,
etc. También se comprobará su direccionamiento en memoria. Y se seguirán practicando los
conceptos básicos vistos en la sesión anterior.
Al finalizar esta sesión de prácticas se reconocerá la codificación binaria de una instrucción
situada en el segmento de texto y se sabrá identificar cada uno de sus campos. Se reconocerá la
dirección de memoria de cada instrucción y se comprenderá la restricción de alineación.

1. Carga y ejecuta el siguiente código:

# programa primero.s
#
# segmento de texto

.text
.globl main

main:
la $t0,array
la $t1,count
lw $t1,0($t1)
lw $t2,0($t0)
addi $t0,$t0,4
addi $t1,$t1,-1

Loop:
lw $t3,0($t0)
slt $t4,$t3,$t2
bne $t4,$0,notmax
add $t2,$t3,$0

notmax:
addi $t1,$t1,-1
addi $t0,$t0,4
bne $t1,$0,Loop

addi $v0,$0,10
syscall

# segmento de datos
.data
array: .word 3,4,9,8,5,1
count: .word 6

# fin

Contesta a las siguientes cuestiones:

Explica paso a paso lo que hace el código, utilizando la siguiente tabla. Indica en
la segunda columna el valor de los registros implicados en la instrucción en curso
después de que esta se haya ejecutado. En la tercera columna explica brevemente lo
que hace la instrucción.
Código Contenido de los Finalidad de la instrucción
registros

la $t0,array

la $t1,count

lw $t1,0($t1)

lw $t2,0($t0)

addi $t0,$t0,4

addi $t1,$t1,-1

lw $t3,0($t0)

slt $t4,$t3,$t2

bne $t4,$0,notmax

add $t2,$t3,$0

addi $t1,$t1,-1

addi $t0,$t0,4

bne $t1,$t0,Loop

addi $v0,$0,10

syscall

¿Cuántos ciclos tarda en ejecutarse?

¿Qué queda almacenado en el registro $t2 al final de la ejecución? ¿Qué representa?

Si quisiera imprimir este número por pantalla, ¿qué instrucciones necesitarı́a añadir
y dónde? Pruébalo.
¿Cúal es la codificación binaria de la instrucción add? ¿En qué campos se descom-
pone? ¿Cuál es el valor de cada campo en decimal?

¿Cúal es la codificación binaria de la primera instrucción addi? ¿En qué campos se


descompone? ¿Cuál es el valor de cada campo en decimal?

¿Cúal es la codificación binaria de la instrucción bne (con etiqueta Loop)?¿En


qué campos se descompone? ¿Cuál es el valor de cada campo en decimal? Expli-
ca la traducción de la etiqueta Loop.

¿Qué modo de direccionamiento usa la instrucción bne?

Describe como se implementa la pseudo-instrucción la

¿En que dirección de memoria se almacena slt?

¿En que dirección de memoria se almacena la instrucción siguiente a slt?

¿Qué diferencia hay entre esas dos direcciones de memoria (es decir, cuantos bits o
cuantos bytes separan ambas instrucciones)? ¿Por qué?

¿A partir de que dirección de memoria se almacena el vector {3,4,9,8,5,1}? ¿Dónde


está situada, en el segmento de datos o en el segmento de texto?

También podría gustarte