5295750-Lenguaje-ensamblador
-
Upload
eduardo-barbosa -
Category
Documents
-
view
216 -
download
0
Transcript of 5295750-Lenguaje-ensamblador
-
8/3/2019 5295750-Lenguaje-ensamblador
1/20
Universidad TecnolgicaIntroduccin a la Programacin
TrabajoLenguaje Ensamblador
Nombre Alumnos: Carlos Pichaud
Jos Gonzlez
Nombre Profesor: Marcelo Soto
Fecha: 25 de Junio del 2008
-
8/3/2019 5295750-Lenguaje-ensamblador
2/20
Lenguaje ensamblador
Este lenguaje fue usado ampliamente en el pasado para el
desarrollo de software, pero actualmente slo se utiliza en
contadas ocasiones, especialmente cuando se requiere la
manipulacin directa del hardware o se pretenden
rendimientos inusuales de los equipos.
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 del Ensamblador
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.
-
8/3/2019 5295750-Lenguaje-ensamblador
3/20
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.
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 lgicase 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 maquina,
-
8/3/2019 5295750-Lenguaje-ensamblador
4/20
programar en este lenguaje lo ms comn que pueda pasar
es que la mquina se bloquee o se reinicialize. 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.
Caractersticas
Programar en lenguaje ensamblador es difcil de
aprender, entender, leer, escribir, depurar y mantener,por eso surgi la necesidad de los lenguajes
compilados.
A pesar de perder rendimiento en un proceso de
compilacin, en la actualidad la mayora de las
computadoras son suficientemente rpidas.
El lenguaje ensamblador no es portable.
Programar en lenguaje ensamblador lleva mucho
tiempo.
Los programas hechos en lenguaje ensamblador son
generalmente ms rpidos. Al programar
cuidadosamente en lenguaje ensamblador se pueden
-
8/3/2019 5295750-Lenguaje-ensamblador
5/20
crear programas de 5 a 10 veces ms rpidos que con
lenguajes de alto nivel.
Los programas hechos en lenguaje ensamblador
generalmente ocupan menos espacio. Un buen
programa en lenguaje ensamblador puede ocupar casi
la mitad de espacio que su contraparte en lenguaje de
alto nivel.
Con el lenguaje ensamblador se pueden crear
segmentos de cdigo imposibles de formar en un
lenguaje de alto nivel.
Ensambladores
Un ensamblador crea cdigo objeto traduciendo
instrucciones mnemnicas a cdigos operativos e
interpretando los nombres simblicos para direcciones de
memoria y otras entidades. El uso de referencias
simblicas es una caracterstica bsica de los
ensambladores, evitando tediosos clculos ydireccionamiento manual despus de cada modificacin del
programa. La mayora de los ensambladores tambin
incluyen facilidades para crear macros, a fin de generar
series de instrucciones cortas que se ejecutan en tiempo
real, en lugar de utilizar subrutinas.
-
8/3/2019 5295750-Lenguaje-ensamblador
6/20
Los ensambladores son por lo general ms fciles de
programar que los compiladores de lenguajes de alto nivel,
y han estado disponibles desde la dcada de 1950. Los
ensambladores modernos, especialmente para
arquitecturas basadas en RISC, como por ejemplo MIPS,
SPARC y PA-RISC optimizan las instrucciones para
explotar al mximo la eficiencia de segmentacindel CPU.
Los ensambladores de alto nivel ofrecen posibilidades de
abstraccin que incluyen:
Control avanzado de estructuras.
Procedimientos de alto nivel, declaracin de
funciones.
Tipos de datos que incluyen estructuras, registros,uniones, clases y conjuntos.
Sofisticado procesamiento de macros.
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 una computadora. Por ejemplo, un procesador
x86 puede ejecutar la siguiente instruccin binaria como se
expresa en cdigo de mquina:
-
8/3/2019 5295750-Lenguaje-ensamblador
7/20
Binario: 10110000 01100001 (Hexadecimal: 0xb061)
La representacin equivalente en lenguaje ensamblador es
ms fcil de recordar:
MOV al, 061h
Esta instruccin significa:
Mueva el valorhexadecimal 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). El opcode es
seguido por una lista de argumentos oparmetros,
completando una instruccin de ensamblador tpica.
La transformacin del lenguaje ensamblador en cdigo
mquina la realiza un programa ensamblador, y la
traduccin inversa la puede efectuar un desensamblador. 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
http://es.wikipedia.org/wiki/Hexadecimalhttp://es.wikipedia.org/wiki/Opcodehttp://es.wikipedia.org/wiki/Hexadecimalhttp://es.wikipedia.org/wiki/Opcode -
8/3/2019 5295750-Lenguaje-ensamblador
8/20
mquina condicional como "si X mayor o igual que" , un
ensamblador puede utilizar una pseudoinstruccin 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 computadoras tiene su propio
lenguaje de mquina, y en consecuencia su propio
lenguaje ensamblador. Los ordenadores 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 las computadoras son capaces de cumplir
esencialmente las mismas funciones, la forma en que lo
hacen difiere y los respectivos lenguajes ensambladores
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 ensamblador. En estos casos, la alternativa ms
popular es la provista por los fabricantes, y usada en los
manuales del programa.
-
8/3/2019 5295750-Lenguaje-ensamblador
9/20
Cdigo mquina (o lenguaje de mquina)
El 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.
Las operaciones disponibles en la mayora de los conjuntos
de instrucciones incluye:
mover
o llenar un registro con un valor constante
o mover datos de una posicin de memoria a un
registro o viceversa
o escribir y leer datos de dispositivos
-
8/3/2019 5295750-Lenguaje-ensamblador
10/20
computar
o sumar, restar, multiplicar o dividir los valores de
dos registros, colocando el resultado en uno de
ellos o en otro registro
o realizar operaciones binarias, incluyendo
operaciones lgicas (AND/OR/XOR/NOT)
o comparar valores entre registros (mayor, menor,
igual)
afectar el flujo del programa
o saltar a otra posicin en el programa y ejecutar
instrucciones all
o saltar si se cumplen ciertas condiciones (IF)
o saltar a otra posicin, pero guardar el punto de
salida para retornar (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
operaciones aritmticas complejas o de punto flotante
(seno, coseno, raz cuadrada )
El nivel de lenguaje ensamblador tiene aspectos
importantes de los niveles de microarquitectura, en los
-
8/3/2019 5295750-Lenguaje-ensamblador
11/20
cuales se encuentra (ISA y sistema operativo) estos dos se
utilizan para la traduccin en lugar de la interpretacin.
Algunas caractersticas del lenguaje se describen a
continuacin Los programas que sirven para traducir algn
programa para el usuario se llama traductores, el lenguaje
en que esta escrito el programa original se llama lenguaje
fuente, el lenguaje original que sea modificado se llama
lenguaje objeto.
Se usa la traduccin cuando se cuenta con un procesador
(ya sea hardware o un interprete) para el lenguaje objeto
pero no para el lenguaje fuente, Si la traduccin se realiza
correctamente, la ejecucin del programa traducido dar
exactamente los mismos resultados que habra dado la
ejecucin del programa fuente. Hay dos diferencias entre
traduccin e interpretacin, en la traduccin no se ejecuta
directamente el programa original, en el lenguaje fuente se
convierte en un programa equivalente llamado programa
objeto o programa binario ejecutable y este funciona solo
cuando se ha acabado la traduccin.
El cdigo mquina, un simple patrn de bits, es hecho
legible reemplazando valores crudos por smbolos
denominados mnemnicos. Se invent para facilitar la
tarea de los primeros programadores que hasta ese
momento tenan que escribir directamente en cdigo
-
8/3/2019 5295750-Lenguaje-ensamblador
12/20
binario. Inicialmente el cdigo de ceros y unos (el
programa) deba introducirse en una tarjeta perforada. La
posicin ocupada por cada punto equivala a un "1" o a un
"0" segn hubiera o no una perforacin. Lo cual supona
una forma casi idntica en la que hoy se escriben los datos
binaros en soportes tales como los CDs y DVDs.
Mientras que una computadora reconoce la instruccin de
mquina IA-32
10110000 01100001
para los programadores de microprocesadores x86 es
mucho ms fcil reconocer dicha instruccin empleando
lenguaje ensamblador :
movb 0x61,%al
(que significa mover el valorhexadecimal 61 (97 decimal) al
registro 'al'.)
Cada instruccin de la mquina se transforma en una nica
instruccin en cdigo simblico.
Pero adems, para mejorar la legibilidad del programa, el
cdigo simblico introduce instrucciones adicionales, que
no corresponden a ninguna instruccin de la mquina y que
proporcionan informacin. Se llaman
"pseudoinstrucciones".
http://es.wikipedia.org/wiki/Hexadecimalhttp://es.wikipedia.org/wiki/Hexadecimal -
8/3/2019 5295750-Lenguaje-ensamblador
13/20
El cdigo simblico puede parecer de difcil acceso, pero
es ms fcil de recordar e interpretar que el binario o el
hexadecimal.
Los lenguajes simblicos no resuelven definitivamente el
problema de cmo programar un ordenador de la manera
ms sencilla posible. Para utilizarlos, hay que conocer a
fondo el microprocesador, los registros de trabajo de que
dispone, la estructura de la memoria, y muchas cosas ms.
Adems, el lenguaje ensamblador est muy ligado al
microprocesador para que sea posible escribir programas
independientes de la mquina en que van a ejecutarse.
Este cdigo simblico no puede ser ejecutado
directamente por un ordenador, por lo que es preciso
traducirlo previamente. Pero la traduccin es un proceso
mecnico y repetitivo, que se presta a su realizacin por un
programa de ordenador.
Los programas que traducen cdigo simblico al lenguaje
de mquina se llaman ensambladores ("assembler", en
ingls), porque son capaces de ensamblar el programa
traducido a partir de varias piezas, procedimientos o
subrutinas a cdigo binario ("1" y "0") que entiende el
procesador.
http://es.wikipedia.org/wiki/Hexadecimalhttp://es.wikipedia.org/wiki/Hexadecimal -
8/3/2019 5295750-Lenguaje-ensamblador
14/20
Relacin entre el cdigo binario y el lenguaje
ensamblador
En el cdigo binario se utilizan ceros y unos, mientras queel 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 mas 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
-
8/3/2019 5295750-Lenguaje-ensamblador
15/20
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 elprograma. 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
-
8/3/2019 5295750-Lenguaje-ensamblador
16/20
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.
Ejemplos de lenguaje ensamblador
Ejemplo 1
El siguiente es un ejemplo del programa clsico Hola
mundo escrito para la arquitectura de procesador x86 (bajo
el sistema operativo DOS).
.model small
.stack
.data
Cadena1 DB 'Hola Mundo.$'
.code
-
8/3/2019 5295750-Lenguaje-ensamblador
17/20
programa:
mov ax, @data
mov ds, ax
mov dx, offset Cadena1
mov ah, 9
int 21h
end programa
Ejemplo 2
Una seleccin de instrucciones para una computadora
virtual) con las correspondientes direcciones de memoria
en las que se ubicarn las instrucciones. Estas direccionesNO son estticas. Cada instruccin se acompaa del
cdigo ensamblador generado (cdigo objeto) que coincide
con la arquitectura de computador virtual, o conjunto de
instrucciones ISA.
-
8/3/2019 5295750-Lenguaje-ensamblador
18/20
Conclusin
Dir. Etiqueta Instruccin Cdigo objeto
.begin
.org 2048
a_start .equ 3000
2048 ld length,%
2064 be done00000010 1000000000000000 00000110
2068 addcc %r1,-4,%r1
10000010 10000000
01111111 11111100
2072 addcc %r1,%r2,%r410001000 1000000001000000 00000010
2076 ld %r4,%r511001010 0000000100000000 00000000
2080 ba loop00010000 10111111
11111111 11111011
2084 addcc %r3,%r5,%r310000110 1000000011000000 00000101
2088 done: jmpl %r15+4,%r010000001 1100001111100000 00000100
2092 length: 2000000000 0000000000000000 00010100
2096 address: a_start00000000 0000000000001011 10111000
.org a_start
3000 a:
-
8/3/2019 5295750-Lenguaje-ensamblador
19/20
El lenguaje ensambladores un tipo de lenguaje de bajo
nivel utilizado para escribir programas informticos, y
constituye la representacin ms directa del cdigo
mquina especfico para cada arquitectura de
computadoras legible por un programador.
Introduccin
-
8/3/2019 5295750-Lenguaje-ensamblador
20/20
En este trabajo se dar a conocer en que consiste el
sistema ensamblador sus ventajas y desventajas sus
caractersticas y la importancia de este.