Practica1 arquitectura de computadores 1 usac - metodos numericos -asm-
1. Universidad De San Carlos de Guatemala
Facultad de Ingeniería
Escuela de Ciencias y Sistemas
Arquitectura de computadores y ensambladores 1
Practica 1, (arquitectura de computadores y ensambladores 1)
Leonel Enrique Rojas Chinchilla
Carne: 200819162
Fecha Entrega: 15-03-2011
2. Introduccio n
Assembler un lenguaje de bajo nivel que permite interaccionar directamente con la memoria y
procesador del equipo de cómputo, este lenguaje tiene funciones muy básicas que solo permiten
la manipulación de hasta 3 direcciones de memoria, siendo así muy extenso un programa que en
un lenguaje de alto nivel sería muy corto.
Uno de los objetivos de esta práctica es graficar un polinomio para dar una mejor percepción de
los sistemas numéricos que se están resolviendo. El modo de video 13h es el que nos permite
dibujar por medio de posiciones en pantalla y cargándolas a memoria, especificando para cada
punto su color.
3. Objetivo
Aprender a hacer operaciones básicas en lenguaje assembler.
Lograr ingresar datos por teclado y poder operarlos.
Lograr dibujar con el modo 13h.
Hacer la primera derivada de una función especificada por el usuario.
Hacer iteraciones de un método para llegar a un resultado satisfactorio.
4. Contenido
Definición de macros:
Un macro es un pedazo de código que se escribe una sola vez y puede ser utilizado tantas veces
sea necesario por medio de una llamada a macro, dando la ventaja de no reescribir código. Un
macro da la posibilidad de recibir parámetros a la hora de hacer una llamada y así poder usar los
valores que se pasan como parámetros y ejecutar la tarea específica del macro.
Una diferencia importante, un macro puede ser llamado desde diferentes programas mientras
que un procedimiento no. Y la forma de llamar a un macro es como si fuera una instrucción nativa
de assembler, por ejemplo para llamar a un macro llamado “mm” solo es necesario poner “mm”
en asembler sin alguna instrucción extra.
Para la definición de un macro tenemos la siguiente sintaxis:
NombreDeMacro MACRO [param1,param2,param3]
Cuerpo…
Cuerpo…
Cuerpo…
ENDM
Sintaxis para llamada a macro:
NombreDeMacro param1,param2,param3
Otra ventaja importante de la utilización de macros es que se pueden crear librerías y luego
usarlas en diferentes aplicaciones incluyendo el archivo con el comando “include nombreArch”.
Para crear una librería con macros es necesario hacer todos los macros en un archivo y guardarlo
como un archivo de texto, para luego poder importarlo asi como se mencionó antes.
5. Funciones Assembler utilizadas:
Instrucción Descripción Ejemplo
push empuja un nuevo valor en la pila push op
pop saca el valor del tope de la pila pop op
mov copia el valor de op y la ingresa a dest mov dest,op
hace una suma aritmética normal de los dos parámetros y guarda
add el valor en dest add dest,op
hace una resta aritmética normal de los dos parámetros y guarda
sub el valor en dest sub dest,op
hace una división tomando en cuenta el signo, ax/op y lo guarda
idiv en al idiv op
hace una multiplicación tomando en cuenta el signo, ax*op y lo
imul guarda en al imul op
inc incrementa en una unidad el valor del parámetro especificado inc op
dec decremento en una unidad el valor del parámetro especificado dec op
carga la dirección de memoria de un registro especificado como
lea parámetro y lo guarda en dest lea dest, op
interrumpe la ejecución de una llamada y regresa al punto donde
int fue llamado int
call llama a una etiqueta o procedimiento call identificador
jmp salta hasta la etiqueta especificada jmp identificador
salta hasta la etiqueta especificada si los valores de comparación
je son iguales je identificador
salta hasta la etiqueta especificada si los valores de comparación
jne no son iguales jne identificador
jae salta hasta la etiqueta especificada si dest es mayor o igual que op jae identificador
jbe salta hasta la etiqueta especificada si dest es menor o igual que op jbe identificador
salta hasta la etiqueta especificada si dest es mayor o igual que
jge op, tomando en cuenta el signo jge identificador
salta hasta la etiqueta especificada si dest es menor o igual que
jle op, tomando en cuenta el signo jle identificador
6. Diagrama de Flujo
Inicia
Pedir metodo a
utilizar
Newton? no Esteffensen? no Muller?
si Si si
Pedir datos para Pedir datos para Pedir datos para
newton Steffensen Muller
Ejecutar método de Ejecutar método de Ejecutar método de
newton Steffensen Muller
Graficar las Graficar las Graficar las
valuaciones de valuaciones de valuaciones de
newton steffensen muller
Poner modo 13h y empezar a plotear
puntos valuando la funcion ingresada
en un intervalo establecido
7. Conclusiones
Para implementar métodos numéricos es necesario implementar operaciones complejas como la
raíz cuadrada por medio de operaciones muy simples como la suma y multiplicación.
Para poder dibujar es necesario usar instrucciones del método 13h y hacer uso de arreglos para
dibujar figuras predefinidas.
El uso de procedimientos y macros es fundamental para poder manejar correctamente los saltos y
comparaciones.
Para hacer comparaciones es necesario utilizas sentencias como je, jne, jg, jl, jbe,ja,jae,jb,etc…
8. Recomendaciones
Para el aprendizaje se recomienda utilizar la página abrelosojosensamblador.com en la
cual se encuentra teoría y ejemplos de manejo de assembler en fasm, tasm, asm, etc. Por
lo que se facilita hacer pruebas.
El uso de fasm y otros ides solo es posible en sistemas operativos que tengan una
arquitectura de 32 bits por lo que se recomienda instalar una máquina virtual y manejar
assembler allí.
También es recomendable usar dosbox para la programación para evitar posibles
problemas en el código que el programador ingresa y causar algún daño al equipo.
Sino se cuenta con un ide fácil de usar se recomienda usar emu8086 en el cual se posee
una consola de debug para poder llevar control de los valores de los registros y ejecutar
paso a paso.