Sumatoria Assembler

Páginas: 6 (1421 palabras) Publicado: 22 de noviembre de 2012
UNIVERSIDAD DE SANTIAGO DE CHILE
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA

Laboratorio N°2.
“Sumatoria en Assembler”


1. Funcionamiento general del programa.
Fórmula:
i=0N-12Πa Nebi 6a Ni=0N-1ebi
Cte. Sumatoria

Se omitirá la función de coloreo y bienvenida.
Conversión de string a hexadecimal,consiste en restar el carácter ‘0’, ya que esto en hexadecimal es 30h.
Obtención de números y conversión:
Se llama a puts, el cuál muestra el mensaje por pantalla pidiendo un número, ya sea a,b o N. cada uno está representado por un mensaje distinto. Luego se llama a getn, el cual almacena en una pila los registros bx,cx,dx; e inicializa bx y cx, que se utilizarán posteriormente para guardarlos dígitos. Desde getn se llama a getc, el cual obtiene el carácter desde teclado y se guarda en el registro al, se compara si es un signo negativo, si no es así salta a la función newline, la cual verifica si en el registro al se encuentra un salto de línea o no. Si hay salto de línea entonces salta a fin_read, sino entonces convierte el string a hexadecimal de la forma anteriormente mencionada yguarda el valor de al en cl. Una vez realizado esto vuelve a llamar a getc, para obtener un nuevo carácter; y entra en un loop llamado read_loop, el cual compara si el valor almacenado en al es un salto de línea o no, si es así salta a fin_read, en caso contrario continúa y convierte el string a hexadecimal, coloca el valor convertido que se encontraba en al a bl. Es decir, los primeros dígitoslos guarda en cl y el segundo en bl. Continuando con el proceso de read_loop, asigna a ax el valor 10 y lo multiplica con el primer dígito que se en encuentra en cx. Esto se hace para crear la decena y luego suma cx y bx. En definitiva lo que hace es:

Figura1: Ejemplo ingreso y conversión de string a hexadecimal.
Convierte el número a hexadecimal, a través de sus dígitos por separado de la formarepresentada por la figura1. El resultado queda en ax, pero luego se cambia cx para repetir el proceso en caso de continúe el loop. Sino, salta a fin_read y vuelve a colocar el número en ax.
Este proceso se repite para la obtención de a,b y N.
Cálculo de cte.
Una vez obtenidos estos valores en hexadecimal se procede a calcular la cte. La cual es sólo ocupar las instrucciones mul y div paraluego guardar el valor en cte.
Cálculo de sumatoria.
Ahora sí, comienza la parte esencial del laboratorio, se llama a la función suma. Este procedimiento parte decrementando N en uno y se guarda en cx, ya que este será el contador de la sumatoria que ira de i=0 a i=N-1. En este caso se calculará primero el exponente b*i con i=N-1, N-2 , etc, hasta llegar a cero. Una vez decrementado N comienza elloop sumatoria, el cual guarda N-1 en ac; luego guarda b*i en ax. Si cx es cero salta a exp_cero, el cual suma uno al resultado que será guardado en bx. Si cx no es cero, entonces se llama a la potencia_euler, la cual se explicará después, pero arroja como resultado ebi en el i que se tenga en el momento y se almacena en ax. Una vez finalizada la potencia_euler para el valor de i, se agrega alresultado ax al resultado total que está en bx (bx=bx+ax), se asigna ac a cx y si cx es cero salta a exp_cero, sino vuelve a realizar el loop sumatoria.
Cálculo de potencia Euler (ebi).
Potencia_euler es el procedimiento que almacena b*i en cx, luego se decrementa 1 a cx y se le suma euler a ax, el cuál estaba en cero, por lo que quedaría ax=3. Si cx es cero se llama a termina, el cual como dicesu nombre termina el procedimiento. Si cx no es cero, entonces comienza el loop llamado exp_e el cual multiplica b*i-1 veces euler, ya que inicialmente ya se tenía ax=euler, por eso no se hacen b*i veces sino b*i-1.
En general, se tiene que ebi se almacena en ax y el resultado de la sumatoria se va almacenando en bx.
Luego de obtener el resultado total en bx, se coloca en ax para luego llamar...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Assembler
  • Assembler
  • Assembler
  • sumatorias
  • assembler
  • Sumatoria
  • sumatorias
  • SUMATORIAS

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS