Está en la página 1de 8

Republica Bolivariana de Venezuela

Ministerio del Poder Popular para la Defensa


Universidad Nacional Experimental de la Fuerza Armada
Nucleo Carabobo Extension Guacara

ALUMNOS:
Masihady Mendoza
Urbinson Ruiz
Robert Sevilla
Franklin Glea
Ing. En telecomunicaciones

Guacara, octubre de 2015

CONCEPTO
El lenguaje ensamblador es el lenguaje de programacin utilizado para escribir programas
informticos de bajo nivel, y constituye la representacin ms directa del Cdigo mquina
especfico para cada arquitectura de computadoras legible por un programador. Aun hoy se
utiliza en la programacin de handler o manipuladores de dispositivos de hardware.
CARACTERITICAS

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser


entendido directamente por un ser humano ya que su estructura se acerca ms bien
al lenguaje mquina, es decir, lenguaje de bajo nivel.
El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un
Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para
poder ser usado en otra mquina distinta, aun con el mismo Microprocesador, solo
pueden ser reutilizados secciones especiales del cdigo programado.
Los programas hechos en lenguaje ensamblador, al ser programado directamente
sobre Hardware, son generalmente ms rpidos y consumen menos recursos del
sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje
ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan
menos espacio que con lenguajes de alto nivel.
Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas
por un Microprocesador por lo que se pueden crear segmentos de cdigo difciles de
programar en un lenguaje de alto nivel.
Tambin se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e
impedir que se interrumpa durante su ejecucin.
El lenguaje ensamblador es un cdigo estructurado y gravitatorio desarrollado sobre
un archivo de programacin (.ASM), en el cual pueden existir varios programas,
macros o rutinas que pueden ser llamados entre s.

LENGUAJE
Un programa escrito en lenguaje ensamblador consiste en una serie de Instrucciones que
corresponden al flujo de rdenes ejecutables que pueden ser cargadas en la Memoria de un
sistema basado en Microprocesador. Por ejemplo, un Procesador x86 puede ejecutar la
siguiente instruccin Binaria como se expresa en cdigo de mquina:

Binario: 10110000 01100001 (Hexadecimal: 0xb061)

La representacin equivalente en lenguaje ensamblador es ms fcil de recordar:

MOV al, 061h

Esta instruccin significa:

Asigna el valor Hexadecimal 61 (97 Decimal) al registro "al".

El mnemnico "mov" es un cdigo de operacin u "opcode", elegido por los diseadores de


la coleccin de instrucciones para abreviar "move" (mover, pero en el sentido de copiar
valores de un sitio a otro). El opcode es seguido por una lista de argumentos o parmetros,
completando una instruccin de ensamblador tpica. A diferencia de los lenguajes de alto
nivel, aqu hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del
ensamblador y el lenguaje de mquina. Sin embargo, en algunos casos, un ensamblador
puede proveer "pseudo instrucciones" que se expanden en un cdigo de mquina ms
extenso a fin de proveer la funcionalidad necesaria. Por ejemplo, para un cdigo mquina
condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudo
instruccin al grupo "haga si menor que", y "si = 0" sobre el resultado de la condicin
anterior. Los Ensambladores ms completos tambin proveen un rico lenguaje de macros
que se utiliza para generar cdigo ms complejo y secuencias de datos. Cada arquitectura
de microprocesadores tiene su propio lenguaje de mquina, y en consecuencia su propio
lenguaje ensamblador ya que este se encuentra muy ligado al la estructura del hardware
para el cual se programa. Los microprocesadores difieren en el tipo y nmero de
operaciones que soportan; tambin pueden tener diferente cantidad de registros, y distinta
representacin de los tipos de datos en memoria. Aunque la mayora de los
microprocesadores son capaces de cumplir esencialmente las mismas funciones, la forma
en que lo hacen difiere y los respectivos lenguajes ensamblador reflejan tal diferencia.
Pueden existir mltiples conjuntos de mnemnicos o Sintaxis de lenguaje ensamblador para
un mismo conjunto de instrucciones, instanciados tpicamente en diferentes programas en
ensamblador. En estos casos, la alternativa ms popular es la provista por los fabricantes, y
usada en los manuales del programa.
CODIGO DE MAQUINA
El cdigo mquina, o lenguaje de mquina, est formado por instrucciones sencillas, que
-dependiendo de la estructura del procesador- pueden especificar:

Registros especficos para operaciones aritmticas, direccionamiento o control de


funciones.
Posiciones de memoria especficas (offset).
Modos de direccionamiento usados para interpretar operandos.

Las operaciones ms complejas se realizan combinando estas instrucciones sencillas, que


pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo. Casi
todas las instrucciones utilizan 2 operandos especficos para realizar su funcin. Ejemplo,
cuando deseamos mover un valor constante hacia Uu registro de almacenamiento debemos
especificar ambos operandos. Las operaciones disponibles en la mayora de los conjuntos
de instrucciones incluyen:

mover

Llenar un registro con un valor constante (Ej.: mov al, `20`). o mover datos de una posicin
de memoria a un registro o viceversa (Ej.: mov al, [si]) o escribir y leer datos de
dispositivos (Ej.: lea dx, offset cadena)

computar

Sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en
uno de ellos o en otro registro (Ej.: sum, mul, div, entres otras instrucciones). o realizar
operaciones binarias, incluyendo operaciones lgicas (AND/OR/XOR/NOT) o comparar
valores entre registros (mayor, menor, igual) (Ej.: cmp)

afectar el flujo del programa

Saltar a otra posicin en el programa y ejecutar instrucciones all (Ej.: jmp) o saltar si se
cumplen ciertas condiciones (IF) (Ej.: jnb, jnz, jb, jz, jne, je, entre otros) o saltar a otra
posicin, pero guardar el punto de salida para retornar (Ej.: CALL, llamada a subrutinas)
Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una
sola instruccin compleja hace lo mismo que en otras computadoras puede requerir una
larga serie de instrucciones, por ejemplo:

salvar varios registros en la Pila de una sola vez


mover grandes bloques de memoria

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 sera que los programas en
ensamblador ocupan menos espacio en memoria.
VENTAJAS Y DESVENTAJAS DEL LENGUAJE ENSAMBLADOR
Ventajas

Como trabaja directamente con el microprocesador al ejecutar un programa, pues


como este lenguaje es el ms cercano a la mquina la computadora lo procesa ms
rpido.

Eficiencia de tamao: Un programa en ensamblador no ocupa mucho espacio en


memoria porque no tiene que cargan libreras y dems como son los lenguajes de
alto nivel

Flexibilidad: Es flexible porque todo lo que puede hacerse con una mquina, puede
hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel
tienen en una u otra forma limitantes para explotar al mximo los recursos de la
mquina. O sea que en lenguaje ensamblador se pueden hacer tareas especficas que
en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas
limitantes que no se lo permite

Desventajas

Tiempo de programacin: Como es un lenguaje de bajo nivel requiere ms


instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de
alto nivel. Por otro lado, requiere de ms cuidado por parte del programador, pues es
propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin.

Programas fuente grandes: Por las mismas razones que aumenta el tiempo, crecen
los programas fuentes; simplemente requerimos ms 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 mquina,
programar en este lenguaje lo ms comn que pueda pasar es que la mquina se
bloquee o se reinicialice. Porque con este lenguaje es perfectamente posible (y
sencillo) realizar secuencias de instrucciones invlidas, que normalmente no
aparecen al usar un lenguaje de alto nivel.

Falta de portabilidad: Porque para cada mquina existe un lenguaje ensamblador;


por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos
codificar en una mquina y luego llevar los programas a otros sistemas operativos o
modelos de computadoras.

RELACION DEL LENGUAJE ENSAMBLADOR CON LOS COMPONENTES


INTERNOS DEL PROCESADOR

En la memoria se almacena la informacin en celdas especiales llamados registros


los cuales tienen un nivel alto y un nivel bajo.
Unidad aritmtica y lgica es la responsable de realizar como su nombre lo indica
operaciones aritmticas y lgicas.
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 informacin que la mquina 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 aritmticas y lgicas, despus de la operacin 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 multiplicacin
y divisin junto con Ax y en operaciones de entrada y salida de puertos, su mitad inferior
DL contiene el nmero de puertos.

Registros de Estado
Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits ms
significativos estn 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 "prstamo"
(en caso de resta). Este indicador es usado por instrucciones que suman o restan nmeros
que ocupan varios bytes. Las instrucciones de rotacin pueden aislar un bit de la memoria o
de un registro ponindolo en el CF.
PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un nmero 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 "prstamo" del
nibble (cuatro bits) menos significativo al nibble ms 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 operacin es cero.
SF (Sign Flag, bit 7): Refleja el bit ms significativo del resultado. Como los nmeros
negativos se representan en la notacin 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 automticamente genera una interrupcin interna despus de cada instruccin,
permitiendo inspeccionar los resultados del programa a medida que se ejecuta instruccin
por instruccin.
IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupcin externas. Si
vale 0, no se reconocen tales interrupciones
DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirn "autodecremento", esto es, se procesarn las cadenas desde las direcciones ms altas de memoria
hacia las ms bajas. Si vale 0, habr "auto-incremento", lo que quiere decir que las cadenas
se procesarn de "izquierda a derecha".
OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operacin aritmtica con
signo, esto es, un dgito significativo se perdi debido a que tamao del resultado es mayor
que el tamao del destino.
RELACION ENTRE EL CODIGO BINARIO Y EL LENGUAJE ENSAMBLADOR
En el cdigo binario se utilizan ceros y unos, mientras que el lenguaje ensamblador es una
coleccin de smbolos mnemnicos que representan: operaciones, nombres simblicos,
operadores y smbolos especiales.
La relacin entre estos dos lenguajes sera que el binario es el lenguaje que la mquina
entiende y el ensamblador se acerca ms lenguaje de esta.

Manejo de la memoria: Direccionamiento (interno y externo)


El manejo de la memoria depende de que procesador tenga la mquina, entre los cuales a
continuacin 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 tamao mximo 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 tambin se puede direccionar
un banco de Memoria Externa de Datos de 256 bytes usando los dos primeros registros de
propsito general.
El espacio de Memoria Interna de Datos funcionalmente es la memoria de datos ms
importante, ya que ah es donde residen cuatro bancos de registros de propsito 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
tamao mximo 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 mxima 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 tamao mximo 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

También podría gustarte