You are on page 1of 15

INSTITUTO TECNOLGICO DE TAPACHULA

MAYRA YAZMIN LOPEZ ROSALES



ALUMNO:
CORTES FLORES SAMUEL


MATERIA:
LENGUAJE DE INTERFAZ

TAREA:
INVESTIGACION

SEMESTRE:
6

GRUPO:
A


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 l 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
1.- 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.

2.- 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

3.- 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
limitante 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.

Relacin entre el cdigo 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.

Caractersticas
El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de
ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje
de bajo nivel.
El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un
microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina
distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario
reescribirlo completamente.
Los programas hechos por un programador experto en lenguaje ensamblador son
generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM
y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. 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 y/o muy
ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el
lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn
disponibles en los lenguajes de alto nivel.
Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que
se interrumpa durante su ejecucin.

Lenguaje
El lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en lenguaje de
mquina de la CPU, y pueden ser muy diferentes de una arquitectura de CPU a otra.
Cada arquitectura de microprocesador tiene su propio lenguaje de mquina, y en consecuencia su
propio lenguaje ensamblador ya que este se encuentra muy ligado a 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.

DISEO DE LENGUAJE
Elementos bsicos
Hay un grado grande de diversidad en la manera en que los autores de los ensambladores
categorizan las sentencias y en la nomenclatura que usan. En particular, algunos describen
cualquier cosa como pseudo-operacin (pseudo-Op), con excepcin del mnemnico de mquina o
del mnemnico extendido.
Un tpico lenguaje ensamblador consiste en 3 tipos de sentencias de instruccin que son usadas
para definir las operaciones del programa:
Mnemnicos de opcode
Secciones de datos
Directivas de ensamblador


EL PROCESADOR Y SUS REGISTROS INTERNOS
Definicin de registros:
Un registro es una memoria de alta velocidad y poca capacidad, integrada en el microprocesador,
que permite guardar transitoriamente y acceder a valores muy usados, generalmente en operaciones
matemticas.
Funcin de los registros:
Los registros estn en la cumbre de la jerarqua de memoria, y son la manera ms rpida que tiene
el sistema de almacenar datos. Los registros se miden generalmente por el nmero de bits que
almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits.
La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta
velocidad llamada registro. Algunos de los registros estn dedicados al control, y solo la unidad de
control tiene acceso a ellos. Los registros restantes son los registros de uso general y el
programador es el usuario que tiene acceso a ellos.
Algunos registros bsicos:
Dentro del conjunto bsico de registros de control se deben incluir a los siguientes:
A. Contador de programa (PC).
B. Registro de direcciones de la memoria (MAR).
C. Registro de datos (RD).
D. Registro de instrucciones (IR).
E. Palabra de estado de programa (PSW).
LA MEMORIA PRINCIPAL

Para su funcionamiento el computador requiere de la memoria principal o RAM (Random Access
Memory), que es el espacio lgico a donde se almacenan las instrucciones o datos que el
microprocesador debe ejecutar o procesar. Esta memoria es temporal, pues existe slo mientras el
sistema est en encendido y su contenido vara de acuerdo a la aplicacin o aplicaciones que se
estn ejecutando. La memoria principal se divide en Memoria Base o Convencional, Memoria alta y
Memoria Extendida.
La memoria convencional o base ocupa los primeros 640K , es decir de 0 hasta 640K. Su tamao
siempre es el mismo independientemente de la cantidad de memoria fsica que tenga el computador.
En esta se localizan las direcciones E/S (Entrada/Salida) de todos los dispositivos que se encuentren
configurados en el sistema y se carga el sistema operativo D.O.S.
La memoria alta reside entre 640K y los 1.024K. Los diseadores de la primera PC decidieron
reservar sta para los buffers de video, el BIOS-ROM del sistema y la memoria de los adaptadores.
Aunque una parte de este espacio no se utiliza en las computadores y para utilizarlo como memoria
principal para datos y programas se requiere de un administrador de memoria que recupera ese
espacio perdido y convierte las reas no usadas en regiones de memoria utilizable llamados bloque
de memoria alta (UMB).
La memoria extendida comienza en 1MB (1.024K) y contina hasta el tope de la memoria fsica
presente en el sistema.
La memoria expandida est fuera del espacio normal de direcciones del microprocesador y para
accesarla hay que usar un programa especial llamado administrador de memoria expandida (EMM)
El EMM (Expanded Memory Manager) divide la memoria expandida en una serie de unidades de
16K llamadas pginas. Tambin separa 64K de espacio de direcciones sin usar en el rea de la
memoria alta para que sirvan como un marco de pgina EMS (Enhanced Memory Especification), un
estndar de la industria promulgado a mediado de los 80s por las compaas Lotus, Intel y
Microsoft, tambin conocido como LIM. Una pgina de EMS que est mapificada al marco de
pgina, puede leerse y escribirse como si fuera parte de la memoria instalada en la tarjeta del
sistema.
Los administradores de memoria vienen en dos variedades. La ms comn es la del modo virtual
86 del chip 80386 una propiedad de ste llamada paginacin para crear UMBs. La paginacin es
un mtodo por el cual el procesador puede engaar a un programa para que ste crea que est
teniendo acceso a una localizacin en memoria, cuando en realidad est teniendo acceso a otra.
Los administradores de memoria en modo real, que estn diseados para que corran en
computadoras con microprocesadores 8086, 8088 y 80286 tienen otra estrategia para crear EMS
UMBs. Si hay memoria expandida EMS instalada, el administrador crear los UMBs mapificando
pginas de memoria EMS a las reas sin usar de la memoria alta. Si la PC no contiene memoria
expandida pero se construy con uno de los juegos populares de chips que apoyan la copia de ROM
a RAM con remapificacin, el administrador de memoria explotar esta habilidad para mapificar los
bloques de memoria extendida a la memoria superior.
Los administradores de memoria de modo virtual, ofrecen servicios que los otros no pueden. Por
ejemplo, la mayora de los administradores de memoria de modo virtual dejan convertir la memoria
extendida a memoria expandida EMS 4.0, y tambin transferir cdigo de la ROM a la RAM,
aumentando el rendimiento del sistema. Sin embargo la ejecucin del programa en modo virtual 86
es ms lenta que en el modo real, especialmente para programas con uso intenso de clculos que
usan ciertas tcnicas de emulacin para la aritmtica de punto flotante cuando no se tiene un
coprocesador.
La memoria Expandida surgi como una solucin para poder ampliar la RAM en los sistemas viejos
tales como 8080, 8088, 286, etc. a los cuales no se les poda agregar ms chips de memoria. La
memoria expandida se colocaba insertando una tarjeta de expansin. En los sistemas actuales no se
requiere de esta tcnica sin embargo existen manejadores que la emulan con el fin de que puedan
correr aplicaciones diseadas para este tipo de memoria.
De acuerdo a su presentacin fsica la memoria se puede clasificar en los siguientes tipos:

El tiempo de acceso es lo que demora en leerse alguna direccin de la memoria, por lo tanto entre
menor sea el valor, mayor es la velocidad de lectura. Una memoria rpida puede trabajar bien en un
equipo lento pero un equipo rpido con una memoria lenta puede presentar fallas. Anteriormente
algunas marcas de computadoras requeran de memoria con paridad es decir con un chip adicional
para la correccin de errores, es por ello que a muchos computadores de marca era muy difcil la
ampliacin de la RAM.
En la actualidad se existen otras clasificaciones de la memoria tales como EDO (Enhanced Data
Output), BEDO (Burst EDO), ASDRAM (Asincronous Dinamic RAM) y SDRAM (Sincronous Dinamic
RAM) con el fin de obtener un mejor aprovechamiento de las nuevas tecnologas en
microprocesadores, tales como MMX y Pentium II.

CONCEPTO DE INTERRUPCIONES

Interrupciones por software: Son aquellas programadas por el usuario, es decir, el usuario decide
cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida.

Interrupciones por hardware: Son aquellas que son provocadas por dispositivos externos al
procesador su caracterstica principal es que no son programadas.
Interrupciones por hardware enmascarables: Aquellas en las que el usuario decide si quiere o no ser
interrumpido.
Interrupciones por hardware no enmascarables (NMI): Aquellas que siempre interrumpen al
programa.
Finalizar la ejecucin de la instruccin en curso.
Almacenar en la pila el registro de estado.
Almacenar en la pila la direccin de retorno: registros CS e IP.
Inhibir las interrupciones.
La captura de una interrupcin consiste bsicamente en sustituir su entrada correspondiente de la
tabla de vectores de interrupcin por la direccin de una rutina propia, esto es, sustituiremos el
segmento y el offset de la rutina original por nuestro segmento de cdigo (registro CS) y el offset.

CLI; Inhabilita la interrupcin
MOV AX, 0000H
MOV ES, AX
MOV ES:[09h*4], OFFSET nuestra_rutina
MOV ES:[09h*4+2], CS
STI; La vuelve a habilitar

Interrupcin de pulsacin de teclado
nuestra_rutina PROC
;guardar registros en la pila
...
;recuperar registros de la pila
IRET
ENDP
Una interrupcin es el rompimiento en la secuencia de un programa para ejecutar un programa
especial llamando una rutina de servicio cuya caracterstica principal es que al finalizar regresa al
punto donde se interrumpi el programa.
Qu es una interrupcin?
Cuando se produce una peticin de interrupcin, se desencadena una secuencia de acciones.

Tratamiento de interrupciones
Ejemplo de interrupciones
"Funcin" o Rutina
Captura de interrupciones
Tipos de interrupciones
Interrupciones por Hardware
Las interrupciones por software se ejecutan con ayuda de las instrucciones: INT e IRET, adems se
tiene 256 interrupciones. Asociado al concepto de interrupcin se tiene un rea de memoria llamada
vector de interrupciones; la cual contiene las direcciones de las rutinas de servicio de cada
interrupcin. Esta rea se encuentra en el segmento 0000:0000
Ejemplos de interrupciones:

int 00H-->divisin entre cero
int 01h-->un solo paso
int 02h-->interrupcin no enmascarable
int 03h--> punto de interrupcin
int 04h-->desbordamiento
int 05h-->impresin de pantalla
int 08h-->Cronometro
int 09h-->interrupcin desde el teclado
int 0Bh-->Control del puerto Com1
int 0Ch-->Control del puerto Com2
int 0Dh-->Control de dispositivos en paralelo
int 0EH-->Control de disco flexible
Sintaxis:
OFFSET nombre_rutina
LLAMADAS AL SERVICIO DEL SISTEMA
Una llamada al sistema es cuando un programa llama a un servicio del Kernel del sistema operativo.
Generalmente estos servicios se encuentran disponibles como instrucciones de lenguaje
ensamblador pero algunas veces tambin pueden llamarse (sin tener conocimiento de ello) desde
lenguajes de alto nivel.

Kernel o ncleo
Este se considera el principal componente de los sistemas operativos sirve de interfaz entre
aplicaciones y el proceso de los datos de bajo nivel hecho por el hardware del equipo. Entre sus
funciones est administrar los recursos del sistema como memoria, uso de CPU por las aplicaciones
o acceso a interfaces de entrada y salida del equipo.

Ejemplos de esto son:
Exit: Para terminar la ejecucin de un programa.
Fork: Para crear hilos de ejecucin.
Time: Para ver la hora actual.
Open: Para abrir archivos
Close: para cerrar archivos
Como puede observarse estas son funciones muy utilizadas en cualquier lenguaje de programacin
pero sin darnos cuenta estas son administradas por el ncleo del sistema operativo.

Llamadas al sistema en Linux

Conceptos tiles:

El espacio kernel: En este espacio residen todas las subrutinas que forman parte del kernel tales
como mdulos o drivers y cualquier otra que tenga que ver con la interfaz kernel.

El espacio de usuario: En este espacio se encuentran los programas que utiliza el usuario final,
tales como shell y cualquiera de los programas que he estado programando de ejemplos en
ensamblador.




Existen diferentes implementaciones en el mundo Linux en los procesadores x86 ms antiguos se
utilizaban interrupciones para migrar de un espacio de usuario a un espacio Kernel ( lo cual es un
objetivo intermedio de las llamadas al sistema).

En Linux en las llamadas al sistema se utiliza el registro "%eax" para identificar la llamada al sistema
que se quiere invocar, la cual se especifica en una biblioteca de Ansi C. Para empezar la llamada al
sistema se invoca al vector de interrupcin de Linux (0x80) que contiene las direcciones de memoria
de los controladores de interrupciones. Cuando una llamada al sistema es generada, el sistema
operativo salva el estado de ejecucin del proceso y empieza la ejecucin del controlador de
llamadas al sistema en el vector de interrupciones.

Una vez esto el controla de llamadas al sistema provoca la ejecucin de la funcin "system_call",
esta funcin controla todas las llamadas al sistema, y toma como parmetro el valor contenido en el
registro %eax para identificar la llamada en especfico. Una vez realizadas una serio de
verificaciones se invoca la llamada real al sistema utilizando la funcin "system_call_table" y el indice
en "%eax". Una vez que el kernel termina su ejecucin invoca a la funcin "system_call_exit" y se
llama a las transiciones de resumen "resume_userspace" nuevamente para regresar al espacio de
usuario para regresar a la aplicacin del usuario.




MODOS DE DIRECCIONAMIENTO
La memoria de acceso aleatorio, o RAM, es la memoria principal de una computadora. Las
aplicaciones son cargadas y ejecutadas en la memoria RAM. Los modos de direccionamiento
asignan memoria RAM en porciones que pueden ser referenciadas individualmente para que la
unidad central de procesamiento, o CPU, pueda determinar qu ubicacin de memoria est siendo
utilizada por una instruccin de la mquina.

Modo de direccionamiento inmediato
El modo inmediato es la forma ms simple de direccionamiento. El operando es parte de la
instruccin y, por lo tanto, ninguna referencia de memoria, distinta de la instruccin, es requerida
para recuperar el operando. Este modo es rpido y se puede utilizar para definir constantes o
establecer valores de variables iniciales. Este modo tiene un alcance limitado, ya que es limitado al
tamao del campo de direccin, que para la mayora de los conjuntos de instrucciones es pequeo
en comparacin con la longitud de palabra.

Modo de direccionamiento directo
En el modo directo, el campo de direccin contiene la direccin del operando. Se requiere una nica
referencia de memoria para leer el operando de la localizacin dada. Sin embargo, slo proporciona
un espacio de direcciones limitado.

Modo de direccionamiento indirecto
En el modo indirecto, la celda de memoria a la que apunta el campo de direccin contiene la
direccin del operando (puntero), que a su vez contiene la direccin de longitud completa del
operando. Este modo tiene un espacio de direcciones grande, a diferencia del direccionamiento
inmediata y el directo, pero debido a que se requieren mltiples accesos de memoria para encontrar
el operando es ms lento.
Modo de direccionamiento de registro
El modo de registro es similar al modo directo. La diferencia clave entre los dos modos es que el
campo de direccin de la instruccin se refiere a un registro en lugar de una posicin de memoria. El
direccionamiento de registro no tiene una direccin eficaz. Tres o cuatro bits son utilizados como
campo de direccin para hacer referencia a los registros.

Modo de direccionamiento indirecto de registro
Este modo es similar al direccionamiento indirecto. El operando se encuentra en una celda de
memoria apuntada por contenido de un registro. El registro contiene la direccin efectiva del
operando. Este modo utiliza menos acceso de memoria que el direccionamiento indirecto. Este
modo tiene un espacio de direcciones grande, pero es limitado al ancho de los registros disponibles
para almacenar la direccin efectiva.

Modo de direccionamiento de desplazamiento
El modo de desplazamiento consiste en tres variaciones: 1) Direccionamiento relativo 2)
Direccionamiento de registro base 3) Direccionamiento de ndice Este modo puede considerarse una
combinacin del modo de direccionamiento indirecto y de registro. La direccin tiene dos valores: el
valor base y un registro que contiene un desplazamiento entero que es sumado o restado de la base
para formar la direccin efectiva de la memoria.

Modo de direccionamiento de pila
El modo de pila, tambin conocido como direccionamiento implcita, consiste en un conjunto lineal de
ubicaciones referidos al ltimo que entra y primero en salir. El operando est en la parte superior de
la pila. El puntero de la pila es un registro que almacena la direccin de la parte superior de la
ubicacin de la pila.

PROCESO DE ENSAMBLADO Y LIGADO
1. El programa utiliza un editor de texto para crear un archivo de texto ASCII, conocido como
archivo de cdigo fuente.
2. El ensamblador lee el archivo de cdigo fuete y produce un archivo de cdigo objeto, una
traduccin del programa a lenguaje mquina. De manera opcional, produce un archivo de listado. Si
ocurre un error, el programador debe regresar al paso 1 y corregir el programa.
3. El enlazador lee el archivo de cdigo objeto y verifica si el programa contiene alguna llamada a los
procedimientos en una biblioteca de enlace. El enlazador copia cualquier procedimiento requerido de
la biblioteca de enlace, lo combina con el archivo de cdigo objeto y produce el archivo ejecutable.
De manera opcional, el enlazador puede producir un archivo de mapa.
4. La herramienta cargador (loader) del sistema operativo lee el archivo ejecutable y lo carga en
memoria, y bifurca la CPU hacia la direccin inicial del programa, para que ste empiece a
ejecutarse.

DESPLEGADO DE MENSAJES EN EL MONITOR
Todos los grficos y el texto que se muestran en el monitor se escriben en la RAM de visualizacin
de video, para despus enviarlos al monitor mediante el controlador de video. El controlador de
video es en s un microprocesador de propsito especial, que libera a la CPU principal del trabajo de
controlar el hardware de video.
Un monitor de pantalla de cristal lquido (LCD) digital directo recibe un flujo de bits digitales
directamente desde el controlador de video, y no requiere del barrido de trama.