Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ENTREGA 3
PROFESOR:
1. Introducción
2. Objetivo General
3. Objetivos específicos
4. Actividad # 1
21 for (int y = 2; y < numero / 2; y++) Instrucción
aritmética
inmediata
23 if (numero % y == 0) return false; Instrucción
salto
condicional
43 if (Primo(numero)) { Instrucción
condicional
la $a0
Instrucción: la rd, dir
Descripción: Carga dirección (Load Address)
Carga en el registro rd la dirección dir. Esta instrucción carga la dirección y no el valor almacenado en
dicha dirección.
li $v0 5
Instrucción: li rd, inm
Descripción: Carga inmediato (Load inmediate)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
jal primo
Instrucción: jal etiq
Descripción: Salta y enlaza (Jump and link)
Salta incondicionalmente a la instrucción marcada con etiq, guardando la dirección de la siguiente
instrucción.
move $t1,$v0
Instrucción: move rd, ro
Descripción: Mueve (Move)
Copia el valor del registro general ro en el registro general rd.
beq $t1,1
Instrucción: beq ro1, ro2, etiq
Descripción: Bifurcación si igual (Branch on equal)
Salta, si los valores de los registros ro1 y ro2 cumplen una relación, a la instrucción marcada con etiq.
Estas instrucciones son retardadas.
beq $t1,0,elseif
Instrucción: beq ro1, ro2, etiq
Descripción: Bifurcación si igual (Branch on equal)
Salta, si los valores de los registros ro1 y ro2 cumplen una relación, a la instrucción marcada con etiq.
Estas instrucciones son retardadas.
jr $ra
jr $ra
Instrucción: jr rd
Descripción: Salta a registro (Jump register)
Salta a la dirección especificada por el valor del registro rd.
la $a0 si_primo
Instrucción: li rd, inm
Descripción: Carga inmediato (Load inmediate)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
j fin
j fin
Instrucción: j etiq
Descripción: Salto (Jump)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
la $a0 no_primo
Instrucción: li rd, inm
Descripción: Carga inmediato (Load inmediate)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
move $s0, $a0
Instrucción: move rd, ro
Descripción: Mueve (Move)
Copia el valor del registro general ro en el registro general rd.
li $t0,0
Instrucción: li rd, inm
Descripción: Carga inmediato (Load inmediate)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
beq $s0,0,ret
Instrucción: beq ro1, ro2, etiq
Descripción: Bifurcación si igual (Branch on equal)
Salta, si los valores de los registros ro1 y ro2 cumplen una relación, a la instrucción marcada con etiq.
Estas instrucciones son retardadas.
beq $s0,1,ret
Instrucción: beq ro1, ro2, etiq
Descripción: Bifurcación si igual (Branch on equal)
Salta, si los valores de los registros ro1 y ro2 cumplen una relación, a la instrucción marcada con etiq.
Estas instrucciones son retardadas.
beq $s0,4,ret
Instrucción: beq ro1, ro2, etiq
Descripción: Bifurcación si igual (Branch on equal)
Salta, si los valores de los registros ro1 y ro2 cumplen una relación, a la instrucción marcada con etiq.
Estas instrucciones son retardadas.
li $t1,2
Instrucción: li rd, inm
Descripción: Carga inmediato (Load inmediate)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
j for
j for
Instrucción: j etiq
Descripción: Salto (Jump)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
rem $t2, $s0,$t1
Instrucción: rem rd, ro1, ro2
Descripción: Resto (Remainder)
Pone en el registro rd el resultado de calcular el resto de la división entre los valores de los registros ro1
y ro2.
addi $t1,$t1,1
Instrucción: addi rd, ro1, inm
Descripción: Suma palabra inmediata (Add word inmediate)
Suma el valor del registro ro1 y el del valor inmediato de 16 bits inm, y deja el resultado en el registro
rd.
blt $t1,$t3,for
Instrucción: blt ro1, ro2, etiq
Descripción: Bifurcación si menor que (Branch on less than)
Salta, si los valores de los registros ro1 y ro2 cumplen una relación, a la instrucción marcada con etiq.
Estas instrucciones son retardadas.
j ret
Instrucción: j etiq
Descripción: Salto (Jump)
Carga el valor inmediato inm de 16 bits en la parte baja (li) del registro rd.
del 0 al 31,para una palabra de 32 bits, 4 bytes. Los registros tendrán el siguiente
registro mnemotécnico
$0 Cero Cero permanentemente
$1 $at Ensamblador temporal (reservado)
$2, $3 $v0; $v1 Valor retornado por una sub-rutina
$4, $7 $a0 -$a3 Argumentos a subrutina
$8 - $15 $t0 - $t7 Temporales – no se preservan al
una función
$24 - $25 $t8 - $t9 Temporales
$26 - $27 $k0 - $k1 Kernel (reservados para OS)
$28 $gp Global pointer
$29 $sp Stack pointer
$30 $fp Frame pointer
$31 $ra Dirección de retorno
3. Descripción breve de los modos de direccionamiento que serán posibles.
En este punto se especifican las reglas de localización en este caso el dato que
lleva a cabo la función con facilidad dado que usa un direccionamiento el cual
Directo
Inmediato
Directo
El byte o par de bytes que siguen al código OP de la instrucción el cual da paso a
.text
main: li $v0 4 #print_string, 4 codigo llamada
la $a0 solicitud #parametro numero
syscall #llamada al sistema,imprime $a0
li $v0 5 #read_int, 5 codigo llamada
syscall #solicita numero
move $a0 $v0 #guarda read en parametro
jal primo #llama a primo
move $t1,$v0 #mueve respuesta de jal primo a
t1
beq $t1,1,if #si es verdadero, if
beq $t1,0,elseif #si es falso,elseif
jr $ra
ret: #return
move $v0, $t0 #retorno v0
jr $ra #direccion de retorno
fin:
BINARIO HEXADECIMAL
1111 0000 f0
1111 0001 f1
1111 0010 f2
1111 0011 f3
1111 0100 f4
1111 0101 f5
1111 0110 f6
1111 0111 f7
1111 1000 f8
1111 1001 f9
1111 0001 0000 f10
1111 0001 0001 f11
1111 0001 0010 f12
1111 0001 0011 f13
1111 0001 0100 f14
1111 0001 0101 f15
1111 0001 0110 f16
1111 0001 0111 f17
1111 0001 1000 f18
1111 0001 1001 f19
1111 0010 0000 f20
1111 0010 0001 f21
1111 0010 0010 f22
1111 0010 0011 f23
1111 0010 0100 f24
1111 0010 0101 f25
1111 0010 0110 f26
1111 0010 0111 f27
1111 0010 1000 f28
1111 0010 1001 f29
1111 0011 0000 f30
1111 0011 0001 f31
6. ALU en Logisim, que pueda ejecutar las instrucciones requeridas por el programa.
En diseño fue elaborado en Logisim, en el archivo complementario a éste informe.
1. Archivo .circ, realizado sobre Logisim, que incluye: Memoria de Programa, ALU,
Control).
Estos dos bloques conformar el circuito del Banco de registros del procesador, son 8
registros para los VR y 8 registros para los FT, por temas de facilidad se trabajo con
visibilidad, con respecto al funcionamiento tiene dos entradas de un bit para grabar el
dato, según el tipo de variable, otra entrada de un bit para activar el multiplexor de las
variables FT, y por último una entrada de un bit para el Reset. Tiene dos entradas de 8
bits para saber la dirección y otras dos para recibir el dato que se desea guardar.
Parte 2 – Circuito Unidad de Control
La unidad de control revisa una instrucción de 32 bit que está compuesta con una secuencia
dada para poder ejecutar la tarea que se le está diseñando, lo que se hizo fue ir controlando
las salidas dividiendo en 4 grupos de 8 bits cada una de las instrucciones recibidas, así tener
memoria ROM y así ir leyendo cada instrucción, se tiene dos salidas para controlar los Jump
del programa las demás salidas son con el fin de controlar como se va ir guardando la
información en los registros, cuando grabar, cuando activar el multiplexor de las variables
FT.
Parte 3: Memoria ROM, Contador y Sumador
Esta parte del circuito representa el contador, que cuenta las instrucciones que se van
ejecutando, la entrada “Activar contador” nos servirá para simular los pulsos de Reloj, el
sumador nos sirve para ir incrementando el valor a cada pulso de reloj, por eso tiene una
entrada con la constante 1, el bloque de Memoria nos permite ir guardando cada una de las
operar, tiene 7 operaciones: Suma, División, Modulo, Igual, Menor, Menor o igual y And,
entre los registros y la CPU que nos ayudará a controlar esta parte.
ALU
Suma
División
Menor que
Igual
Registros
Dato VR
Grabar en la dirección elegida
Resetear dato VR
Unidad de Control
Grabar dato VR
4.
Activar Jump 2
5.
Activar Jump 1
Grabar dato FT
6.
Activar salida VR
Activar salto a la posición 9
7.
Main
matemáticas para determinar si un número es primo; registros, los que guardan los
resultados obtenidos; la memoria ROM, que registra y guarda cada una de las
procesamiento en memoria.
Obtuvimos una arquitectura de microprocesador, el cual permite llevar a cabo una
resultado para el usuario que ingresa los números en la entrada del sistema.
acciones de cada uno de los componentes: ULA; memoria RAM, memoria ROM;