0% encontró este documento útil (0 votos)
58 vistas28 páginas

Introducción al Lenguaje Ensamblador

Este documento presenta un trabajo sobre el lenguaje de programación assembler realizado por estudiantes de la Facultad de Ingeniería Eléctrica y Electrónica de la Universidad Nacional del Callao. El trabajo describe brevemente la historia del assembler, sus características como la velocidad y el tamaño de los programas, y las ventajas y desventajas de este lenguaje de bajo nivel como el control preciso sobre el hardware y el tiempo de programación requerido. Finalmente, el documento incluye ejemplos de estructuras básicas de
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas28 páginas

Introducción al Lenguaje Ensamblador

Este documento presenta un trabajo sobre el lenguaje de programación assembler realizado por estudiantes de la Facultad de Ingeniería Eléctrica y Electrónica de la Universidad Nacional del Callao. El trabajo describe brevemente la historia del assembler, sus características como la velocidad y el tamaño de los programas, y las ventajas y desventajas de este lenguaje de bajo nivel como el control preciso sobre el hardware y el tiempo de programación requerido. Finalmente, el documento incluye ejemplos de estructuras básicas de
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE IINGENIERÍA ELÉCTRICA Y


ELECTRÓNICA

“LENGUAJE DE PROGRAMACIÓN ASSEMBLER”


Integrantes:
DÍAZ GUERRA ALFREDO EDWIN
1813120151
PINEDA PAREDES ANDY EDGARDO
1813120561
FERNANDEZ CORNEJO SEBASTIAN
1813110108
MARQUINA INOCENTE CARLOS
1623125271
LOAIZA NAVARRO MARCIO CLAUDIO
1723115089

Docente:
ING. JUAN ANTONIO APESTEGUIA INFANTES

Lima, Perú Diciembre, 2020.


INTRODUCCIÓN
En el presente trabajo veremos cómo
se inició este lenguaje, que
características y bibliotecas maneja,
con ello se analizará la importancia,
ventajas y desventajas del mismo. Por
último se mencionaran algunas de sus
aplicaciones y ejemplos.
HISTORIA
Los lenguajes ensambladores fueron primero desarrollados en los años
1950, cuando fueron referidos como lenguajes de programación de segunda
generación. Los lenguajes ensambladores eliminaron mucha de la
propensión a errores y del consumo de tiempo de la programación de los
lenguajes de primera generación, que se necesitaba con los primeros
computadores, liberando a los programadores del tedio tal como recordar
códigos numéricos y cálculo de direcciones. Una vez fueron ampliamente
usados para todo tipo de programación.

LENGUAJE MAQUINA ASSEMBLER


Históricamente, un gran número de programas han sido escritos enteramente en lenguaje
ensamblador. Los sistemas operativos fueron casi exclusivamente escritos en lenguaje
ensamblador hasta la aceptación amplia del lenguaje de programación C en los años 1970
y principios de los 1980. También, muchas aplicaciones comerciales fueron escritas en
lenguaje ensamblador, incluyendo una gran cantidad del software escrito por grandes
corporaciones para mainframes de IBM. Los lenguajes COBOL y FORTRAN
eventualmente desplazaron mucho de este trabajo, aunque un número de organizaciones
grandes conservaran las infraestructuras de aplicaciones en lenguaje ensamblador hasta
bien entrados los años 1990.

OBOL FORTRAN
Sin embargo, por los años 1980 (1990 en los
microcomputadores), su uso había sido en
gran parte suplantado por los lenguajes de
alto nivel, en la búsqueda de una mejorada
productividad en programación. Hoy en día,
aunque el lenguaje ensamblador es casi
siempre manejado
manejado y ygenerado
generado por por
por los
compiladores, todavía se usa para la
manipulación directa
directadel
delhardware,
hardware,acceso
accesoa a
instrucciones especializadas
especializadas del
delprocesador,
procesador oo
para resolver problemas de desempeño
crítico. Los Los
usos típicos
usos son típicos
controladores/
son
manejadores (drivers) de dispositivo,
controladores/manejadores sistemas
(drivers) de
embebidos de bajo nivel y sistemas de tiempo
real.
MARCO TEÓRICO
El
El lenguaje
lenguaje assembler
assembler es es un
un lenguaje
lenguaje dede
programación
programación dede bajo
bajo nivel.
nivel. Consiste
Consiste enen unun
conjunto
conjunto de
de mnemónicos
mnemónicos que que representan
representan
instrucciones
instrucciones básicas
básicas para
para los
los
computadores,
computadores, microprocesadores,
microprocesadores, micromicro
controladores
controladores yy otros
otros circuitos
circuitos integrados
integrados
programables.
programables. En En informática,
informática, unun
mnemónico
mnemónico es es una
una palabra
palabra que
que sustituye
sustituye a a
un código de
un código de operación
operación (lenguaje
(lenguaje dede
máquina),
máquina), con
con lo
lo cual
cual resulta
resulta más
más fácil
fácil la
la
programación,
programación, eses de
de aquí
aquí de
de donde
donde sese aplica
aplica
el
el concepto
concepto de
de lenguaje
lenguaje ensamblador.
ensamblador.
CARACTERISTICAS
❖ Los programas hechos en lenguaje
ensamblador, al ser programado directamente
sobre Hardware, son generalmente más rápidos
y consumen menos recursos del sistema
(memoria RAM y ROM). Al programar
cuidadosamente en lenguaje ensamblador se
pueden crear programas que se ejecutan más
rápidamente y ocupan menos espacio que con
lenguajes de alto nivel.
❖ El código escrito en lenguaje ensamblador
posee una cierta dificultad de ser entendido
directamente por un ser humano ya que su
estructura se acerca más bien al lenguaje
máquina, es decir, lenguaje de bajo 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 código difíciles de programar en
un lenguaje de alto nivel.
IMPORTANCIA
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 él 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.
VENTAJAS Y DESVENTAJAS

VENTAJAS DESVENTAJAS
Velocidad Tiempo de programación
Tamaño Programas de fuentes
flexibilidad Peligro de afectar
Falta de portabilidad
VELOCIDAD

• Implica un proceso de computo adicional al que


el programador quiere realizar
• Un interprete es siempre mas lento que realizar
la misma acción en Lenguaje Ensamblador.
• Los compiladores son muchos mas rápidos que
los interpretes, pues hacen la traducción de una
vez y dejan el código objeto.
• Mayor parte de las veces, el código generado por
un compilador es un menos eficiente que el
código equivalente que un programador
escribiría.
TAMAÑO

Existen programas donde el


uso de las memorias para esos
casos es eficiente el lenguaje
ensamblador por la mínima
cantidad de recursos de los
que dispone.
FLEXIBILIDAD
En el lenguaje Ensamblador es
sumamente sencillo, pues tenemos
el acceso directo al hardware del
monitor.

TIEMPO DE
FLEXIBILIDAD PROGRAMACION

En el lenguaje Ensamblador es Al ser de bajo nivel el


sumamente sencillo, pues Lenguaje Ensamblador
tenemos el acceso directo requiere más instrucciones
al hardware del monitor. para realizar el mismo
proceso, en comparación con
un lenguaje de alto nivel.
FALTA DE
PORTABILIDAD
Como ya se mencionó, existe un
lenguaje ensamblador para cada
máquina; por ello, evidentemente
no es una selección apropiada de
lenguaje cuando deseamos
en una maquina y luego llevar los
a otros SO
Estructura De Un Programa En Assembler

Un programa en el lenguaje ensamblador consiste de una secuencia de proposiciones, una en cada línea del código fuente.

La sintaxis de una proposición es la siguiente:

[etiqueta] [instrucción|directiva [operandos]] [;comentario]

Donde etiqueta, instrucción|directiva, operandos, comentario son los campos de la proposición.


Palabras Reservadas
Inicio del Assembler

Model
Stack

Variables del programa


Las variables de un programa se declaran en el segmento de datos, por lo que la sección de declaración de variables empieza con la
directiva dataseg. Esta directiva le indica a Turbo Assembler que almacene las variables en el segmento de datos del programa. Las
variables pueden estar inicializadas o no. Los valores de las variables inicializadas se almacenan en el código del programa y se cargan
en las variables al ejecutar el programa.

Para declarar variables podemos utilizar las directivas db, dw, dd o dq. La directiva db define una variable de un byte, la directiva dw
define una variable de tipo palabra (dos bytes), la directiva dd define una variable de tipo palabra doble (cuatro bytes) y la directiva
dq define una variable de tipo palabra cuádruple (ocho bytes). La sintaxis de estas directivas son:
nomVar db exp
nomVar dw exp
nomVar dd exp
nomVar dq exp
Registro de segmento
CS
Registros
DS
ES
En total maneja 14 registros distribuidos de la siguiente SS
manera:
Registro apuntador de instrucciones
Registro de proposito general
IP
AX (16 bits )
BX (16 bits) Registro de bandera
CX(16bits) OF (overflow, desbordamiento)
DX(16 bits)
DF (dirección)
Registro de indice IF (interrupción)
SI TF (trampa)
DI SF (signo)
BP
SP ZF (cero)
PF (paridad)
CF (acarreo)
Modos de Direccionamiento de Datos
Direccionamiento por Registro
Direccionamiento Inmediato
Direccionamiento Directo
Direccionamiento indirecto por registro

Calculo de direcciones de memoria


El ASSEMBLER tiene un bus de direcciones de 20bita. Por tanto un solo registro no tienela capacidad de representar 20bits ya que los
registros son de 16 bits.
Cada dirección de memoria se divide en 2 partes. El segmento y eldesplazamiento. La notación en Hex sería algo así SSSS:DDDD
La manera de calcular una dirección real de memoria es correr el registro desegmento 4bits a la izquierda y luego sumarle el
desplazamiento.
Interrupciones
Es un mecanismo de transferencia de control, básicamente ocasiona que la CPUdetenga su ejecución del programa actual y transfiera
el control a una rutina de servicio.
Al terminar de ejecutar la interrupción, el CPU continua con los procesos que seestaban ejecutando antes de la interrupción.
Básicamente existen 2 tipos de interrupciones:
–De hardware
–De software
•Las interrupciones de hardware son asincronas, es decir, pueden ocurrir encualquier momento y no están bajo el control del
programa.
•Las interrupciones de Software, pueden invocarse a voluntad y son controladaspor el programa en forma sincronica (es decir, se
conoce todo lo relacionado consu ejecucion ya que el programa controla el momento y la manera en que soninvocadas)
Int 21h
Int 16h
Variantes permisibles de la instrucción mov
es una instrucción en el lenguaje ensamblador de la mayoría de procesadores, cuyo propósito es la transferencia de
datos entre registros de procesador o registro y memoria. Adicionalmente mov también permite el uso de datos
absolutos, como por ejemplo mover el número 10 a un registro del procesador.
1. Mov registro, registro
2. Mov registro, memoria
3. Mov memoria, registro
4. Mov memoria, valor inmediato
5. Mov registro, valor inmediato
6. Mov memoria, acumulador
7. Mov acumulador, memoria
8. Mov Registro de segmento, memoria
9. Mov registro, registro de segmento
10. Mov registro de segmento, memoria
11. Mov memoria, registro de segmento
Instrucción Xlat

Xlat es una instrucción que se utiliza para trabajar con tablas (o arreglos). Se utilizan los registros AL y BX.
La instrucción xlat reemplaza el valor de AL por un nuevo valor tomado de la tabla y el registro BX contiene la dirección del primer
elemento de la tabla.
Instrucción Loop
Loop es una instrucción cuya función es realizar un bucle.
Trabaja en conjunto con el registro CX, donde “cx” contiene el numero de repeticiones que se debe realizar.

Rutinas, Saltos
Las rutinas son secuencias o bloques de código que pueden reutilizarse. Estas rutinas son invocadas por la instrucción
CALL.
Existen dos tipos de instrucciones de salto o alteración del flujo de ejecución.
La instrucción jmp altera el flujo de ejecución enviando el control en forma incondicional a la dirección indicada.
Las instrucciones de salto condicional basan su bifurcación en el estatus que tengan ciertas banderas del registro correspondiente.
EJEMPLO DE PROGRAMA EN
LENGUAJE ASSEMBLER
APLICACIONES COMERCIALES DEL
LENGUAJE ASSEMBLER

El lenguaje ensamblador es ideal para


escribir programas embebidos, debido a
que utilizan muy poca memoria. El uso
más común sin duda es la programación
de microcontroladores, para diseñar
sistemas embebidos, el cual es un circuito
integrado programable, capaz de ejecutar
las órdenes grabadas en su memoria.
❖Aplicaciones en la ingeniería del software:
• CUANDO HAY IMPLICADOS GRAFICOS
Si un programa esta dibujando una imagen en la pantalla,
tiene que trabajar muy rápido, o la espera seria intolerable.

• CUANDO ES NECESARIO TOMAR MUCHAS DECISIONES


Esto es a menudo en programas de juegos complejos, tales
como las damas o el ajedrez. El programa tiene que intentar
y comprobar muchas posibilidades y decidir un movimiento
que sea razonable.
Sistemas Embebidos
impresoras,armas,autos,armas,juguetes,etc.
Tiempo Real: en la industria y manufactura, adquisición de
datos, control de robots.
Transporte: barcos, aviones, sondas espaciales,etc.
Entretenimiento:
graficación, multimedia,
cine y videojuegos.
DSP(Procesamiento de
señal digital):
Procesamiento de señales,
voz e imágenes.
CONCLUSIONES:
➢ Permite al programador indicarle al computador exactamente
cómo llevar a cabo una tarea específica usando la menor
cantidad de instrucciones.
➢ Obtener acceso a funciones de bajo nivel del procesador para
realizar tareas que no son soportadas por los lenguajes de alto
nivel.
➢ Escribir manejadores de dispositivos para comunicarse
directamente con hardware especial tales como tarjetas de red.
➢ Trabajar en ambientes con recursos limitados puede requerir el
uso del lenguaje ensamblador pues el código ejecutable puede
ser menor que el generado por el compilador.
➢ Los lenguajes ensamblador tienen sus aplicaciones muy
reducidas, se centran básicamente en aplicaciones de tiempo
real, control de procesos y de dispositivos electrónicos.

También podría gustarte