Segundo Informe

Baena, Victor y Camacho, Ana {baenav, anegretem}@uninorte.edu.co Universidad del Norte Uso de un microprocesador para s

Views 109 Downloads 2 File size 285KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Baena, Victor y Camacho, Ana {baenav, anegretem}@uninorte.edu.co Universidad del Norte

Uso de un microprocesador para sacar la raíz cuadrada de un número Resumen—En el presente informe se muestran los resultados de la segunda práctica de la asignatura Microprocesadores, en la cual se busca hallar la raíz cuadrada de un número cualquiera ubicado en la memoria de datos. A lo largo del desarrollo, se detalla el problema asignado y los pasos para solucionarlo, utilizando el simulador del procesador Z80. Durante el transcurso del informe se muestra y se explica el algoritmo que da solución a la situación presentada. Índice de Términos—Lenguaje microprocesador, simulador, memoria de datos

ensamblador

I. INTRODUCCIÓN El microprocesador es un circuito integrado encargado de procesar y ejecutar instrucciones codificadas en lenguaje binario [1]. Se distingue por su velocidad interna, que determina el acceso a memoria y el repertorio de instrucciones y programas que puede procesar. El microprocesador Z80 realiza las funciones de una unidad central de proceso (CPU), interpretando las instrucciones que le son dadas mediante el lenguaje de ensamblador [2]. En este caso, el software es modificado para que el procesador realice una determinada tarea con un algoritmo de programación de bajo nivel. Es importante resaltar que el algoritmo empleado se realizó de manera sencilla utilizando el método iterativo, ya que el microprocesador Z80 no puede realizar operaciones complejas como la multiplicación y la división de manera directa. II. PLANTEAMIENTO DEL PROBLEMA Se desea emplear un microprocesador para hallar la raíz cuadrada de un número cualquiera ubicado en una dirección de memoria asignada por el usuario. III.

PLANTEAMIENTO DE LA SOLUCIÓN

Para solucionar el problema se desarrollará un

algoritmo en lenguaje de ensamblador capaz de ser ejecutado por el simulador Z80 Simulator IDE de la compañía OshonSoft. A. Algoritmo y lógica El algoritmo solución del problema es mostrado a continuación: ;--------------Programa Principal---------------------ORG 0000H JR INICIO ORG 0080H INICIO: LD A, (0F850H) raiz: LD B, 00FFH LD E, 01H cy: inc B dec E dec E ADC A, E jr C, Loop LD(0F860H), B FIN: jr FIN END ; -------------------------FIN-------------------------------

Como primera medida se utiliza la función ORG para dejar el espacio de primera página y comenzar a escribir en la memoria del microprocesador desde la dirección 0080H, en la llamada “memoria de programa”. A partir de este valor de memoria se escribe todo el programa a realizar. Luego en el inicio del programa principal se carga el número al cual se le quiere sacar raíz cuadrada en el acumulador (A). Dicho número debe ser menor a 255 ya que este es valor máximo que cabe en 8 bits. Este

valor es extraído de la memoria RAM, es decir, que se encuentra ubicado en una dirección de memoria entre F800H y FFFFH. Seguidamente, se define a B como contador a partir del valor FFH y se carga E con el valor 01H.

B. Diagrama de bloques y Diagrama de flujo de la solución.

Para hallar la magnitud de la raíz cuadrada, se crea un lazo de instrucciones que se desarrolla de la siguiente manera: se incrementa el valor de B en uno y el del registro E se decrementa en dos, dando como nuevos valores de B y E a, 00H y FFH respectivamente. Luego, se suman los valores del acumulador (A), del registro E con la bandera carry (CF) mediante el comando ADC. Esto da como resultado un número que sobrepasará los 8 bits disponibles de almacenamiento del acumulador (A), y que excede las 255 combinaciones posibles del registro en un valor igual al número al cual se le desea hallar la raíz cuadrada. Después de realizada esta suma se evalúa el estado de la bandera carry (CF), y si esta se encuentra en 1, se realizan otra vez las instrucciones del lazo. A medida que se repite el mismo, el resultado de la suma realizada con el comando ADC que se guarda en el acumulador irá disminuyendo hasta llegar a un número menor a 255, por lo que el valor de la bandera de Carry se hará 0 y de esta forma saldrá del ciclo de instrucciones. El resultado del cálculo de la raíz cuadrada se encuentra en el registro B, por lo que, para poder guardarlo en memoria, el valor de B se guarda en A, y desde ahí se procede a guardar el dato en alguna dirección de la memoria RAM. Este código presenta ventajas y desventajas, siendo las ventajas que es muy sencillo y ocupa muy poca memoria de programa, ya que tiene muy pocas instrucciones. Por otro lado, presenta la condición de que ser un algoritmo cuyo tiempo de duración depende de que tan grande sea el número a sacar la raíz, ya que esta se calcula contando el número de iteraciones del programa. También tiene la limitación de trabajar con números menores a 255, ya que se utiliza un registro de 8 bits para almacenar este dato. Al ser un código sencillo, se puede adaptar para utilizar los pares de registros HL y DE para lograr operaciones con números más grandes y de esta forma solventar la limitación.

IV. CONCLUSIONES En esta práctica, se pudo evidenciar cómo es posible utilizar un conjunto de operaciones básicas de forma no muy compleja y que pueda realizar operaciones más complejas con el uso de un microprocesador. Al presentar un código simple que ocupa poca memoria de programa se puede evidenciar cómo es posible intercambiar complejidad de programa por velocidad de procesamiento, de forma que se puede elegir a cual darle más relevancia dependiendo de la aplicación a realizar. V.

REFERENCIAS

[1] R.Tokheim. Fundamentos de microprocesadores. McGraw-Hill, 1991.

los

[2] R. Zaks. Programaciòn Multimedia, 1990.

del

Z80.

Anaya