Sei sulla pagina 1di 16

Integrantes

lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables
Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras caractersticas del lenguaje, por tanto, un lenguaje ensamblador es

especfico a cierta arquitectura de computador fsica o virtual

Fue usado principalmente en los inicios del desarrollo de software, cuando an no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes acadmicos y de investigacin, especialmente cuando se requiere la manipulacin directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido.

ENSAMBLADOR

Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al cdigo de mquina del computador objetivo.
Realiza una traduccin ms o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemnicas a las instrucciones y datos de mquina. Ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuracin. La mayora de los ensambladores modernos incluyen una facilidad de macro (descrita ms abajo), y son llamados macro ensambladores.

Muchos dispositivos programables (como los microcontroladores) an cuentan con el ensamblador como la nica manera de ser manipulados.

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel.

El lenguaje ensamblador es difcilmente portable, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta.

Los programas hechos por un programador experto en lenguaje ensamblador son mucho ms rpidos y consumen menos recursos del sistema que el programa equivalente compilado desde un lenguaje de alto nivel.

Se tiene un control muy preciso de las tareas realizadas por un micro procesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel.

Se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.

La UCP x86 tiene 14 registros internos y bsicos, aunque algunos son realmente de 32 bits.

Registros de uso general


AX: Acumulador (AL:AH) BX: Registro base (BL:BH) CX: Registro contador (CL:CH) DX: Registro de datos (DL:DH) DS: Registro del segmento de datos ES: Registro del segmento extra SS: Registro del segmento de pila CS: Registro del segmento de cdigo

Registros de segmento

Registros punteros

BP: Registro de apuntadores base SI: Registro ndice fuente DI: Registro ndice destino

SP: Registro apuntador de la pila IP: Registro apuntador de la siguiente instruccin F: Registro de banderas (8 bits) Registros especiales

Bits del registro de banderas

Overflow
NV (Apagado): No hay desbordamiento

Direction
UP: Hacia adelante

OV (Encendido): Si lo hay

DN: Hacia atras

Interrupts
DI: Desactivadas EI: Activadas

Sign
PL: Positivo NG: Negativo

Bits del registro de banderas

Zero
NZ: No es cero ZR: Si lo es

Auxilary carry
NA: No hay acarreo auxiliar AC: Hay acarreo auxiliar

Parity
PO: Impar PE: Paridad par

Carry
NC: No hay acarreo CY: Si lo hay

La sintaxis es la siguiente:
Nombre de la Instruccin

Operando 1

Operando 2

Operando 3

Operando 4

El nombre de la instruccin est formada por 2 o 3 letras, los operandos pueden ser registros, constantes o direcciones de memoria. La cantidad de operandos depender de la instruccin.

EJEMPLO
Esta instruccin indica que se copie el valor de la porcin de la memoria que est en la ubicacin 1000 (En hexadecimal) a la parte baja del registro AX (AL). Cuando un operando es un valor de una direccin de memoria, sta direccin se escribe entre corchetes, recordar que el operando 1 es el destino y el operando 2 es el origen. Y cuando es una constante depender del ensamblador, en el caso del debug (Un programa que sirve para crear y editar aplicaciones que viene con el DOS) se interpretarn como hexadecimales, en los siguientes ejemplos se interpretar que las constantes son nmeros hexadecimales.

Tambin se puede tomar un valor de la memoria apuntado por un registro,

DI est apuntado al valor que est en la memoria que ser copiado al registro AL. El nombre MOV viene de la palabra move, que es una palabra del ingles que significa mover. Justamente la instruccin mencionada significa, mover el valor apuntado por DI a AL.
Tambin se puede copiar el valor de un registro a otro

En este caso se copia el valor de BL a AL.

Igualmente se puede copiar el valor de la parte baja de un registro a la parte alta de otro registro, As como tambin operar con las partes altas

Inclusive se puede copiar el valor de un registro a una direccin de memoria

Igualmente apuntada la direccin de memoria a DI

Y tambin con los registros completos (Solamente completos en el procesador 8086)

Tambin trabajar con los registros completos para todos los procesadores de 32 bits

En ste caso mueve la totalidad del registro DX a la totalidad del registro BX, en ste caso se est trabajando con los registros en forma extendida (32 bits), pero hay que tener precaucin ya que el procesador 8086 no interpretar correctamente sta instruccin (El procesador 8086 es obsoleto por sta desventaja y otras ms, por ejemplo slo puede direccionar 1 MB), adems el debug no puede interpretar sta instruccin.

No se puede realizar lo siguiente porque no se pueden pasar valores en la memoria sin la intervencin de un registro, adems no se ha especificado el tamao

Igualmente no se puede hacer lo siguiente

As como tambin lo siguiente

Sin embargo lo siguiente es correcto

Pero no lo siguiente porque no se est especificando el tamao

Lo correcto sera lo siguiente, Si se quiere transferir un byte

Si se quiere transferir una palabra (16 bits)

Si se quiere transferir una doble palabra (32 bits)

Dado que es necesario transferir datos existen los siguientes tipos de direccionamiento.

DIRECCIONAMIENTOS Valor de un registro. Ejemplo: MOV AX, DX Constante. Ejemplo: MOV BX, 1AB Valor apuntado por una constante. Ejemplo: MOV AX, [1000] Apuntado por un registro de segmento y uno de offset (Solo puede ser BX, BP, DI o SI). Ejemplo: MOV CX, ES:[DI] Apuntado por DS y la suma de BX con una constante o apuntado por SS y la suma de BP con una constante. Ejemplo: MOV DX, DS:[BP+1000] Apuntado por DS y la suma de DI o SI con una constante. Ejemplo: MOV BX, DS:[SI+6F9] Apuntado por DS y la suma de BX y SI o BX y DI con una constante o apuntado por SS y la suma de BP y SI o BP y DI con una constante

La primera razn para trabajar con ensamblador es que proporciona la oportunidad de conocer ms a fondo la operacin de su PC, lo que permite el desarrollo de software de una manera ms consistente. La segunda razn es el control total de la PC que se tiene con el uso del mismo. Otra razn es que los programas de ensamblador son ms rpidos, ms compactos y tienen mayor capacidad que los creados en otros lenguajes.

Por ltimo el ensamblador permite una optimizacin ideal en los programas tanto en su tamao como en su ejecucin.

Potrebbero piacerti anche