Uploaded by faldo8775

Lenguaje Maquina

advertisement
Lenguaje Maquina,
Ensamblador
Aldo Franco
Romero
Instituto de
Ingenieros de
Morelos
08/Diciembre/2019
Índice
1. Introducción.
2. Diferencias entre un compilador y un ensamblador.
3. Ventajas y desventajas.
4. ¿Utilizar un lenguaje ensamblador en lugar de un lenguaje compilador?
5. ¿Para qué necesidades se utiliza el lenguaje ensamblador?
6. Principios del funcionamiento del lenguaje ensamblador.
7. Estructura básica de un programa en lenguaje ensamblador.
8. Diferencia entre un lenguaje ensamblador para Dos y para Windows.
9. Diferencias de lenguaje ensamblador de arquitecturas de 16, 32 y 64 bits.
10. Conclusión.
11. Bibliografía.
1-.Introducción
El lenguaje maquina o código maquina es un sistema de códigos
interpretable por un circuito micro programable, como el micro
procesador de un computador o el micro controlador de un autómata,
compuesto por conjunto de instrucciones que determinan acciones a
realizar por la máquina. Es el conjunto de datos que la parte física
(Hardware) es capaz de comprender e interpretar el código binario
comprendido en 0-1
Consiste en programas, cuyos son cadenas de instrucciones más un
conjunto de datos sobre el cual se trabaja, las instrucciones son
ejecutadas en secuencia. El lenguaje maquina es especifico de la
arquitectura de la máquina, algunos conjuntos de instrucciones pueden
ser similares a otras arquitecturas.
En el tiempo de desarrollo de la maquina se utilizaban series de
combinaciones binarias para dictar ordenes siendo el mismo traductor,
así es como se pensó en usar la misma máquina para traducir su propio
código, con ello surgen los compiladores, que es el segundo lenguaje de
programación, el lenguaje ensamblador, este diseñado para una
computadora específica, es decir, en lenguajes de alto nivel.
1
2-.Diferencias entre un compilador y un ensamblador.
Compilador: Traductor que transforma un programa entero de
un lenguaje de programación (Código fuente) a otro. El lenguaje
objetivo es código máquina que también puede ser traducido a
un código intermedio (bytecode) o a texto, los compiladores
reúnen diversos elementos, fragmentos de una misma unidad
(programa ejecutable o librería) que puede ser almacenada y
reutilizada, a este proceso se le llama compilación.
La construcción de un compilador tiene la división del proceso
en una serie de fases, agrupadas en dos tareas;
1. Análisis de programa fuente
2. Síntesis de programa objeto
El análisis comprueba la corrección del programa fuente, en
términos de teoría de lenguaje formal, incluye análisis léxico,
que es la primera fase de un compilador este programa recibe
como entrada el codigo fuente de otro programa y esta
produce salidas compuestas de tokens o símbolos.
Analizador sintáctico, programa informático que analiza
una cadena de símbolos de acuerdo a las reglas de
gramática formal, la síntesis genera la salida expresada
en el lenguaje objeto, está formado por varias
combinaciones de fases de generación de codigo,
normalmente codigo intermedio o de objeto. Fig.1
Un Ensamblador es un tipo de programa informático que
se encarga de traducir un fichero fuente escrito en un
lenguaje ensamblador a un fichero objeto que contiene
codigo maquia, ejecutable directamente por el micro
procesador, es un lenguaje de programación de bajo
nivel, consiste en mnemónicos que representan
instrucciones básicas para computadores, micro
controladores, micro procesadores y circuitos integrados
programables. Fig.2
2
IFig.1Bloques de operación de un
compilador Clocksin, William
(1997). Clause and effect
recuperado de:
https://es.wikipedia.org/wiki/Com
pilador
Fig.2 Dominic Sweetman: See MIPS Run.
Morgan Kaufmann Publishers, 1999.
Recuperado de:
https://es.wikipedia.org/wiki/Lenguaje_ens
amblador
3.-Ventajas y desventajas:
Ensamblador:
Ventaja; eficiencia de tamaño, flexibilidad.
Desventaja; Al ser un lenguaje primitivo tiene desventajas a los lenguajes
de alto nivel; tiempo de programación, programas fuente grandes, peligro
de afectar recursos inesperadamente, falta de portabilidad
Compilador:
Ventaja; autónomo y eficiente, optimización de hardware.
Desventaja; especifico a un hardware, tiempos de compilación.
3
4.- ¿Por qué utilizar un lenguaje ensamblador en lugar de un lenguaje
compilador?
Como se puede ver en la realización de programas el lenguaje
ensamblador es directamente traducible al lenguaje de máquina y
viceversa, es una abstracción que facilita su uso para seres humanos,
por lo que la computadora no entiende directamente el lenguaje
ensamblador, es necesario traducirle al lenguaje máquina, sin embargo
al ser tan directa la traducción aparecieron los programas
ensambladores, que estos son traductores que convierten el codigo
fuente en lenguaje ensamblador a codigo objeto, es decir lenguaje
máquina, es así como surge la necesidad de facilitar al programador la
tarea de trabajar con lenguaje maquina sin perder el control directo con el
hardware
4
5.- ¿Para qué tipos de necesidades se utiliza el lenguaje ensamblador?
La mayoría de las aplicaciones se escriben parcial o totalmente en
lenguaje ensamblador, se ajustaban en un área pequeña de memoria y
se ejecutaba de manera más eficiente en procesadores lentos, por lo
tanto el lenguaje ensamblador se utiliza para optimizar ciertas secciones
de los programas de aplicación con relación con la velocidad y así tener
acceso al hardware.
 Controlador de dispositivo de hardware: Programa informático que
permite al sistema operativo interaccionar con un periférico,
haciendo una abstracción del hardware y proporcionando una
interfaz (estandarizada) para utilizar el dispositivo.
 Sistemas embebidos: Programas cortos que almacenan una
pequeña cantidad de memoria, en dispositivos de un solo propósito
como; teléfonos, sistema de combustible y la ignición del automóvil,
sistemas de control de aire acondicionado, sistema de seguridad,
instrumentos para la adquisición de datos, tarjetas de video,
tarjetas de sonido, discos duros, módems e impresoras. El lenguaje
ensamblador es ideal para escribir programas embebidos, debido a
que utilizan poca memoria.
 Consolas de videojuegos: Requieren que su software este
optimizado para que se ejecute con rapidez, utilizando pocas líneas
de codigo, el lenguaje ensamblador permite un acceso directo al
hardware de la computadora y el codigo se puede optimizar de
forma manual para máxima velocidad, ya que un lenguaje de alto
nivel les da limitaciones, y uno de bajo nivel no.
 Aplicaciones en tiempo real: Simulaciones y monitoreo del
hardware, ya que requieren de precisión en la sincronización y en
respuestas, el lenguaje ensamblador nos permite especificar con
precisión el codigo ejecutable de un programa.
5
6.- Principios del funcionamiento del lenguaje ensamblador
 El único lenguaje que entienden los micro controladores es el
codigo máquina, formados por ceros y unos del sistema binario.
 El lenguaje ensamblador expresa las instrucciones de una forma
más natural al hombre, a la vez muy cercana al micro controlador
ya que cada una de esas instrucciones se corresponde con otra en
codigo máquina.
 El lenguaje ensamblador trabaja con nemónicos, que son grupos
de caracteres alfanuméricos que simbolizan las órdenes o tareas a
realizar.
 La traducción de los nemónicos a codigo maquina entendible por el
micro controlador la lleva a cabo un programa ensamblador
 El programa escrito en ensamblador se denomina codigo fuente
*.asm, el programa ensamblador proporciona a partir de este
fichero el correspondiente código máquina, que suele tener la
extensión *.hex
IALBERTO 08/12/19 recuperado de : https://www.unioviedo.es/ate/alberto/TEMA3Ensamblador.pdf
6
7.- Estructura básica de un programa en lenguaje ensamblador.

Los ficheros de código fuente llevarán la extensión *.ASM

Los ficheros de listado llevarán la extensión *.LST

Los ficheros de código objeto llevarán la extensión *.OB]

Los ficheros de errores llevarán la extensión *.ERR

Los ficheros ejecutables en formato Intel Hex llevarán la extensión *.HEX

Comentario descriptivo del programa (utilizar una cabecera estandarizada).

Definir el micro controlador que se usará (con las directivas LIST e INCLUDE).

Introducir las opciones de compilación (que serán vistas más adelante) (opcional).

Establecer las constantes que se usarán (con la directiva EQU).

Reservar espacios de memoria (directiva RES) (si es necesario).

Configurar los puertos.

Desarrollar el programa con comentarios, en lo posible explicando cada línea de código

Los mnemónicos escritos en minúscula y las constantes y variables en mayúscula
hacen que el código escrito sea más visible.

Colocar las rutinas en el mismo sitio, todas contiguas.

Dibujar diagramas de flujo o escribir seudocódigo.
7
8.- Diferencia entre un lenguaje ensamblador para Dos y para Windows.
DOS: Disk Operating System, familia de sistemas operativos para computadoras
personales, utilizaban procesadores Intel 8o86 y 8o88 de 16 bits, primer sistema
operativo para QDOS, PC-DOS, MS-DOS de Microsoft.
DOS Box emula el sistema operativo MsDos que es un sistema operativo de
comandos, no de ventanas. Los programas hechos para MsDos corren para
Windows 3, Windows 95, Windows xp. Se utiliza para compilar, ligar y ejecutar los
programas que utilizamos.
Windows: Un ensamblador es un tipo especial de compilador, también es un
programa traductor que lee archivos en código fuente y proporciona como salida
archivos en código objeto para ser ejecutados por el CPU.
Un ensamblador es un traductor diseñado específicamente para traducir lo que
llamamos lenguaje ensamblador en código objeto.
Compiladores como Pascal o C++, realizan multitud de invisibles e inalterables
procesos acerca de cómo una dada declaración del lenguaje será traducida en
instrucciones de máquina. Ejemplo en una simple instrucción en Pascal que
asigna el valor 42 a una variable numérica llamada I será: I:= 42;
8
9.- Diferencias de lenguaje ensamblador de arquitecturas de 16, 32 y 64 bits.
x86-64 es una ampliación de la arquitectura x86, La arquitectura x86 fue lanzada
por Intel con el procesador Intel 8086, como una arquitectura de 16 bits. Esta
arquitectura de Intel evolucionó a una arquitectura de 32 bits cuando apareció el
procesador Intel 80386, denominada inicialmente i386 o x86-32 y finalmente IA-32,
AMD amplió esta arquitectura de 32 bits de Intel a una de 64 bits y la llamó x8664, posteriormente AMD64. Intel pronto adoptó las extensiones de la arquitectura
de AMD bajo el nombre de IA-32e o EM64T, y finalmente la denominó Intel 64.
Los procesadores con arquitectura x86-64 mantienen compatibilidad con los
procesadores de la arquitectura IA-32 (x86-32). Por este motivo, disponen de los
mismos modos de operación de la arquitectura IA-32, lo que permite CC-BY-SA •
PID_00178132 12 Programación en ensamblador (x86-64) mantener la
compatibilidad y ejecutar aplicaciones de 16 y 32 bits, pero además añaden un
modo nuevo denominado modo extendido (o modo IA-32e, en el caso de Intel),
dentro del cual se puede trabajar en modo real de 64 bits.
El modo de 64 bits proporciona acceso a 16 registros de propósito general de 64
bits. En este modo se utilizan direcciones virtuales (o lineales) que por defecto son
de 64 bits y se puede acceder a un espacio de memoria lineal de 264 bytes. El
tamaño por defecto de los operados se mantiene en 32 bits para la mayoría de las
instrucciones.
El modo heredado de 16 y 32 bits es utilizado por los sistemas operativos de 16 y
32 bits. Cuando el sistema operativo utiliza los modos de 16 bits o de 32 bits, el
procesador actúa como un procesador x86 y solo se puede ejecutar código de 16
o 32 bits. Este modo solo permite utilizar direcciones de 32 bits, de manera que
limita el espacio de direcciones virtual a 4 GB.
9
10.-Conclusión
El lenguaje ensamblador fue creado para facilitar al programador la tarea de estar
traduciendo cada número binario etc.
Así como para tareas específicas de requerimientos con un solo propósito y
eficiencia, buscando optimizar cada tarea y espacio de memoria.
La facilidad de hacer mejoras manualmente le da una buena utilización, la
búsqueda de la velocidad y eficiencia dio con el lenguaje ensamblador así como
los compiladores y lenguaje máquina.
10
11.-Bibliografías
https://lignux.com/lenguaje-maquina/
https://es.wikipedia.org/wiki/Lenguaje_de_m%C3%A1quina
https://es.wikipedia.org/wiki/Compilador
https://es.wikipedia.org/wiki/Ensamblador
https://techlandia.com/ventajas-desventajas-compiladores-info_103356/
https://www.monografias.com/trabajos14/leng-ensamblador/leng-ensamblador.shtml
https://sites.google.com/site/principioslenguajeemsanblador/home/aplicaciones-modernas-eimportancia-del-lenguaje-ensamblador
https://www.unioviedo.es/ate/alberto/TEMA3-Ensamblador.pdf
https://www.monografias.com/trabajos76/estructura-programa-ensamblador/estructuraprograma-ensamblador.shtml
https://wilsoneliseo.wordpress.com/2018/04/30/programando-en-ensamblador-con-nasm-ydosbox/#orgc22217f
https://sites.google.com/site/principioslenguajeemsanblador/entornos-graficos-deprogramacion/dosbox
http://www.utm.mx/~jjf/le/TEMA1.pdf
11
Download