LENGUAJE ENSAMBLADOR

Share Embed Donate


Short Description

CONCEPTOS DEL LENGUAJE ENSAMBLADOR...

Description

LENGUAJE ENSAMBLADOR  UNIDAD 1

ENSAMBLADOR  Es un lenguaje de programac programación ión de bajo nivel para los computadores, microprocesadores, microcontroladores microcontrolad ores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programado programadorr

 Alto nivel

Cobol Pascal Basic Java

Mediano nivel

C BCPL

Bajo nivel

Maquina

Ensamblador

001110011010100

LENGUAJES DE BAJO NIVEL Los lenguajes de bajo nivel son mas fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador.

Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos.

Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en español, SUM, RES, DIV,etc. Una instrucción típica de suma sería:  ADD M, N, P Esta instrucción podría significar  “sumar el número contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P” . Evidentemente es mucho más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina” .

0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador puede ser ejecutado directamente por computadora en esto se diferencia esencialmente lenguaje máquina, sino que requiere una fase traducción al lenguaje máquina.

no la del de

El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, ya directamente entendible por la computadora.

El traductor de programas fuente a objeto es un programa llamado ensamblador, existente en casi todos los computadores.

Ventajas del lenguaje ensamblador . Los lenguajes ensambladores presentan la ventaja frente a los lenguajes máquina de su mayor facilidad de codificación y, en general, su velocidad de cálculo. La segunda razón es el control total de la PC que se tiene con el uso del mismo. El ensamblador permite una optimización ideal en los programas tanto en su tamaño como en su ejecución.

Desventajas del lenguaje ensamblador . Dependencia total de la máquina lo que impide la transportabilidad de los programas. El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple Macintosh. La formación de los programadores es más compleja que la correspondiente a los programadores de alto nivel, ya que no sólo las técnicas de programación, sino también el conocimiento del interior de la máquina.

ESCALABILIDAD Es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para extender el margen de operaciones sin perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida.

MICROPROCESADOR  El microprocesador o simplemente procesador, es el circuito integrado central y más complejo de una computadora El procesador es un circuito integrado constituido por millones de componentes electrónicos integrados.

Su arquitectura interna consta de las siguientes partes Unidad de control Unidad Aritmética lógica Registros Internos Buses internos Interrupciones 

 Arquitectura Interna del microprocesador

Secuencia de acciones 1.Se

inicia en una posición de memoria definida 2.Se lee el dato de esa posición y se manda al control 3.La unidad de control decodifica la instrucción y la ejecuta en señales adecuadas 4.Se incrementa el contador del programa (registro que indica a que posición se debe dirigir) 5.Se repite proceso desde el punto 2, hasta recibir unas señal del exterior

Arquitectura del microprocesador

ALU Circuito digital que realiza operaciones aritméticas y lógicas

Unidad de control Cerebro del microprocesador, genera señales de control interno y externo. Recibe códigos los cuales decodifica y ejecuta. Los códigos pueden ser: 1.Operaciones aritmético lógicas 2.Cargar o leer datos 3.Saltos o interrupciones

Registros internos Posiciones de memoria con utilidad general o especifica. Tipos: 1.Registros de datos: operaciones aritméticas lógicas y manipulación de datos 2.Registros de Direcciones : para acceder a posiciones de memoria - Contador de programa: leer o escribir datos de programa - Puntero de pila: Recuperar y guardar datos de uso interno - índices: para acceder a posiciones de memoria en forma relativa 3. Registro de estado: para información especifica

Interrupciones Utilizadas para interrumpir la secuencia del programa.

Buses Internos Caminos de comunicación que conectan dos o mas dispositivos o acceden a diferentes partes del circuito 1. Bus de dirección: selecciona posición de memoria para leer o escribir datos 2. Bus de datos: transmitir datos El microprocesador se dividen por el numero de bits que conforman el dato 4, 8 , 16, 32, 46 bits

Buses Internos 3. Bus de control: para sincronizar actividades y transacciones con los periféricos del sistema

CLASIFICACION DEL MICROPROCESADOR  Una forma es en función de las instrucciones que son capaces de ejecutar. Microprocesadores con tecnología CISC y RISC CISC (Complex Instructions Set Computer): Interpreta y ejecuta un gran numero de instrucciones, lo cual los hace lentos RISC ( Reduced Instructios Set Computer): Interpreta y ejecuta solo instrucciones reducidas, son mas rápidos que los CISC

Von Neumann Es una de las arquitecturas mas primitivas, cuando se invento los programas eran muy pequeños y los costos de memoria eran muy altos. En esta estructura, tanto datos como programa son guardados en la misma memoria y accesados en el mismo bus. Cada instrucción es leída de memoria, decodificada y ejecutada.

Von Neumann Durante el estado de decodificación algunos operadores son leídos de la misma memoria.

Las computadoras Von Neumann son llamadas también computadoras de almacenamiento de programas, porque los programas son guardados en ROM, la cual no se cambia durante el tiempo de ejecución.

Von Neumann

Arquitectura Harvard Esta es una modificación de la arquitectura Von Neumann, en esta arquitectura se separa la salida (direcciones y bus de datos) de datos para accesar al código (programa) y datos (operadores). Esto hace posible leer datos e instrucciones al mismo tiempo (en diferentes buses) Desde que las instrucciones tienen un bus de datos separados, la siguiente instrucción puede ser leída mientras se decodifica y ejecutan las instrucciones actuales

Derivados de la arquitectura Harvard Existen algunos derivados de la arquitectura Harvard, las cuales tienen múltiples buses de datos para accesar datos, tales arquitecturas son mas aplicadas para aplicaciones intensivas de datos (como procesos de señales digitales) las cuales requieren múltiples operadores de datos para la ejecución de cada instrucción. Desde que estos operadores son leídos en paralelo se logro una gran mejora en ejecución.

Complex Instruction Set Computer (CISC) En los inicios de la computación, se codificaba en código ensamblador o maquina. Para hacer rápida y fácil la programación las computadoras soportaban un gran numero de instrucciones. Estas instrucciones podían hacer operaciones complejas, una sola instrucción podía leer uno o mas operadores y hacer una o mas operaciones con esos operadores.

Complex Instruction Set Computer (CISC) Esto hacia la programación fácil y con menos código. Otro factor favorable fue el costo de memoria, las memorias eran costosas, por lo que los diseñadores hacían juegos de instrucciones densos

Reduced Instruction Set (RISC) Es un tipo de microprocesador con las siguientes características fundamentales: Instrucciones de tamaño fijo y presentadas en un reducido número de formatos. Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos.

Reduced Instruction Set (RISC)  Además estos procesadores suelen disponer de muchos registros de propósito general. El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Esta surge con los lenguajes de alto nivel

Procesador digital de señal Es un sistema basado en un procesador que posee un juego de instrucciones, un hardware y un software optimizados para aplicaciones que requieran operaciones numéricas a muy alta velocidad. Debido a esto es especialmente útil para el procesado y representación de señales analógicas en tiempo real: en un sistema que trabaje de esta forma (tiempo real) se reciben muestras normalmente provenientes de un conversor analógico/digital (ADC).

Características: Necesita una memoria donde almacenar los datos con los que trabajará y el programa que ejecuta Puede trabajar con varios datos en paralelo y un diseño e instrucciones específicas para el procesado digital.

VLIW PROCESADOR  Very Long Instruction Word . Esta arquitectura de

CPU implementa una forma de paralelismo a nivel de instrucción. Es similar a las arquitecturas superescalares, ambas usan varias unidades funcionales (por ejemplo varias ALUs, varios multiplicadores, etc) para lograr ese paralelismo.

Los procesadores con arquitecturas VLIW se caracterizan, como su nombre indica, por tener  juegos de instrucciones muy simples en cuanto a número de instrucciones diferentes, pero muy grandes en cuanto al tamaño de cada instrucción.

 Ventajas

Simplificación de la arquitectura hardware al no tener que planificar el código. Menor potencia y consumo. 

Inconvenientes

Requiere compiladores mucho más complejos. mejora en la arquitectura hardware Cualquier implica un cambio en el juego de instrucciones (compatibilidad hacia atrás nula). 

SMID S ingle I nstruction, M ultiple D ata  es una técnica empleada para

conseguir paralelismo a nivel de datos. SIMD consisten en instrucciones que aplican una misma operación sobre un conjunto más o menos grande de datos. Es una organización que influye muchas unidades de procesamiento bajo la supervisión de una unidad de control común. Todos los procesadores reciben la misma instrucción de la unidad de control, pero operan sobre diferentes conjuntos de datos. Es decir la misma instrucción es ejecutada de manera síncrona por todas las unidades de procesamiento.

MULTICORE-PROCESADOR   A multi-core processor Es un componente de computadora con dos o mas procesadoresindependientes (called "cores"), los cuales son unidades que leen y ejecutan isntrucciones de programas. Los datos en la instruccion le dicen al procesador que hacer. Las instrucciones hacen cosas muy basicas como leer datos de meoria o mandar datos a un display, pero son procesados rapidamente.

PROCESADOR STREAM

El procesador STREAM, acrónimo de Sistema de Tiempo Real para la Extracción y Análisis de Movimiento, es una arquitectura de procesamiento de imágenes implementada en una tarjeta PCI

Desde el punto de vista funcional es, básicamente, el encargado de realizar toda operación aritméticológica, de control y de comunicación con el resto de los componentes integrados que conforman un PC, siguiendo el modelo base de Von Neumann. También es el principal encargado de ejecutar los programas, sean de usuario o de sistema; sólo ejecuta instrucciones programadas a muy bajo nivel, realizando operaciones elementales, básicamente, las aritméticas y lógicas, tales como sumar, restar, multiplicar, dividir, las lógicas binaris y accesos a memoria.

Esta unidad central de procesamiento constituida, esencialmente:  por registros,  una unidad de control  y una unidad aritmético lógica (  ALU )

está

TIPOS DE ENSAMBLADORES Aunque todos los ensambladores realizan básicamente las mismas tareas, podemos clasificarlos de acuerdo a características. Así podemos clasificarlos en:

-Ensambladores Cruzados (Cross-Assembler). - Ensambladores Residentes. - Macroensambladores. - Micro ensambladores. - Ensambladores de una fase. - Ensambladores de dos fases.

Ensambladores Cruzados (Cross-Assembler). Se denominan así los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrán las computadoras donde va a ejecutarse el programa objeto producido. El empleo de este tipo de traductores permite aprovechar el soporte de medios físicos (discos, impresoras, pantallas, etc.), y de programación que ofrecen las máquinas potentes para desarrollar programas que luego los van a ejecutar sistemas muy especializados en determinados tipos de tareas.

Ensambladores Residentes. Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecución, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar a otro, como se hacía en crossassembler, y sin necesidad de programas simuladores. Sin embargo, puede presentar problemas de espacio de memoria, ya que el traductor ocupa espacio que no puede ser utilizado por el programador. Asimismo, también ocupará memoria el programa fuente y el programa objeto. Esto obliga a tener un espacio de memoria relativamente amplio. Es el indicado para desarrollos de pequeños sistemas de control y sencillos automatismo empleando microprocesadores

MACROENSAMBLADORES.

Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto. Puede variar la complejidad de los mismos, dependiendo de las posibilidades de definición y manipulación de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladores residentes.

MICRO ENSAMBLADORES.

Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intérprete de las mismas interpretaba de igual forma un determinado código de operación. El programa que indica al intérprete de instrucciones de la UCP cómo debe actuar se denomina microprograma. El programa que ayuda a realizar este microprograma se llama micro ensamblador. Existen procesadores que permiten la modificación de sus microprogramas, para lo cual se utilizan micro ensambladores.

ENSAMBLADORES DE UNA FASE.

Estos ensambladores leen una línea del programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina o la ejecuta si se trata de una pseudoinstrucción. También va construyendo la tabla de símbolos a medida que van apareciendo las definiciones de variables, etiquetas, etc. Debido a su forma de traducción, estos ensambladores obligan a definir los símbolos antes de ser empleados para que, cuando aparezca una referencia a un determinado símbolo en una instrucción, se conozca la dirección de dicho símbolo y se pueda traducir de forma correcta. Estos ensambladores son sencillos, baratos y ocupan poco espacio, pero tiene el inconveniente indicado

Los microprocesadores poseen dos tipos de memoria interna: Memoria RAM (memoria de acceso aleatoria) Memoria ROM (memoria de solo lectura) 

Los bytes en memoria se numeran de forma consecutiva, iniciando con 00, de modo que cada localidad tiene un un numero de direccion unico.

64 k sistema base ROM Inicio Dec 960 k

Direccion Hex F0000

1924 k area de expansion De memoria (ROM) 128 k area de despliegue de video (RAM) 640 k memoria (RAM)

CLASIFICACION DE MEMORIAS.

Las memorias se clasifican, por la tecnología empleada y según la forma en la que se puede modificar su contenido. Las cuales son: Memoria RAM (memoria de acceso aleatorio) Memoria ROM (memoria de solo lectura)

CLASIFICACION DE MEMORIA RAM

EDO RAM. (Memoria de acceso aleatorio con salida de datos extendida). DRAM. (Memoria dinámica de acceso aleatorio).

RAM

SDRAM. (Memoria dinámica de paginación de acceso aleatorio). RDRAM. (Memoria dinámica de acceso aleatorio para tecnologías rambus). SRAM. (Memoria estática de acceso aleatorio.

CLASIFICACION DE MEMORIA ROM

PROM. (Memoria programable de solo lectura).

ROM

EPROM. (Memoria de solo lectura programable y borrable). EEPROM. (Memoria de solo lectura programable y borrable eléctricamente). Memoria flash.

SEGMENTOS Y  DIRECCIONAMIENTO

El procesador se divide en dos unidades lógicas : Unidad de ejecución (EU) Unidad de interfaz del bus (BIU) 

El papel de la EU es ejecutar instrucciones, contiene el ALU, CU y varios registros

El BIU envía instrucciones y datos a la EU. La función mas importante del BIU es manejar la unidad de control del bus, los registros de segmentos, y la cola de instrucciones. La BIU controla los buses que transfieren los datos a la EU, a la memoria y a los dispositivos de E/S externos, mientras que los registros de segmentos controlan el direccionamiento de memoria

El BIU permite acceso a las instrucciones, puede acceder a estas desde la memoria y colocarlas en la cola de instrucciones. Tamaño de la cola de 4 a 32 bytes |La EU y la BIU trabajan en paralelo, La EU notifica al BIU cuando necesita acceso a los datos en memoria o a dispositivos de E/S

La EU solicita instrucciones de maquina de la cola de instrucciones de la BIU Mientras la EU esta ocupada ejecutando una instrucción el BIU busca otra en la memoria, esto aumenta la velocidad de procesamiento.

Un segmento es un área especial en un programa que inicia en un limite de una localidad regularmente divisible entre 16 o 10 hex. Un segmento, puede estar ubicado casi en cualquier lugar y puede ser hasta de 64 K. Se puede tener cualquier numero de segmentos, para direccionar un segmento en particular basta cambiar la dirección en el registro del segmento apropiado.

Los tres segmentos principales son: Segmentos de código Segmentos de datos Segmentos de pila 

Segmentos de código (CS) Contiene instrucciones ejecutadas.

de

maquina

que

son

Comúnmente la primera instrucción ejecutable esta en el inicio del segmento, el SO enlaza a esa localidad para iniciar la ejecución del programa.

Segmento de datos (DS) Contiene datos, constantes y áreas de trabajo definidos por el programa El registro del DS direcciona al segmento de datos

Segmento de pila (SS) La pila contiene los datos y direcciones que se necesitan guardar temporalmente o para el uso de sus llamadas subrutinas. El registro del segmento de la pila (SS) direcciona el segmento de la pila.

Los registros de segmentos contienen la dirección inicial de cada segmento

REGISTROS

Los registros del procesador se emplean para controlar las instrucciones en ejecucion, manejar direccionamiento, y proporcionar capacidad aritmetica. Son direccionables por medio de un nombre, los bits se numeran de derecha a izquierda

REGISTRO DE SEGMENTO Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para el direccionamiento conocida como el segmento actual.

REGISTRO CS Registro CS El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS

REGISTRO DS La dirección inicial de un segmento de programa es almacenada en el registro DS

REGSITRO SS El registro SS permite la colocación en memoria de una pila para almacenamiento temporal de direcciones y datos.

REGISTRO ES  Algunas operaciones con cadenas de caracteres utilizan registro extra de segmento para manejar el direccionamiento de memoria. Un registro ES esta asociado con un registro DI (indice)

REGISTRO FS y GS Son registros extras de segmento procesadores 80386 y posteriores.

en

los

REGISTRO DE APUNTADOR DE DIRECCIONES El registro apuntador de instrucciones (IP) contiene el desplazamiento de direcciones de la siguiente dirección que se ejecuta.

REGISTROS APUNTADORES Los registros apuntador de pila (SP) y BP (apuntador base) están asociados con el registro SS y permiten al sistema acceder a datos de la pila

REGISTRO BP Facilita la referencia de parámetros los cuales son datos y direcciones transmitidos vía pila

REGISTROS DE PROPOSITO GENERAL Los registros de propósito general AX, BX, CX, y DX, con caballos de batalla del sistema, en el sentido que se puede direccionar como una palabra o como una parte de un byte. La parte izquierda es la parte alta La parte derecha es la parte baja 

Registro AX Es el acumulador principal, usado para operaciones de E/S y la mayor parte de la aritmética

REGISTRO BX Es conocido como registro base y es el único de propósito general, usado para la transferencia de datos entre la memoria y el procesador

REGISTRO CX Se utiliza como contador de bucles, operaciones con cadenas y desplazamientos

REGISTRO DX Se utiliza para operaciones de multiplicación y división junto con AX y en operaciones de entrada y salida de puertos, su mitad inferior contiene el numero de puertos

REGISTROS INDICE REGISTRO SI (indice fuente) y DI (indice destino) Requerido para operaciones con cadenas

REGISTROS DE BANDERAS Sirven para indicar el estado actual de la maquina y el resultado del procesamiento.

OF (overflow): overflow indica desbordamiento DF (dirección): Designa dirección hacia la

izquierda o hacia la derecha para mover o comparar cadenas de caracteres. IF (Interrupción): indica una interrupción externa TF (trampa): Permite la operación del procesador en modo de un paso SE (signo): Contiene el signo resultante de una operación aritmética ZF (cero): Indica el resultado de una operación aritmética o de una comparación.

 AF (acarreo auxiliar): contiene el acarreo del bit 3

de un dato de 8 bits, para aritmética especializada PF (paridad) : Indica paridad, par o impar CF (acarreo) : Contiene el acarreo de un orden mas alto, despues de una operación aritemtica.

DIRECCIONAMIENTO El campo de operación de una instrucción especifica la operación que se debe realizar. Esta debe ser ejecutada sobre algunos datos almacenados en registros de la computadora, o sobre operandos almacenados en memoria

El modo de direccionamiento especifica la forma de interpretar la información contenida en cada campo de operando para localizar, en base a esta información, el operando. Entonces los modos de direccionamiento de un procesador son las diferentes formas de transformación del campo operando de la instrucción en la dirección del operando

Las técnicas de direccionamiento se utilizan con la siguiente finalidad: Dar versatilidad Reducir el numero de bits del campo del operando La disponibilidad de diferentes esquemas de direccionamiento da al programador flexibilidad para escribir programas eficientes en cuanto la numero de instrucciones y el tiempo de ejecución.

Registro Implícito Pila Inmediato absoluto Registro Memoria Directo

Contador de programa  Apuntador de pila

Base (base y desplazamiento) Relativo a registros (indexados) Índice  Autoincremental  Autoindexado Autodecrementa

Indirecto

Los modos de direccionamiento también pueden clasificarse en propios e impropios Propios es cuando el operando esta en una dirección concreta. Impropio es cuando puede estar en registros del procesador.

Direccionamiento implícito El operando se especifica en la misma definición de la instrucción. La instrucción no lleva parámetros. Particularmente en instrucciones que no accesan memoria, o bien, tienen una forma específica de accesarla. Ejemplos: PUSHF, POPF, NOP

Direccionamiento inmediato El operando figura en la instrucción no el la dirección Ejemplo: MOV AH, 9

Direccionamiento por registro El operando esta especificado direccionamiento directo por registro.

con

el

Usa solamente registros como operandos. Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye dentro del EU del CPU). Ejemplo: MOV AX, BX

Direccionamiento directo Uno de los operandos involucra una localidad específica de memoria. El valor constante se tiene que buscar en memoria, en la localidad especificada. especificada. Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya  “sabe”  la localidad, la toma de la instrucción y no la tiene que calcular. Ejemplo: MOV AH, Variable

Direccionamiento indirecto Se usan los registros SI, DI como apuntadores El operando indica una localidad de memoria, cuya dirección está en SI o DI. Es más lento que los anteriores, pues tiene que  “calcular”  la localidad Ejemplos: MOV AL, [SI]

Direccionamiento relativo No es necesario utilizar todos los bits de la dirección de memoria en el campo operando, basta con usar los bits precisos. Esto es debido a que las direcciones referenciadas por el programa no están alejadas unas de las otras.

Direccionamiento por base y desplazamiento Formato: [BX o BP + SI o DI (opcionales)+constante (opcional)] 

BX o BP indica una localidad base de la memoria  A partir de BX o BP, se puede tener un desplazamiento  variable y uno constante La diferencia es el segmento sobre el que trabajan por defecto: BX por defecto en el segmento de datos BP por defecto en el segmento de pila. Ejemplos: MOV AX, [BX] MOV DX, [BX+2] MOV CX, [BX+DI] MOV DL, [BX+SI+3] 

Direccionamiento indexado

La dirección del operando también se calcula sumando un registro del CPU al campo del operando

Direccionamiento postincremental La dirección del operando se encuentra en un registro y este es incremental después de acceder al operando.

Direccionamiento autodecremental Para obtener la dirección del operando hay que decrementar un registro en el tamaño del operando.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF