{baenav, anegretem}@uninorte.edu.co Universidad del Norte
Uso de un microprocesador para sacar la raíz
cuadrada de un número algoritmo en lenguaje de ensamblador capaz de ser ejecutado por el simulador Z80 Simulator IDE de la Resumen—En el presente informe se muestran los compañía OshonSoft. 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 A. Algoritmo y lógica largo del desarrollo, se detalla el problema asignado y los pasos para solucionarlo, utilizando el simulador del El algoritmo solución del problema es mostrado a procesador Z80. Durante el transcurso del informe se muestra y se explica el algoritmo que da solución a la situación continuación: presentada. ;--------------Programa Principal---------------------- Índice de Términos—Lenguaje ensamblador microprocesador, simulador, memoria de datos ORG 0000H JR INICIO ORG 0080H I. INTRODUCCIÓN INICIO: El microprocesador es un circuito integrado LD A, (0F850H) encargado de procesar y ejecutar instrucciones codificadas en lenguaje binario [1]. Se distingue por raiz: LD B, 00FFH su velocidad interna, que determina el acceso a LD E, 01H cy: inc B memoria y el repertorio de instrucciones y programas dec E que puede procesar. El microprocesador Z80 realiza dec E las funciones de una unidad central de proceso ADC A, E (CPU), interpretando las instrucciones que le son jr C, Loop dadas mediante el lenguaje de ensamblador [2]. En este caso, el software es modificado para que el LD(0F860H), B procesador realice una determinada tarea con un FIN: algoritmo de programación de bajo nivel. jr FIN END Es importante resaltar que el algoritmo empleado se realizó de manera sencilla utilizando el método ; -------------------------FIN------------------------------- iterativo, ya que el microprocesador Z80 no puede realizar operaciones complejas como la multiplicación y la división de manera directa. Como primera medida se utiliza la función ORG para dejar el espacio de primera página y comenzar a II. PLANTEAMIENTO DEL PROBLEMA escribir en la memoria del microprocesador desde la Se desea emplear un microprocesador para hallar dirección 0080H, en la llamada “memoria de la raíz cuadrada de un número cualquiera ubicado en programa”. A partir de este valor de memoria se una dirección de memoria asignada por el usuario. escribe todo el programa a realizar.
III. PLANTEAMIENTO DE LA SOLUCIÓN 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 Para solucionar el problema se desarrollará un ya que este es valor máximo que cabe en 8 bits. Este valor es extraído de la memoria RAM, es decir, que B. Diagrama de bloques y Diagrama de flujo de la se encuentra ubicado en una dirección de memoria solución. entre F800H y FFFFH. Seguidamente, se define a B como contador a partir del valor FFH y se carga E con el valor 01H.
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, IV. CONCLUSIONES y desde ahí se procede a guardar el dato en alguna dirección de la memoria RAM. En esta práctica, se pudo evidenciar cómo es posible utilizar un conjunto de operaciones básicas de forma Este código presenta ventajas y desventajas, siendo no muy compleja y que pueda realizar operaciones las ventajas que es muy sencillo y ocupa muy poca más complejas con el uso de un microprocesador. Al memoria de programa, ya que tiene muy pocas presentar un código simple que ocupa poca memoria instrucciones. Por otro lado, presenta la condición de de programa se puede evidenciar cómo es posible que ser un algoritmo cuyo tiempo de duración intercambiar complejidad de programa por velocidad depende de que tan grande sea el número a sacar la de procesamiento, de forma que se puede elegir a raíz, ya que esta se calcula contando el número de cual darle más relevancia dependiendo de la iteraciones del programa. También tiene la aplicación a realizar. limitación de trabajar con números menores a 255, ya que se utiliza un registro de 8 bits para almacenar V. REFERENCIAS 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. [1] R.Tokheim. Fundamentos de los microprocesadores. McGraw-Hill, 1991. [2] R. Zaks. Programaciòn del Z80. Anaya Multimedia, 1990.