Está en la página 1de 12

1

ARQUITECTURA DEL COMPUTADOR

ENTREGADO A:

ARTURO CASTILLO

ENTREGADO POR:

Jose Albeiro Pardo Mora Código. 191102204


Juan David León Código: 100215739
Wilinton Garcia Gonzalez Código: 1721023904
Lizandro Carvajal Ramos Código:

INSTITUCIÓN UNIVERSITARIA POLITÉCNICO GRANCOLOMBIANO 


FACULTAD DE INGENIERÍA, DISEÑO E INNOVACIÓN 
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN Y
TELECOMUNICACIONES 
INGENIERÍA DE SOFTWARE 
2

Contenido

1. INTRODUCCION 2
2. OBJETIVOS GENERALES 3
2.1 Objetivos específicos: 4
3. PLANTEAMIENTO DEL PROBLEMA 4
4. REPRESENTACION GRAFICA DEL ALGORITMO 4
5. CODIGO EN ALTO NIVEL 6
3

1. INTRODUCCION

Desde hace unas décadas el mundo digital viene creciendo rápidamente, haciendo que el
hombre viva un constante cambio y una nueva era de la información. Actualmente
tenemos muchas herramientas que nos facilitan el acceso a mayor información de la que
teníamos antes las cuales en su momento eran inimaginables. La arquitectura del
computador, el avance de los ordenadores, las constantes actualizaciones y
mejoramientos han logrado que día tras día la capacidad de almacenamiento, gestión de
datos, la fluidez de las redes sea cada vez mayor. Es por este motivo que conocer a fondo
la arquitectura del computador nos permitirá determinar las posibilidades que tenemos
con estos aparatos en cuanto a las operaciones que vamos a realizar y lo que podemos
llegar a crear en un futuro próximo.
4

2. OBJETIVOS GENERALES

Se pretende desarrollar un programa para determinar si un número es primo o no,


permitiendo representar de manera sencilla el diagrama de flujo y los códigos en alto
nivel para poder analizar y conocer la información más relevante para la construcción de
este programa. Esta representación es una forma cercana al lenguaje de programación que
vamos a utilizar.

2.1 Objetivos específicos:

● Diseñar la representación gráfica del código.


● Creación del código en alto nivel.
● Especificar las instrucciones requeridas para determinar si un número es
primo o no.
5

3. PLANTEAMIENTO DEL PROBLEMA

Buscamos elaborar un código, en el cual podamos determinar si un número es primo o


no. Cuando identificamos y clasificamos todos los datos de requerimientos para el
desarrollo del trabajo, obtuvimos el esquema de representación gráfica y el desarrollo del
código en alto nivel.

4. REPRESENTACION GRAFICA DEL ALGORITMO

1. Documento con el diseño del algoritmo, en pseudocódigo o un lenguaje de


programación en alto nivel, que dé solución al problema: “Determinar si un número
es primo o no”. Adicionalmente, se debe especificar qué tipos de instrucciones
pueden ser requeridas para la solución del problema, de acuerdo con el algoritmo
diseñado.
6

- Se ingresa un dato de tipo numérico.


- mientras que i sea igual o menor a número se ejecuta la condición número/i.
- si la condición es correcta contador aumenta en 1.
- si contador es <=2 el número es primo.

Para ello se desarrolló el proyecto en Android studio.

5. CODIGO EN ALTO NIVEL


7

Código java

Código XML

<?xml version="1.0" encoding="utf-8"?>


<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
8

android:layout_height="wrap_content"
android:text="Determinar si un numero es primo"
android:textColor="@color/black"
android:textSize="36sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.047" />

<TextView
android:id="@+id/txtrespuesta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:text="respuesta"
android:textColor="@color/black"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnvalidar" />

<EditText
android:id="@+id/edtnumero"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:ems="10"
android:hint="Ingrese un numero entero"
android:inputType="number"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />

<Button
android:id="@+id/btnvalidar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:text="Validar"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtnumero" />

</androidx.constraintlayout.widget.ConstraintLayout>
9

Resultado
10

Listado de Instrucciones
A continuación, podemos observar la definición detallada del conjunto de instrucciones
que se van a usar en el presente proyecto asi:
Instrucción Detalle
Li Dar valor al registro

Rem Obtener el residuo de una división


Beq Instrucción condicional, preguntar si un valor es igual a otro

Les Instrucción condicional, preguntar si un valor es menor que otro


Add Instrucción aritmética de suma

Mul Instrucción aritmética de multiplicación


Sw Instrucción, guardar un dato en una posición de RAM

Jump Instrucción de control, saltar a otra línea del programa

Teniendo este listado de instrucciones es posible determinar que se utilizaran 3 digitos


binarios para el código de cada instrucción.
Nombre mnemónico y parámetros que recibe:
Nombre mnemónico Parámetros que recibe

Li R# Valor(R# el numero del registro que se le va a dar el


valor)
Rem R#a, R#b, R#c Tres operandos que son residuo, dividendo y divisor

Beq R#e, R#f Dos operandos


Les R#g, R#h Dos operandos

Add R#i, R#j, R#k Tres operandos que son resultado y sus dos sumandos
Mul R#l, R#m, R#n Tres operandos que son resultado y sus factores

Sw R#1, 0 (R#2) Primer operando es el valor a guardar y el segundo


operando es el espacio a utilizar donde se va a guardar en
la RAM
Jump # Rotulado que indica el renglón donde se realizara el salto
11

del programa

Descripción de una frase indicando que hace en términos de lo que recibe como
parámetro:

Descripción de una frase ( que hace en términos de lo que recibe como parámetro)

Li R2 5 (al registro numero 2 se le da el valor de 5)


Rem R1, R2, R3 ( 0 =residuo de 10/5, suponiendo que R2 vale 10, R3 vale 5)

Beq R1, R2 (R1==R2)


Les R2, R3 (R2<R3)

Sum R5, R2, R3 (R5= R2+R3)


Mul R6, R2, R3 (R6= R2*R3)

Sw R1, 0 (R2)
Jump 0111

2. Definición de la cantidad de registros que se usaran y el tamaño de cada registro

Se necesitaran un total de 15 registros, teniendo como tamaño 8 bits. Haciendo uso de


registros de estado y de control se utilizaran las siguientes instrucciones:

 Registro de instrucción (IR)


 Contador de instrucciones (PC)
 Registro de memoria (MAR)
 Registro intermedio de memoria (MBR)
12

3. Descripción breve de los modos de direccionamiento que serán posibles.

Modos de direccionamiento Instrucción Justificación


Directo a registro Rem R1, R2, R3 ( 0 =residuo
de 10/5, suponiendo que R2
vale 10, R3 vale 5)

Directo a registro Sum R5, R2, R3 (R5= R2+R3)


operación aritmética que
Directo a registro Mul R6, R2, R3 (R6= R2*R3) afecta directamente al
Directo a registro registro

Directo a registro

Transferencia de datos Sw R1, 0 (R2) Comunicación con la RAM


Pseudodirecto Jump # (rotulado, indica el Saltos en el código
renglón donde se realizara el resaltando en la tipografia
salto del programa)

Indirecto a registro Sw R1, 0 (R2) Interacción con la RAM

También podría gustarte