Vous êtes sur la page 1sur 13

Manual de Ensamblador

ARQUITECUTRA DE COMPUTADORAS

14 de marzo de 2011
Autor: Gustavo Lima – 200611383
Universidad de San Carlos de Guatemala
Manual de Ensamblador

INTRODUCCION

En el presente documento se plantea una solución a 3 métodos

Numericos haciendo uso del lenguaje ensamblador. Los métodos

tomados en cuenta son el Método de Steffenesen, Newton-Raphson

y Método de Müller. Dichos problemas son acompañados de una

gráfica que muestra la tendencia del polinomio en un orden de

hasta grado 5.

Ensamblador, es un lenguaje que se ejecuta a bajo nivel del

microprocesador, actualmente utilizando cuando se quiere

manipular directamente dispositivos de hardware, obtener un

alto rendimiento al manipular el uso de recursos del

computador, por lo cual es muy utilizado para la ejecución de

cálculos matemáticos complejos.

Los métodos numéricos serán técnica con la cuales podremos

formular problemas matemáticos de manera tal que solo se


Manual de Ensamblador | 14/03/2011

necesite utilizar operaciones aritméticas comparten la

característica de que realizan una serie de iteraciones hasta

llegar a una solución.

1
OBJETIVOS

Generales

 Manejar el lenguaje ensamblador de una forma fácil.

 Conocer los cálculos matemáticos a bajo nivel

Específicos

 Aprender a manejar números de coma flotante.

 Conocer el uso del fpu.

Manual de Ensamblador | 14/03/2011

2
Descripción de Macros Utilizados.

Una macro es un nombre simbólico que damos a una serie de

caracteres o a una o más sentencias. Cuando el ensamblador

evalúa cada línea de un programa, si encuentra el nombre de

una macro, la sustituye por el texto de ésta en un proceso que

se conoce como "expansión de una macro", por lo que es

evidente que se debería de procurar que las macros más

utilizadas tengan el menor código posible.

%macro imp 1

Contenido

%endmacro

Macro encargado de la impresión de una cadena recibida como

parámetro.

Etiquetas
Manual de Ensamblador | 14/03/2011

Realiza un salto incondicional hacia la dirección, etiqueta o

procedimiento especificado. A diferencia de la

instrucción JMP, la instrucción CALL realiza un salto a una

subrutina con retorno. El salto puede ser cercano o lejano.

3
En el primer caso, la dirección a la que salta corresponde al

offset dentro del segmento de código actual, por lo que, antes

de realizar el salto, CALL guarda en la pila el contenido

de IP, el cual apunta a la instrucción inmediatamente después

de la instrucción CALL.

En el segundo caso, la dirección a la que salta corresponde a

un offset dentro de otro segmento de código, por lo que, antes

de realizar el salto, CALL guarda en la pila el contenido

de CS e IP(CS:IP), el cual apunta a la instrucción

inmediatamente después de la instrucción CALL.

Una vez realizado el salto, se ejecutarán las instrucciones

que allí hubiera hasta encontrar la sentencia RET, la cual

extrae de la pila la dirección de retorno almacenada con CALL.

Más importantes:

 Grado_Polinomio:

Ret
Manual de Ensamblador | 14/03/2011

Solicita los coeficientes según el grado ingresado y los

almacena en sus respectivas variables.

 $_Intervalo:

Ret

4
Solicita el intervalo en el cual se encuentra el punto

inicial de nuestras iteraciones.

 $_Iteraciones:

Ret

Solicita el número de iteraciones que se necesitan para

realizar dicho método numérico.

 $_SaveCoef: hasta $_SaveCoef5:

Almacenan los coeficientes del polinomio de un grado

hasta 5.

 SolicitarMuller:

Ret

Solicita los valores iniciales para el método de Müller.

 Convertir_Real_Ascii:
Manual de Ensamblador | 14/03/2011

Ret

Convierte un numero entero almacenado en el registro eax

a una cadena ascii y la imprime en pantalla.

5
 $_ConvertirFloatAscii:

Ret

Convierte un número flotante almacenado en el tope de la

pila del fpu a una cadena ascii truncado con un número de

decimales definido por la variable precisión y lo imprime

en pantalla.

 $_Imprimir_Signo:

Ret

Imprime el Signo almacenado en ax.

 Convertir_Decimal:

Ret

Convierte un numero de max 2 dígitos almacenado en dl por

medio de un buffer y lo convierte de ascii a entero.

 $_ResetVar:
Manual de Ensamblador | 14/03/2011

Ret

Inicializa las variables a cero.

 $_ResetTemp:

Ret

6
Inicializa las variables temporales utilizadas con el fpu

a cero.

 limpiar:

Ret

Limpia lo que se encuentra impreso en la pantalla.

 Operar_Newton:

Ret

Realiza las operaciones del método de newton.

 Evaluar_Funcion:

Ret

Evalúa la función en el valor val haciendo uso del fpu.


Manual de Ensamblador | 14/03/2011

 Evaluar_Deriv:

Ret

Evalúa la derivada en el valor val haciendo uso del fpu.

7
 noValido:

ret

Muestra un mensaje si el valor ingresado no es válido

para la aplicación.

 Deriv:

Ret

Calcula la derivada de un polinomio de máx. grado 5.

 Mensaj:

Ret

Solicita un valor al usuario le indica que valor ingreso

y lo almacena en cl por medio de un buffer de tamaño

predefinido.

 Steffensen:
Manual de Ensamblador | 14/03/2011

Ret

Solicita los valores para inicializar el método de

Steffensen.

 $_Vinicial:

8
Ret

Calcula el valor inicial según el rago definido por el

usuario.

 Newton:

Ret

Solicita los valores para realizar el método de Newton.

 Muller:

Ret

Solicita los valores para realizar el método de Muller.

ModoVideo:

Cambia a modo video 13h

pixilVertical:

Dibuja el eje vertical.


Manual de Ensamblador | 14/03/2011

pixilHorizontal:

Dibuja el eje horizontal.

9
CODIGO FUENTE

Código publicado en pasete bin para un mejor

entendimiento.

Link: http://pastebin.com/sTfEaWKC
Manual de Ensamblador | 14/03/2011

1
CONCLUSIONES

 Los números de coma flotante son muy fáciles de trabajar

una vez que se utiliza el coprocesador fpu que trabaja

por medio de instrucciones x87 permitiendo esta una

precisión bastante grande al utilizar números de 80bits

(twords).

 El fpu trabaja por medio de una pila permitiendo por

medio de la misma trabajar tanto enteros como flotantes

con una gran precisión y velocidad facilitando todo tipo

de cálculos matemáticos.
Manual de Ensamblador | 14/03/2011

1
BIBLIOGRAFIA

Alfonso Víctor Caballero Hurtado (2010). Abre los ojos al

ensamblador. Recuperado marzo 2011, de

http://www.abreojosensamblador.net/htm

Rafael Hernampérez Martín 2000. Curso de Ensamblador.

Recuperado marzo de 2011, de

http://club.telepolis.com/mydream/Asm/index.html

Sanchit Karve 2005. FLOATING POINT CALCULATIONS IN


ASSEMBLY. Recuperado marzo de 2011, de http://www.programmers-
corner.com/tutorial/31

Manual de Ensamblador | 14/03/2011

Vous aimerez peut-être aussi