Simu Proc

SimuProc – Raíces cuadradas Estudiante: Jorge Fco. Ancan M. Profesor: Alejandro Mellado Introducción Las personas comú

Views 111 Downloads 0 File size 304KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

SimuProc – Raíces cuadradas

Estudiante: Jorge Fco. Ancan M. Profesor: Alejandro Mellado

Introducción Las personas comúnmente que utilizan los computadores, nunca se han preguntado como hace el computador para resolver un simple suma de la calculadora, o mas aun cualquier tipo de aplicación o función que esta realice, solo sabe que puede hacer múltiples tareas. Pero conocerá en profundidad como la CPU y memoria realizan los procesos, a continuación veremos un muy simple programa que calcula la raíz cuadrada, pero no será en los lenguajes

de programación convencionales, será en código ensamblador en el software SimuProc, para asi poder entender de mejor manera los pasos que realiza una computadora para realizar este simple problema.

Algoritmo double raiz(double x) { double r = x, t = 0; while (t != r) { t = r; r = (x/r + r)/2; } return r; } Con este algoritmo se plantea como calcular la raíz cuadrada de un número cuales quiera, que no sea negativo. Se utilizara SimuProc para programar nuestro ejercicio en código ensamblador.

Código MSG "Ingrese el numero al cual le desea" IN ax,1 ; Ingreso el numero STF 080 ; Lo guardo en la dirección 080 STF 082 ; variable a LDF 084 ; variable b SUBF 082 ; le resto a JEQ 00F ; salto si es verdadero, si no comienza el while LDF 082 ; cargo a

STF 084 ; cambio valores b=a LDF 080 ; cargo x DIVF 082 ; x / a ADDF 082 ; + a DIVF 086 ; / 2 STF 082 ; se almacena en la variable a JMP 004 ; finalizo el ciclo, salto a la dir 4 MSG ' La raiz cuadrada de su numero es : ' LDF 082 OUT 1,ax ; muestro el resultado en pantalla HLT ; termino #084 0000000000000000 ; valor 0 en 32bits asignado a b 0000000000000000 0100000000000000 ; valor 2 en 32bits 0000000000000000

¿Qué hace la CPU al procesar toda esta información? Así lo muestra en programa. Primero lee en PC la próxima dirección a ejecutar que es 000 Envía al Mar la próxima dirección de mem a leer Lleva al MDR el contenido de dicha dirección de memoria Le entrega al IR el dato para que lo decodifique e incremento el PC Escribe en pantalla un mensaje Lee en PC la próxima dirección a ejecutar : 001 Envía al MAR la próxima dirección de mem a leer Lleva al MDR el contenido de dicha dirección de memoria Le entrega al IR el dato para que lo decodifique e incremento el PC Lee un valor flotante positivo o negativo. Para luego llevarlo a bx y ax El puerto 1 retorno 0000000000000 lo escribirá en ax Lee en PC la próxima dirección a ejecutar : 002 Envía al mar la próxima dirección de mem a leer Lleva a MDR el contenido de dicha dirección de memoria Le entrega a IR el dato para que lo decodifique e incremento el PC Esto se repite 2 veces, creando un bucle que sigue las manillas de un reloj.

Ejemplo: Si quisiéramos calcular la raíz cuadrada de 25 con nuestro programa, lo único que tenemos que hacer es introducir en número en la ventana emergente, como muestra la figura 1.

Figura 1. Después de que el SimoProc, simule la ejecución del programa como si fuera una CPU trabajando, obtendremos la siguiente ventana emergente presentada en la figura.

Figura 2 Finalmente se obtiene el resultado como muestra la figura número 3.

Figura 3. Muestra el resultado que como nuestro numero era 25, su raíz cuadrada es 5. ¿Qué quiere decir Double y While? Cuando nos referimos al comando “Double” estamos especificando qué tipos de datos vamos a trabajar,(enteros o

flotantes) en este caso, es tipo FLOAT, la función de este es que guarda el dato de 32 bits en 2 casillas, de 16 y 16 bits. Y cuando hablamos del comando “While” nos referimos a un bucle de programación, el cual en español quiere decir “Mientras” sirve como condición para un código.

Conclusión En el presente informe se demostró la CPU realiza operaciones matemáticas, de una forma “fácil” y rápida, utilizando los comandos correspondientes, dando así el resultado esperado. Se trabajó con bucles porque era lo más lógico para el problema planteado, los números resultantes podrían ser superiores a 16 bits por creo el doble uso de casillas en el código, los saltos en código ensamblador son muy útiles. Se sostiene que se aprendió bastante sobre el funcionamiento de la máquina y lenguaje ensamblador.