Fijaciones de balcones prefabricados de hormigón - RECENSE
Assembler apesteguia (1)
1. 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.
2. 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.
3. 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.
LENGUAJEMAQUINA ASSEMBLER
HISTORIA
4. 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
5. aunque el lenguaje ensamblador
siempre manejado y generado
compiladores, todavía se usa
es casi
por los
para la
manipulación directa del hardware, acceso a
instrucciones especializadas del procesador, o
para
crítico.
resolver
Los
problemas de desempeño
usos
controladores/manejadores
típicos son
(drivers) de
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 y generado por por los
compiladores, todavía se usa para la
manipulación directa del hardware, acceso a
instrucciones especializadas del procesador o
para resolver problemas de desempeño
crítico. Los usos típicos son controladores/
manejadores (drivers) de dispositivo, sistemas
embebidos de bajo nivel y sistemas de tiempo
real.
6. El lenguaje assembler es un lenguaje de
programación de bajo nivel. Consiste en un
conjunto de mnemónicos que representan
instrucciones básicas para los
computadores, microprocesadores, micro
controladores y otros circuitos integrados
programables. En informática, un
mnemónico es una palabra que sustituye a
un código de operación (lenguaje de
máquina), con lo cual resulta más fácil la
programación, es de aquí de donde se aplica
el concepto de lenguaje ensamblador.
MARCO TEÓRICO
El lenguaje assembler es un lenguaje de
programación de bajo nivel. Consiste en un
conjunto de mnemónicos que representan
instrucciones básicas para los
computadores, microprocesadores, micro
controladores y otros circuitos integrados
programables. En informática, un
mnemónico es una palabra que sustituye a
un código de operación (lenguaje de
máquina), con lo cual resulta más fácil la
programación, es de aquí de donde se aplica
el concepto de lenguaje ensamblador.
7. 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.
8. 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.
9. VENTAJAS Y DESVENTAJAS
VENTAJAS DESVENTAJAS
Velocidad Tiempo de programación
Tamaño Programas de fuentes
flexibilidad Peligro de afectar
Falta de portabilidad
10. • 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.
VELOCIDAD
11. 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.
TAMAÑO
12. En el lenguaje Ensamblador es
sumamente sencillo, pues
tenemos el acceso directo
al hardware del monitor.
FLEXIBILIDAD
En el lenguaje Ensamblador es
sumamente sencillo, pues tenemos
el acceso directo al hardware del
monitor.
FLEXIBILIDAD
Al ser de bajo nivel el
Lenguaje Ensamblador
requiere más instrucciones
para realizar el mismo
proceso, en comparación con
un lenguaje de alto nivel.
TIEMPO DE
PROGRAMACION
13. 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
14. 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.
16. 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
17. Registros
En total maneja 14 registros distribuidos de la siguiente
manera:
Registro de proposito general
AX (16 bits )
BX (16 bits)
CX(16bits)
DX(16 bits)
Registro de indice
SI
DI
BP
SP
Registro de segmento
CS
DS
ES
SS
Registro apuntador de instrucciones
IP
Registro de bandera
OF (overflow, desbordamiento)
DF (dirección)
IF (interrupción)
TF (trampa)
SF (signo)
ZF (cero)
PF (paridad)
CF (acarreo)
18. 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.
19. 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
20. 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
21. 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.
22. 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.
24. 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 COMERCIALES DEL
LENGUAJE ASSEMBLER
25. ❖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.
28. 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.