miércoles, 8 de febrero de 2012

Reporte (Lab de Cómputo Integrado)

Los lenguajes de bajo nivel, también llamados lenguajes ensambladores, permiten al programador escribir instrucciones de un programa usando abreviaturas del inglés, también llamadas palabras nemotécnicas, tales como: ADD, DIV, SUB, etc.
Un programa escrito en un lenguaje ensamblador tiene el inconveniente de que no es comprensible para la computadora, ya que, no está compuesto por ceros y unos. Para traducir las instrucciones de un programa escrito en un lenguaje ensamblador a instrucciones de un lenguaje máquina hay que utilizar un programa llamado ensamblador, como se muestra en la siguiente figura:


Un pequeño ejemplo que ilustra el formato del programa fuente. Este ejemplo está completamente desarrollado en lenguaje ensamblador que usa servicios o funciones de MS-DOS (system calls) para imprimir el mensaje Hola mundo!! en pantalla.

; HOLA.ASM
; Programa clásico de ejemplo. Despliega una leyenda en pantalla.
STACK     SEGMENT STACK                ; Segmento de pila
                    DW     64 DUP (?)             ; Define espacio en la pila
STACK     ENDS
DATA      SEGMENT                             ; Segmento de datos
SALUDO      DB    "Hola mundo!!",13,10,"$" ; Cadena
DATA      ENDS
CODE      SEGMENT                            ; Segmento de Codigo
             ASSUME CS:CODE, DS:DATA, SS:STACK
INICIO:                                                  ; Punto de entrada al programa
          MOV  AX,DATA                         ; Pone direccion en AX
          MOV  DS,AX                              ; Pone la direccion en los registros
          MOV  DX,OFFSET SALUDO      ; Obtiene direccion del mensaje
          MOV  AH,09H                            ; Funcion: Visualizar cadena
          INT     21H                                  ; Servicio: Funciones alto nivel DOS
          MOV  AH,4CH                            ; Funcion: Terminar
          INT     21H
CODE      ENDS
          END  INICIO                               ; Marca fin y define INICIO 


La descripción del programa es como sigue:
 1.- Las declaraciones SEGMENT y ENDS definen los segmentos a usar.
 2.- La variable SALUDO en el segmento DATA, define la cadena a ser desplegada. El signo del dolar al final de la cadena (denominado centinela) es requerido por la función de visualización de la cadena de MS-DOS. La cadena incluye los códigos para carriage-return y line-feed.
 3.- La etiqueta START en el segmento de código marca el inicio de las instrucciones del programa.
 4.- La declaración DW en el segmento de pila define el espacio para ser usado por el stack del programa.
 5.- La declaración ASSUME indica que registros de segmento se asociarán con las etiquetas declaradas en las definiciones de segmentos.
 6.- Las primeras dos instrucciones cargan la dirección del segmento de datos en el registro DS. Estas instrucciones no son necesarias para los segmentos de código y stack puesto que la dirección del segmento de código siempre es cargado en el registro CS y la dirección de la declaración del stack segment es automáticamente cargada en el registro SS.
 7.- Las últimas dos instrucciones del segmento CODE usa la función 4CH de MS-DOS para regresar el control al sistema operativo. Existen muchas otras formas de hacer esto, pero ésta es la más recomendada.
 8.- La directiva END indica el final del código fuente y especifica a START como punto de arranque.


Fuentes de Consulta:
http://www.carlospes.com/minidiccionario/lenguaje_de_bajo_nivel.php
http://lenguajeensamblador.tripod.com/Lenguaje%20Ensamblador%20II.htm

4 comentarios:

  1. Imagino que ya estás cerca de entregar la tarea intro también :) Te pongo 7 puntos en el lab por esta entrada.

    ResponderEliminar
  2. Intenta tener algo, aunque chiquito, cada semana. Así no se te acumula la chamba demasiado.

    ResponderEliminar
  3. ¿Nada esta semana? Me preocupas, chamaco :|

    ResponderEliminar