Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna
FORMATO DE UN ENUNCIADO EN LENGUAJE ENSAMBLADOR LOS ENUNCIADOS ARRIBA DE LA LINEA BLANCA EFECTUAN EL CALCULO. Y LOS ENUNCIADOS DEBAJO DE LA LINEA BLANCA SON COMANDOS PARA EL ENSAMBLADOR, QUE LE ORDENAN RESERVAR MEMORIA PARA LAS VARIABLES I, J Y N.
Partes de un enunciado Los enunciados en lenguaje ensamblador tienen 4 partes: Un campo de etiqueta Un campo de operación Un campo de operandos Un campo de comentarios
campo de etiqueta Las etiquetas, que sirven para asignar nombres simbólicos a direcciones de memoria, se necesitan en enunciados ejecutables para poder saltar a esos enunciados. También se necesitan en las palabras de datos para poder accesar con un nombre simbólico a los datos ahí almacenados.
En el lenguaje ensamblador de SPARC se requiere un signo de dos puntos después de cada etiqueta, pero el de Motorola no. En el de Intel requiere los dos puntos en las etiquetas del código, pero no en la de datos.
campo de operación El campo de código de operación contiene una abreviatura simbólica del código de operación o un comando para el ensamblador.
¿Cómo sabe el ensamblador que longitud usar? Pentium II los registros con diferente longitud tiene nombres distintos EAX: se usa para elementos de 32 bits AX: sirve para mover elementos de 16 bits AL y AH: se usan para elementos de 8 bits Motorola Los diseñadores decidieron añadir a cada código de operación sufijo L para largo W para palabra B para byte
Campo de operandos El campo de operandos sirve para especificar las direcciones y registros que la instrucción de maquina usara como operandos. El campo de operandos de una instrucción de suma de enteros indica que se sumara a que. El campo de operandos de una instrucción de ramificacion indica en donde se saltara. Los operandos pueden ser registros, constantes, localodades de memoria etc.
Campo de comentarios El campo de comentarios ofrece a los programadores un lugar para incluir explicaciones de cómo funciona el programa, para beneficio de otros programadores que podrían usar o modificar posteriormente el programa. Un programa en el lenguaje ensamblador sin tal documentación es casi incomprensible para todos los programadores. El campo de comentarios es exclusivamente para consumo humano, no afecta el proceso de ensamblado ni el programa que se genere.
seudoinstrucciones Un programa en lenguaje ensamblador pude contener comandos para el ensamblador mismo. Ej. Para pedirle que asigne espacio en la memoria. Que saque una nueva pagina de listado. Los comandos para el ensamblador se llaman seudoinstrucciones o a veces directrices de ensamblador.
Seudoinstrucciones de ensamblador
7.2 MACROS Los programas en lenguaje ensamblador a menudo necesitan repetir sucesiones de instrucciones varias veces dentro de un programa,en esta caso la forma mas facil de hacerlo es simplemente es escribir la instrucciones requeridas donde sea que se necesiten Sin embargo si una secuencia es larga o debe usarse muchas veces,escribirla una y otra vez resulta tedioso
Una estrategia alternativa seria convertir la secuencia en un procedimiento e invocarlo cada vez que se necesite
Desventaja Esta estrategia tiene la desventaja de que requiere la ejecucion de una instruccion de llamada a procedimiento y una de retorno cada vez que se necesite la secuencia
Como definir una macro? aunque diferentes ensamblandores tiene notaciones un poco distintas para definir macros,todas requieren las mismas partes basicas en un definicion de macro: 1.una cabecera de macro que da el nombre de la macro que este definiendo 2.El texto que constituye el cuerpo de la macro 3.una seudointruccion que marca el final de la defincion(por ejemplo,ENDM)} Cuando el ensamblador se topa con una definicion de macro,la guarda en una tabla de definicion de macros para usarla posteriormente El uso de un nombre de macro como codigo de por operacion se denomina llamda a macro y sustitucion por el cuerpo de la macro se denomina EXPANSION DE MACRO
Diferencia entre una macro y llamada a procedimiento la diferencia basica es que una llamada a macro es una instruccion dirigida al ensamblador para que sustituya el nombre de la macro por el cuerpo de la misma. una llamada a procedimiento es una instruccion maquina que se inserta en el programa objeto y que posteriormente se ejecutara para llamar al procedimiento
Una definición de macro, es una forma de asignar un nombre a un fragmento de texto. Una vez definido el macro, el programador puede escribir el nombre de la macro en lugar del fragmento de programa La expansión de macros se efectúa durante el proceso de ensamblado y no durante la ejecución del programa. Ejemplo: 7.2.2Definición, Llamada y expansión de macros
Las llamadas a macros no deben confundirse con llamadas a procedimiento. La diferencia basica es que una llamada a macro es una instrucción dirigida al ensamblador para que sustituya el nombre de la macro por el cuerpo de la misma. Una llamada a procedimiento es una instrucción de maquina que se inserta en el programa objeto y que posteriormente se ejecutara para llamar al procedimiento
Implementación de un recurso de macros a un ensamblador Para implementar un recurso de macros, un ensamblador debe poder realizar dos funciones: 1.- guardar definiciones de macros 2.- expandir llamadas de macros El ensamblador debe mantener una tabla de todos los nombres de macros y junto con cada nombre, un apuntador a su definición almacenada para poder recuperarla cuando la necesite
Cuando s llega a una definición de macros, se crea una entrada de tabla que da el nombre de la macro, el numero de parámetros formales y un apuntador a otra tabla, la tabla de definiciones de macros en al que se guardara el cuerpo de la macro. En este momento también se construye una lista de los parámetros formales que se usaran al procesar la definición. Luego se lee el cuerpo de la macro y se guarda en la tabla de definiciones de macros. Los parámetros formales que ocurren dentro del cuerpo se indican con algún símbolo especial.
7.2.3 características avanzadas Problema: Duplicación de etiquetas en los ensambladores que usan macros. Si la macros se llama dos o mas veces, la etiqueta se duplicara y causara un error de ensamblado. Solución: Hacer que el programador proporcione como parámetro una etiqueta distinta en cada llamada. Una solución distinta es permitir que una etiqueta se declare como local, y el ensamblador genere automáticamente una distinta en casa expansión de la macro. Otros ensambladores tienen la regla de que las etiquetas numéricas son automáticamente locales.
Características avanzadas Las macros pueden llamar a otras macros, incluidas ellas mismas. Si una macro es recursiva, debería pasarse así misma un parámetro que se modificara en cada expansión, y la macros deberá probar el parámetro y terminar la recursión cuando llegue a cierto valor. En caso contrario, el ensamblador podría ingresar en un ciclo infinito y se deberá suspender el ensamblador.
7.2.4 Implementación de un recurso de macros Un ensamblador debe poder realizar dos funciones: Guardar definiciones de macros Expandir llamadas de macros El ensamblador debe mantener una tabla de todos los nombres de macros y un apuntador a su definición almacenada, para poder recuperarla cuando la necesite. Cuando se llega a una definición de macro, se crea una entrada de tabla que da el nombre de la macro, el número de parámetros formales y un apuntador a otra tabla en la que se guardara el cuerpo de la macro.