domingo, 11 de marzo de 2012

Introducción al lenguaje ensamblador

El lenguaje ensamblador es un lenguaje de bajo nivel que representa más directamente el código máquina específico para cada arquitectura de computadoras legible por un programador.

Se utiliza para mejorar la eficiencia de alguna rutina específica, para realizar tareas que no son soportadas por lenguajes de alto nivel, para obtener acceso a otras funciones de bajo nivel del procesador, entre otras cosas.

Es el lenguaje de programación más básico disponible de algún procesador. Con el lenguaje ensamblador, un programador trabaja con operaciones implementadas directamente desde el hadware (CPU físico). El lenguaje ensamblador carece de variables y funciones, y no es portatil entre algunas familias de procesadores.

¿Porqué usar lenguaje ensamblador?
Un programa en ensamblador es más rápido que uno generado por un compilador en un lenguaje de alto nivel.

Éste lenguaje es el lenguaje de programación más poderoso que existe, le permite a los programadores tener la percepción requerida para escribir adecuadamente y de una manera más óptima los lenguajes de alto nivel. Aprender lenguaje ensamblador vale el tiempo y esfuerzo que le dedique.

Cuando un código es escrito en lenguaje de alto nivel, éste debe ser compilado, traducido a lenguaje máquina, y luego ser interpretado por otro programa.

Con el lenguaje ensamblador es diferente, sus instrucciones corresponden y tienen mucho parecido al lenguaje máquina, por lo que es más fácil interpretarse y requiere menos tiempo y recursos.

El lenguaje ensamblador permite al programador utilizar representación simbólica de códigos de operación de máquina, ubicaciones de memoria, registros, entre otras partes de una instrucción.

Ejemplo

Tenemos éste código escrito en ensamblador:

MOV AX, 47104
MOV DS, AX
MOV [3998], 36
INT 32

Cuando se lee este programa, cada una de las líneas de código escritas se convierten en instrucciones para el CPU. Este programa utiliza dos tipos de instrucciones: MOV y INT. La función de MOV mueve la información, mientras que ING transfiere el control del procesador a los drivers del dispositivo o al sistema operativo.

Con esto podemos decir que la instrucción MOV AX, 47104 le dice a la computadora que copie el número 47104 en la ubicación AX.

La siguiente instrucción: MOV DS, AX, le dice a la computadora que copie el número en AX a la ubicación DS.

Después, MOV [3998], 36 le dice a la computadora que ponga el número 36 en la ubicación 3998 de la memoria.

ING 32 termina el programa y se regresa al sistema operativo.

¿Cómo funciona éste programa?

Dentro del CPU existen varias ubicaciones llamadas registros, donde se almacena un número. Existen registros tales como AX, que son de no realizan acciones especiales, sin embargo, otros registros como DS, controlan la forma en la que el CPU funciona.

DS es el registro del segmento, se usa para seleccionar en qué área de la memoria puede escribir el CPU. En el programa escrito anteriormente escribimos el número 47104 en DS, esto le dice al CPU que accese a la memoria en la tarjeta de video.

Después nuestro programa ubica el número 36 en 3998 de la tarjeta de video. 36 es el código para el signo "quot; y 3998 es la ubicación de ña esquina inferior derecha de la pantalla. Entonces un signo $ va a aparecer en la pantalla por unos microsegundos. Después, nuestro programa le dice al CPU que haga una interrupción. Una interrupción se usa para detener un programa y ejecutar otro en su lugar. En este caso, vamos a interrumpir 32 y terminar nuestro programa para que se regrese al prinicipio.

Bibliografía

Introduction to assembly language

Assembly language









1 comentario: