Está en la página 1de 11

DOCUMENTACION Documentación

técnica

PRACTICA 1
Marvin Francisco Castillo Barrera 200615067
INTRODUCCION
El término ensamblador (del inglés assembler) se refiere a un tipo de programa informático
que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero
objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha
generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la
escritura de programas, ya que escribir directamente en código binario, que es el único código
entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de
programación a partir del lenguaje ensamblador originó también la evolución de este
programa ensamblador hacia lo que se conoce como programa compilador.

El análisis numérico es una rama de las matemáticas cuyos límites no son del todo precisos.
De una forma rigurosa, se puede definir como la disciplina ocupada de describir, analizar y
crear algoritmos numéricos que nos permitan resolver problemas matemáticos, en los que
estén involucradas cantidades numéricas, con una precisión determinada.

En el contexto del cálculo numérico, un algoritmo es un procedimiento que nos puede llevar a
una solución aproximada de un problema mediante un número finito de pasos que pueden
ejecutarse de manera lógica. En algunos casos, se les da el nombre de métodos constructivos a
estos algoritmos numéricos.

El análisis numérico cobra especial importancia con la llegada de los ordenadores. Los
ordenadores son útiles para cálculos matemáticos extremadamente complejos, pero en última
instancia operan con números binarios y operaciones matemáticas simples.

Desde este punto de vista, el análisis numérico proporcionará todo el andamiaje necesario
para llevar a cabo todos aquellos procedimientos matemáticos susceptibles de expresarse
algorítmicamente, basándose en algoritmos que permitan su simulación o cálculo en procesos
más sencillos empleando números.

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
OBJETIVOS
 Adquirir el conocimiento necesario para el uso del lenguaje ensamblador dentro de la
arquitectura del procesador 8086.
 Poder transformar algoritmos matemáticos al lenguaje ensamblador
 Entender el funcionamiento de la interrupción 13H para el manejo de modos de video
de 256 colores y una resolución de 320x200
 Entender el uso de otras interrupciones, para la lectura y escritura de datos
 Comprender el funcionamiento del FPU y de los numero de coma flotante

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
CONTENIDO
DESCRIPCION DE MACROS
 Clrscr
Limpia la pantalla y cambia de color tanto el texto como el fondo de pantalla. Tiene
como parámetros el código hexadecimal de los colores y el del carácter de relleno.
 Read2Num
Lee 2 números ingresados por el teclado mediante la interrupción 16H
 Read2Num
Lee un número ingresado por el teclado mediante la interrupción 16H
 ReadChar
Lee un carácter ingresado por el teclado mediante la interrupción 16H, sirve para
hacer pausas también.
 Write
Macro para la escritura de caracteres en pantalla, recibe un parámetro, que serán los
datos desplegados en pantalla mediante la interrupción 21h.

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
 XOR: Su función es efectuar bit por bit la disyunción exclusiva lógica de los dos
operandos.
 IDIV: División signada. El divisor puede ser un byte o palabra y es el operando que se
le da a la instrucción.
 IMUL: Multiplicación signada. El divisor puede ser un byte o palabra y es el operando
que se le da a la instrucción.
 SUB: Resta el operando fuente del destino.
 ADD: Suma el operando fuente del destino.
 JMP: Esta instrucción se utiliza para desviar el flujo de un programa sin tomar en
cuenta las condiciones actuales de las banderas ni de los datos.
 JA: Después de una comparación este comando salta si está arriba o salta si no está
abajo o si no es igual.
 JBE: Salta si está abajo o si es igual o salta si no está arriba.
 JE: Salta si es igual o salta si es cero.
 JNE: Salta si no es igual o salta si no es cero.
 JGE: Salta si es más grande o igual o salta si no es menor que.
 LOOP: La instrucción loop decrementa CX en 1, y transfiere el flujo del programa a la
etiqueta dada como operando si CX es diferente a 1.
 DEC: Esta operación resta 1 al operando destino y almacena el nuevo valor en el
mismo operando.
 INC: Esta operación suma 1 al operando destino y almacena el nuevo valor en el
mismo operando.
 CMP: Esta instrucción resta el operando fuente al operando destino pero sin que éste
almacene el resultado de la operación, solo se afecta el estado de las banderas.
 INT 21h: Esta interrupción tiene varias funciones, para accesar a cada una de ellas es
necesario que el registro AH se encuentre el número de función que se requiera al
momento de llamar a la interrupción.
 INT 16h: Veremos dos opciones de la interrupción 16H, estas opciones, al igual que las
de otras interrupciones, son llamadas utilizando el registro AH.
 FLD : Salvar número real a memoria
 FST: Cargar número real desde memoria
 FSTP: Salvar número real e incrementar puntero de pila
 FILD: Cargar número entero desde memoria
 FIST: Salvar número entero a memoria
 FISTP: Salvar número entero e incrementar puntero de pila
 FADD: Suma números reales
 FADDP: Suma números reales e incrementa puntero de pila
 FIADD: Suma números enteros
 FSUB: Resta números reales
 FSUBP: Resta números reales e incrementa puntero
 FISUB: Resta números enteros
Marvin Francisco Castillo Barrera
200615067
Arquitectura de Computadores 1 – 2011
 FSUBR: Resta números reales en orden inverso
 FSUBRP: Resta números reales en orden inverso e inc. punt.
 FISUBR: Resta números enteros en orden inverso
 FMUL: Multiplica números reales
 FMULP: Multiplica números reales e incrementa puntero
 FIMUL: Multiplica números enteros
 FDIV: Divide números reales
 FDIVP: Divide números reales e incrementa puntero
 FIDIV: Divide números enteros
 FDIVR: Divide números reales en orden inverso
 FDIVRP: Divide números reales en orden inverso e inc. puntero
 FIDIVR: Divide números enteros en orden inverso

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
Ingresar
Ingresar Función Ingresar Grado Ingresar Signo
coeficientes

Función
Imprimir Función
Impresión

Derivada
Imprimir Derivada
Impresión

Graficar Graficar
Graficar Funcion Graficar eje X Graficar eje Y valores Y valores X
positivos positivos
Selección
Ejecutar Programa Menu
Opción

Salir Sale del Programa

Iteración
Newton
Newton

Ingresar Ingresar Metodo Iteración


Steffensen Ingresar Error
iteraciones Coeficientes correspondiente Steffensen

Iteración
Newton
Muller

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
El código fuente comentado se encuentra en el siguiente link:

http://pastebin.com/JtYhJ87z

El motivo de colocarlo en pastebin.com es que el código mantenga el formato adecuado para


un código NASM.

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
CONCLUSIONES
 Una unidad de coma flotante (adaptación del inglés floating-point unit o literalmente
traducido unidad de punto flotante) o, también conocido como coprocesador
matemático, es un componente de la unidad central de procesamiento especializado
en el cálculo de operaciones en coma flotante. Las operaciones básicas que toda FPU
puede realizar son las aritméticas (suma y multiplicación), si bien algunos sistemas
más complejos son capaces también de realizar cálculos trigonométricos o
exponenciales.
 Actualmente se utiliza con frecuencia en ambientes académicos y de investigación,
especialmente cuando se requiere la manipulación directa de hardware, altos
rendimientos, o un uso de recursos controlado y reducido. El código escrito en
lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su
estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.
 El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un
microprocesador, puede necesitar ser modificado, para poder ser usado en otra
máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente
es necesario reescribirlo completamente.
 Los programas hechos, por un programador experto, en lenguaje ensamblador, son
generalmente mucho más rápidos y consumen menos recursos del sistema (memoria
RAM y ROM.) que el programa equivalente compilado desde un lenguaje de alto nivel.
Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas
que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto
nivel.
 Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas
por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o
muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas,
en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no
están disponibles en los lenguajes de alto nivel.
 También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir
que se interrumpa durante su ejecución.

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
RECOMENDACIONES
¿Estudiaremos todo lo que hace este pequeño texto, e iremos aprendiendo para seguir
adelante en nuestro curso.. Empezaremos por aprender que es ax y bx mostrados en la
primera instrucción. Primero que nada, no son solo estás dos palabras, en total son las
siguiente palabras : AX, BX, CX, DX ... pero .. ¿Que son estás palabras? ... estas palabras son
//registros de datos//, o sea, que contienen información en ellas para cálculos y otras cosas
en general. Digamos que guardan datos temporales de la 'memoria'. Tocaremos de manera
superficial este tema ya que está curso de aesoft que les puede ayudar al respecto muy
meticulosamente. Pensemos que estos registros son para acumular datos en memoria
temporalmente .. ¿Ok?.. Pensemos ahora que un equipo estándar con Win95 Usa 32 Bits, los
registros para 16 bits (Windows 3.11, piénsenlo así) son Ax, Bx, Cx, Dx.Pero si queremos
trabajar en 32 Bits, o sea Win95, tendremos que agregarles una E para depurarlos en Win95,
(P.e. Eax, Ebx, Ecx, Edx)..

Me Explico nuevamente, en Windows 95 se usan datos de 32 Bits(Para guardar datos)... si


estamos trabajando en Windows 3.11 o dos(Versión anterior de Win95, y el añorado DOS)
trabajaremos para guardar datos en 16 bits. Si trabajamos en DOS o en WIN 3.11, deberíamos
ver los registros de datos como AX,BX,CX,DX, si trabajamos en Win95 serían así
EAX,EBX,ECX,EDX. (Si ves en alguna parte registros de 16 bits. como AH no te sorprendas, es
que se separan AX,BX,CX,DX .. ¿Cómo? .. AX se separa en AH y AL, BX se separa en BH y BL... y
así sucesivamente.)

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011
BIBLIOGRAFIA
 http://www.abreojosensamblador.net/
Guías y ejemplos prácticas para el manejo de ensamblador, enfocado a principiantes.
 http://www.programmers-corner.com/tutorial/31
Instrucciones básicas del FPU.
 http://www.website.masmforum.com/tutorials/fptute/appen1.htm
Descripción y ejemplos prácticos de cómo opera el FPU y como se interrelaciona con el
procesador 8086.
 http://faydoc.tripod.com/cpu/index_i.htm
Conjunto de instrucciones del procesador Pentium, utilizado también como
documentación de referencia.

Marvin Francisco Castillo Barrera


200615067
Arquitectura de Computadores 1 – 2011

También podría gustarte