K060 (15) ESTRUCTURAS EN LENGUAJE ENSAMBLADOR Estructuras en Lenguaje Ensamblador Introducción El lenguaje ensamblador es conocido como un lenguaje de bajo nivel, lo cual significa que permite controlar el 100 % de las funciones de un microprocesador, así como los periféricos asociados a éste. El lenguaje ensamblador es la forma básica de programar un microprocesador para que éste sea capaz de realizar tareas o cálculos. A diferencia de los lenguajes de alto nivel, el lenguaje ensamblador no requiere de un compilador, debido a que las instrucciones en lenguaje ensamblador son traducidas directamente a código binario y después son colocadas en memoria para que el microprocesador las tome directamente. Aprender a programar en lenguaje ensamblador no es fácil, se requiere un cierto nivel de conocimiento de la arquitectura y organización de las computadoras, además del conocimiento de programación en algún otro lenguaje. Dentro del curso se analizan los procesos de dicho lenguaje para construir finalmente un programa, dentro del cual se utilicen las herramientas que lo conforman. Justificación El lenguaje ensamblador es la forma más básica de programar un microprocesador para que éste sea capaz de realizar las tareas o los cálculos que se le requieran. Los microprocesadores programables son ampliamente utilizados en la industria para automatizar procesos, pues debido a su versatilidad y bajo costo, se puede prescindir de la computadora para llevar a cabo el control de los procesos. 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. Por lo anterior, es indispensable que el alumno adquiera los conocimientos básicos para ejecutar y utilizar este tipo de lenguaje. Objetivo General Analizar el proceso de operación interna de la computadora respecto a direcciones, memoria, registros y tipo de datos, aplicando los diversos modelos de direccionamiento e instrucciones lógicas y aritméticas disponibles a nivel ensamblador. Objetivo particulares. Señalar las características del lenguaje y sus aportaciones a la manipulación directa del hardware. Examinar los procedimientos de movimiento y administración de información de manera adecuada. Identificar las características de los sistemas de instrucción para la solución de operaciones. Especificar los fines y funciones de la señal de interrupción dentro del procesador u ordenador. Desarrollar instrucciones ejecutables según su aplicación. Diseñar programas que faciliten al usuario la ejecución de una tarea. Reconocer los elementos significativos de los dispositivos que facilitan el desarrollo de determinadas tareas. Temario Unidad 1. Introducción. El lenguaje ensamblador es una expresión de bajo nivel utilizado para programación de microprocesadores. Con la utilización de mnemónicos, es posible realizar códigos en este lenguaje con facilidad sin recurrir a lenguaje máquina. 1.1 El lenguaje ensamblador. 1.2 Representación de datos. 1.3 Operación interna en la computadora. 1.4 Programa fuente. 1.5 Tipos de instrucciones. Unidad 2. Instrucciones de operación. El sistema de programación del lenguaje ensamblador, hace uso de espacios de memoria, donde se almacenan registros y resultados de algunas operaciones a los cuales podemos acceder de acuerdo al tipo de dato almacenado, el cual puede ser un número, una dirección, un conjunto de registros de pila, etc. 2.1 Movimiento de datos con respecto a memoria. 2.2 Movimiento de direcciones a registros. 2.3 Administración de la pila. 2.4 Movimiento de bloques de datos. Unidad 3. Instrucciones lógicas y aritméticas. Las operaciones que se pueden realizar en lenguaje ensamblador, son similares a las de los lenguajes de alto nivel, sólo que en lugar del símbolo de operación se utilizan diversos neumónicos. Las instrucciones utilizadas para las operaciones algebraicas son: para sumar add, para restar sub, para multiplicar mul y para dividir div. Casi todas las instrucciones de comparación están basadas en la información contenida en el registro de banderas. 3.1 Instrucciones aritméticas. 3.2 Instrucciones de comparación. 3.3 Instrucciones lógicas. 3.4 Instrucciones para la manipulación de bits. 3.5 Almacenamiento de datos. Unidad 4. Interrupciones. El microprocesador puede atender dos tipos de interrupciones: interrupciones por software e interrupciones por hardware. Las interrupciones por software son llamadas desde los programas y son proporcionadas por el sistema operativo (MS-DOS). Por otro lado, las interrupciones por hardware son proporcionadas por el propio microprocesador, encontrando interrupciones internas y externas en cada caso. 4.1 Definición de Interrupciones. 4.2 Tipos de Interrupciones. 4.3 Interrupciones y el usuario. Unidad 5. Macros. Una de las principales desventajas de la programación en lenguaje ensamblador es la repetición constante de ciertos grupos de instrucciones. Una macro es un conjunto de instrucciones que se agrupan bajo un nombre descriptivo (macroinstrucción) y que sólo es necesario declarar una vez. Una vez que la macro ha sido declarada, únicamente es necesario indicar su nombre en el cuerpo del programa y el ensamblador se encargará de reemplazar la macroinstrucción por las instrucciones de la macro. 5.1 Definición. 5.2 Uso de Macros. 5.3 Variantes de macros. Unidad 6. Aplicaciones. En el lenguaje ensamblador el tipo de dato cadena (string) no está definido, pero para fines de programación una cadena es definida como un conjunto de localidades de memoria consecutivas, que se reservan bajo el nombre de una variable. Para comprender realmente cómo funcionan las instrucciones para cadenas se analizarán varios programas que fueron escritos para este fin. 6.1 Manejo de video. 6.2 Manejo de strings. 6.3 Interface con lenguajes de alto nivel. Unidad 7. Herramientas. Para poder crear un programa se requieren varias herramientas: primero un editor para crear el programa fuente; segundo un compilador que no es más que un programa que "traduce" el programa fuente a un programa objeto, y tercero un enlazador o linker, que genere el programa ejecutable a partir del programa objeto. El editor puede ser cualquier editor de textos que se tenga a la mano; como compilador utilizaremos el MASM (Macro Ensamblador de Microsoft), ya que es el más común, y como enlazador utiliza frecuentemente el programa link. 7.1 Macroensamblador. 7.2 Limber. 7.3 Debugger. Unidad 1. Introducción. Introducción 1.1 El lenguaje ensamblador. 1.2 Representación de datos. 1.3 Operación interna en la computadora. 1.4 Programa fuente. 1.5 Tipos de instrucciones. Unidad 2. Instrucciones de operación. 2.1 Movimiento de datos con respecto a memoria. 2.2 Movimiento de direcciones a registros. 2.3 Administración de la pila. 2.4 Movimiento de bloques de datos. Unidad 3. Instrucciones lógicas y aritméticas. 3.1 Instrucciones aritméticas. 3.2 Instrucciones de comparación. 3.3 Instrucciones lógicas. 3.4 Instrucciones para la manipulación de bits. 3.5 Almacenamiento de datos. Unidad 4. Interrupciones. 4.1 Definición de Interrupciones. 4.3 Interrupciones y el usuario. Unidad 5. Macros. 5.1 Definición. 5.2 Uso de Macros. 5.3 Variantes de macros. Unidad 6. Aplicaciones 6.1 Manejo de video. 6.2 Manejo de strings. 6.3 Interface con lenguajes de alto nivel. Unidad 7. Herramientas. 7.1 Macroensamblador. 7.2 Linker. 7.3 Debugger.