Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Lenguaje ensamblador




Enviado por haumi_sabeli



    Indice
    1.
    Importancia del lenguaje ensamblador

    2. Ventajas y desventajas del Lenguaje
    Ensamblador

    3. Relación del lenguaje
    ensamblador con los componentes internos del
    procesador

    4. Manejo de la memoria: Direccionamiento
    (interno y externo)

    1. Importancia del
    lenguaje
    ensamblador

    La importancia del lenguaje
    ensamblador radica principalmente que se trabaja directamente
    con el microprocesador;
    por lo cual se debe de conocer el funcionamiento interno de este,
    tiene la ventaja de que en el se puede realizar cualquier tipo de
    programas que
    en los lenguajes de alto nivel no lo pueden realizar. Otro punto
    sería que los programas en
    ensamblador
    ocupan menos espacio en memoria.

    2. Ventajas y desventajas
    del Lenguaje
    Ensamblador

    Ventajas
    1.     Velocidad .-
    Como trabaja directamente con el microprocesador
    al ejecutar un programa, pues
    como este lenguaje es el mas cercano a la máquina la computadora
    lo procesa mas rápido.
    2.     Eficiencia de
    tamaño .- Un programa en
    ensamblador no
    ocupa mucho espacio en memoria porque no
    tiene que cargan librerías y demás como son los
    lenguajes de alto nivel
    3.     Flexibilidad .- Es flexible porque
    todo lo que puede hacerse con una máquina, puede hacerse
    en el lenguaje
    ensamblador de esta máquina; los lenguajes de alto nivel
    tienen en una u otra forma limitantes para explotar al
    máximo los recursos de la
    máquina. O sea que en lenguaje
    ensamblador se pueden hacer tareas especificas que en un
    lenguaje de alto nivel no se pueden llevar acabo porque tienen
    ciertas limitantes que no se lo permiten

    Desventajas
    Tiempo de
    programación .- Como es un lenguaje de bajo
    nivel requiere más instrucciones para realizar el mismo
    proceso, en
    comparación con un lenguaje de alto nivel. Por otro lado,
    requiere de más cuidado por parte del programador, pues es
    propenso a que los errores de lógica
    se reflejen más fuertemente en la ejecución.
    Programas fuente grandes .- Por las mismas razones que aumenta el
    tiempo, crecen
    los programas fuentes;
    simplemente requerimos más instrucciones primitivas para
    describir procesos
    equivalentes. Esto es una desventaja porque dificulta el mantenimiento
    de los programas, y nuevamente reduce la productividad de
    los programadores.
    Peligro de afectar recursos
    inesperadamente .- Que todo error que podamos cometer, o todo
    riesgo que
    podamos tener, podemos afectar los recursos de la maquina,
    programar en este lenguaje lo más común que pueda
    pasar es que la máquina se bloquee o se reinicialize.
    Porque con este lenguaje es perfectamente posible (y sencillo)
    realizar secuencias de instrucciones inválidas, que
    normalmente no aparecen al usar un lenguaje de alto nivel.
    Falta de portabilidad.- Porque para cada máquina existe un
    lenguaje ensamblador; por ello, evidentemente no es una selección
    apropiada de lenguaje cuando deseamos codificar en una
    máquina y luego llevar los programas a otros sistemas
    operativos o modelos de
    computadoras.

    3. Relación del
    lenguaje ensamblador con los componentes internos del
    procesador

            En
    la memoria se
    almacena la información en celdas especiales llamados
    registros los
    cuales tienen un nivel alto y un nivel bajo.
            Unidad
    aritmética y lógica
    es la responsable de realizar como su nombre lo indica operaciones
    aritméticas y lógicas.
            Unidad de
    control Se
    encarga de coordinar de que los otros componentes ejecuten las
    operaciones
    correctamente.
            Bus interno son los canales
    por donde pasa la información que la máquina va a
    procesar (bus de entrada) o procesada
    (bus de salida).

    Registros de uso general
    AX = Registro
    acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en
    las operaciones aritméticas y lógicas,
    después de la operación arroja un resultado.
    BX = Registro base,
    dividido en BH y BL.- Se utiliza en transferencias de datos entre
    la memoria y
    el procesador.
    CX = Registro contador, dividido en CH y CL.- Se utiliza como
    contador en bucles(LOOP), en operaciones con cadenas(REP), y en
    desplazamientos(CL).
    DX = Registro de datos, dividido
    en DH y DL.- Se utiliza en operaciones de multiplicación y
    división junto con Ax y en operaciones de entrada y salida
    de puertos, su mitad inferior DL contiene el número de
    puertos.

    Registros de Estado
    Hay nueve indicadores de
    un bit en este registro de 16 bits. Los cuatro bits más
    significativos están indefinidos, mientras que hay tres
    bits con valores
    determinados: los bits 5 y 3 siempre valen cero y el bit 1
    siempre vale uno.
    CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en
    caso de suma) o "préstamo" (en caso de resta). Este
    indicador es usado por instrucciones que suman o restan
    números que ocupan varios bytes. Las instrucciones de
    rotación pueden aislar un bit de la memoria o de un
    registro poniéndolo en el CF.
    PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad
    par, es decir, un número par de bits a 1. Este indicador
    se puede utilizar para detectar errores en transmisiones.
    AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo
    "arrastre" o "préstamo" del nibble (cuatro bits) menos
    significativo al nibble más significativo. Este indicador
    se usa con las instrucciones de ajuste decimal.
    ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de
    la operación es cero.
    SF (Sign Flag, bit 7): Refleja el bit más significativo
    del resultado. Como los números negativos se representan
    en la notación de complemento a dos, este bit representa
    el signo: 0 si es positivo, 1 si es negativo.
    TF (Trap Flag, bit 8): Si vale 1, el procesador
    está en modo paso a paso. En este modo, la CPU
    automáticamente genera una interrupción interna
    después de cada instrucción, permitiendo
    inspeccionar los resultados del programa a medida que se ejecuta
    instrucción por instrucción.
    IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce
    pedidos de interrupción externas. Si vale 0, no se
    reconocen tales interrupciones
    DF (Direction Flag, bit 10): Si vale 1, las instrucciones con
    cadenas sufrirán "auto-decremento", esto es, se
    procesarán las cadenas desde las direcciones más
    altas de memoria hacia las más bajas. Si vale 0,
    habrá "auto-incremento", lo que quiere decir que las
    cadenas se procesarán de "izquierda a derecha".
    OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una
    operación aritmética con signo, esto es, un
    dígito significativo se perdió debido a que
    tamaño del resultado es mayor que el tamaño del
    destino.

    Relación entre el código
    binario y el lenguaje
    ensamblador
    En el código
    binario se utilizan ceros y unos, mientras que el lenguaje
    ensamblador es una colección de símbolos
    mnemónicos que representan: operaciones, nombres
    simbólicos, operadores y símbolos especiales.
    La relación entre estos dos lenguajes sería que el
    binario es el lenguaje que la máquina entiende y el
    ensamblador se acerca mas lenguaje de esta.

    4. Manejo de la memoria:
    Direccionamiento (interno y externo)

    El manejo de la memoria depende de que procesador tenga
    la máquina, entre los cuales a continuación se
    mencionan los siguientes:
            Memoria de
    Programa
            Memoria
    Externa de Datos
            Memoria
    Interna de Datos
            Registros de
    Funciones
    Especiales
            Memoria de
    Bit.

    El espacio de la Memoria de Programa contiene todas las
    instrucciones, datos, tablas y cadenas de caracteres (strings)
    usadas en los programas. Esta memoria se direcciona
    principalmente usando el registro de 16 bits llamado Data
    Pointer. El tamaño máximo de la Memoria de Programa
    es de 64 Kbytes.
    La Memoria Externa de Datos contiene todas las variables y
    estructuras de
    datos que no caben en la memoria interna del Microprocesador.
    Esta memoria se direcciona principalmente por el registro de 16
    bits Data Pointer , aunque también se puede direccionar un
    banco de
    Memoria Externa de Datos de 256 bytes usando los dos primeros
    registros de propósito general .
    El espacio de Memoria Interna de Datos funcionalmente es la
    memoria de datos más importante, ya que ahí es
    donde residen cuatro bancos de
    registros de propósito general; la pila o stack del
    programa; 128 bits de los 256 bits de un área de memoria
    direccionable por bit y todas las variables y
    estructuras de
    datos operadas directamente por el programa. El tamaño
    máximo de la Memoria Interna de Datos es de 256 bytes.
    Contiene un espacio para los denominados Registros de Funciones
    Especiales destinado para los puertos de entrada/salida,
    temporizadores y puerto serie del circuito integrado. Estos
    registros incluyen al Stack Pointer; al registro de la palabra de
    estado del
    programa y al Acumulador. La cantidad máxima de Registros
    de Funciones Especiales es 128.
    Todos los Registros de Funciones Especiales tienen direcciones
    mayores a 127 y se ubican en los 128 bytes superiores de la
    Memoria Interna de Datos. Estas dos áreas de la Memoria
    Interna de Datos se diferencian por el modo de direccionamiento
    usado para accesarlas. Los Registros de Funciones Especiales solo
    se pueden accesar usando el modo de direccionamiento Directo,
    mientras que los 128 bytes superiores solo se pueden accesar con
    el modo de direccionamiento Indirecto.
    Por otra parte, el espacio de Memoria de Bit se usa para
    almacenar variables y banderas de un bit. El tamaño
    máximo de la Memoria de Bit es de 256 bits, 128 de los
    bits comparten su espacio con 16 bytes del espacio de la Memoria
    Interna de Datos y los otros 128 bits lo hacen con los Registros
    de Funciones Especiales.

     

     

    Autor:

    Miriam Yazmín Mendoza Caamal
    Haumi Sabeli Pech Peraza

    Berenice Gpe. Contreras Sansores
    Tizimín, Yucatán a 25 de septiembre de
    2003

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter