1.4mp
Short Description
Download 1.4mp...
Description
Micro procesadores y Micro controladores Lenguaje ensamblador del microprocesador Dr. Castro Licona Miguel Ing. Electrónica 604-A Lagunés Gonzales José Alfredo Ramírez López Rafael Solano Uscanga Gloria Rodriguez Rodriguez Noé
1.4 lenguaje ensamblador del µp. 1.4.1 registr registros os 1.4.2 declaración de segmentos 1.4.3 modos de direccionamiento 1.4.4 control de dispositivos disp ositivos de entrada y salida 1.4.5 conjuntos de instrucción 1.4.6 esqueleto esq ueleto de un programa programa 1.4.7 uso de procedimientos
Lenguaje ensamblador del micro procesador procesador
1. 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 sería que los programas en ensamblador ensambl ador ocupan menos espacio en memoria.
2. Ventajas y desventajas del Lenguaje Ensamblador Ventajas 2. Eficiencia de tamaño
3. Flexibilidad
Desventajas
4. Tiempo de programación
5. Peligro de afectar recursos inesperadamente
7. Falta de portabilidad
6. Programas fuente grandes
Ventajas
1 .- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido. 2. Eficiencia de tamaño Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel. 3. Flexibilidad Es flexible porque todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina. O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite .
Desventajas 4. Tiempo de programación
5. Peligro de afectar recursos inesperadamente
Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador , pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución.
Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la maquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialice. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel.
6. Programas fuente grandes Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos más 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.
7. Falta de portabilidad
Porque para cada máquina existe un lenguaje ensamblador; por ello, evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras.
Relación del lenguaje ensamblador con los componentes internos del procesador
En la memoria se almacena la información en celdas especiales llamados registros los cuales tienen un nivel alto y un nivel bajo.
Unidad aritmética y lógica es la responsable de realizar como su nombre lo indica operaciones aritméticas y lógicas.
Unidad de control Se encarga de coordinar de que los otros componentes ejecuten las operaciones correctamente.
Bus interno son los canales por donde pasa la información que la máquina va a procesar (bus de entrada) o procesada (bus de salida).
Registro Concepto. Los registro del procesador se emplean para controlar instrucciones de ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son espacios físicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo el microprocesador los registros están divididos en seis grupos los cuales tienen un fin en especifico.
El 8088 tiene 14 registros de 16 bits repartidos de la siguiente forma
Registros de propósito general:
son los caballos de batalla del sistema y pueden ser direcciones o como una parte de un byte.
Son 4 registros de 16 bytes.
(AX) ACUMULADOR.- Este registro puede ser utilizado para almacenamiento de programación en general. Sin embargo también se utiliza en algunas instrucciones específicas tales como las de multiplicación, división, operaciones I/O y manejo de cadena dé caracteres.
(DX)
(BX) BASE.- Cuando se acceda a la memoria con frecuencia se utiliza este registro en combinación con los registros índice . (En el direccionamiento indirecto).(DS:BX). (CX) CONTADOR.- Durante la ejecución de un lazo(loop), este registro contiene el valor del índice de conteo, sirve también como contador en rotaciones y desplazamientos.
REG. DE DATOS.- Registro utilizado para almacenamiento general y se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instrucción CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el número de puerto de entrada/salida).
REGISTROS INDICE Y APUNTADORES: registro índice: sirve para el direccionamiento de indexado y para las operaciones de suma y resta. Registro apuntador: este registro esta compuesto por 16 bits y contiene el desplazamiento de la siguiente instrucción que se va ejecutar. SP.- (Stack Pointer) Su contenido apunta a la parte superior del stack dentro del bloque de memoria de 64 K apuntado por SS(Reg. de Segmento de Stack) se decrementa en 2 con la instrucción PUSH y se incrementa en 2 con la instrucción POP. (SS:SP). BP.- (Base Pointer) Se usa como un segundo apuntador de Stack, aquí se puede guardar el SP que puede ser la dirección de datos que se van a usar frecuentemente, también se usa como registro de propósito gral. (SS:BP). DI, SI.- (Destination Index, Source Index) Son capaces de autoincrementarse o autodecrementarse, debido a esto pueden usarse en el manejo de tablas (Apuntan con referencia a DS:SI ES:DI).
REGISTROS DE CONTROL:
IP.- (Apuntador de instrucciones) Guarda la dirección del código de la siguiente instrucción a traer desde memoria apuntado por CS.(CS:IP) . F.-(Registro de banderas o estado) Refleja el resultado de la operación aritmética o lógica ejecutada anteriormente. Controla la operación “single step” con un 1 después de cada instrucción se genera una interrupción controlada por el vector 1. T .-(TRAP)
D.-(DIRECCION).-
Con 1 decrementa DI o SI y con 0 los incrementa .
I .-(INTERRUPCION).-Con O.-(SOBREFLUJO) .-Si
signo.
un 1 habilita interrupción por INTR.
vale 1 hubo un desborde en el resultado de la operación aritmética con
S.-(SIGNO).-Refleja Z .-(CERO) -
el signo del resultado de la operación(con 1 es neg.) .
Cuando el resultado de la operación es cero.
AUXILIAR) Cuando hay un lleva del bit 3 al 4 (para operaciones de 8 bits) o un lleva del bit 7 al 8 (para operaciones de 16 bits).
A.-(CARRY
- Cuando el No. de unos del resultado es impar se levanta esta bandera p/conservar la paridad. P .-(PARIDAD)
C .-(CARRY)
de 8 bits.
Cuando hay un lleva del bit 15 al Carry p/ operaciones de 16 bits y del 7 al Carry
REGISTROS DE SEGMENTOS :
Los registros de segmento contienen la dirección
inicial de cada segmento.
CS.- Segmento de Código. Segmento donde se encuentra el programa. La dirección se forma (CS:IP). SS. Segmento de Stack. Apunta hacia el área de Stack, que contiene los datos y las direcciones que se necesitan guardar temporalmente. La dirección se forma (SS:SP) o ( SS:BP ). DS.- Segmento de Datos. Apunta a un segmento donde se guardan datos, constantes y áreas de trabajo definidos por el programa. (DS:BX) o (DS:SI ). ES.- Segmento Extra . Puede usarse como un segundo apuntador de stack o como un segundo apuntador de datos (ES:BX) o ( ES:DI ).
Declaración de segmentos
Alineamiento:
este atributo especifica el atributo físico donde el link debe establecer este segmento en memoria, sino se especifica ningún alineamiento este se asume como PARA, estos pueden ser:
BYTE: el segmento se establece en el siguiente byte disponible. WORD: el segmento se establece en la siguiente palabra disponible. DWORD: el segmento se establece en la siguiente doble palabra disponible. PARA: el segmento se establece en el siguiente párrafo disponible. PAGE: el segmento se establece en la siguiente pagina (256 bytes) disponible.
Combinación:
este atributo describe como el link debe combinar los segmentos lógicos con nombre indecisos en un solo segmento físico. Los posible atributos de combinación son los siguientes:
PUBLIC O MEMORY: todos los segmentos con cualquiera de estos atributos de combinación, que contengan el mismo nombre de segmento serán encadenados en un solo segmento físico. COMMON: todos los segmentos con este atributo de combinación y el mismo nombre de segmento, el link comenzara estos segmentos lógicos con el mismo nombre en la misma dirección de memoria física, tal que los segmentos lógicos se encuentran traslapados. STACK: este atributo de combinación indica que todos los segmentos con este atributo de combinación serán encadenados en uno solo, el registro SS contendrá la dirección de este segmento y SP el tamaño de este segmento cuando DOS carga el programa antes de ejecutarlo. ATxxx: este atributo de combinación no define mas datos al programa, solamente nos permite hacer referencia a una dirección especifica de memoria por medio de nombre simbólicos, xxx es la dirección de memoria fija que se le asignara a este segmento.
Tipo de clase: la clase de segmento especificada entre comillas simples. Cuando el link acomoda los segmentos, establecen los segmentos que pertenecen al mismo tipo de clase, uno después de otro.
‘CODE’ para los segmentos de código.
‘DATA’ para los segmentos de datos.
‘STACK’ para los segmentos de stack.
Esto ayuda atener los segmentos de código, datos y stack en forma contigua respectivamente.
Modos de direccionamiento
son un mecanismo que permite conocer la ubicación de un dato o instrucción.
tipos:
Inmediato
Indirecto
Indexado
Directo
registro
Conjunto de instrucciones Las instrucciones, como su propio nombre indica, van a decir que se debe hacer con los datos, o con que datos se debe realizar cierta operación.
Las instrucciones están formadas por dos partes, tal y como muestra a continuación
El código de operación, está siempre presente en cualquier tipo de instrucción. Por el contrario, el operando puede o no estarlo. Por ejemplo, para que la CPU detenga la ejecución de un programa, es suficiente con el código de operación. Sin embargo, para realizar una suma, a parte del código de operación habrá que indicar con que dato se debe sumar, ya sea explícitamente después del código de operación o indicando en su lugar la posición de memoria donde se encuentra dicho dato.
Las instrucciones se pueden clasificar según el tipo de operación que realicen en:
Instrucciones lógicas: Realizan las operaciones lógicas entre operandos, tales como suma lógica, complementación, etc. Instrucciones aritméticas: Realizan las operaciones aritméticas, tales como la suma aritmética, división aritmética, etc. Este tipo de operaciones se realiza entre acumuladores y posiciones de memoria. Instrucciones de salto: Este tipo de instrucciones corresponde a los saltos condicionales (hacen una cosa u otra según el resultado de ciertas operaciones) e incondicionales. Instrucciones de transferencia de datos (entrada/ salida): Estas instrucciones "ordenan" el paso de información entre distintos dispositivos del sistema. Instrucciones de control: Controlan el desarrollo del programa, lo finaliza, inicializa, no operación (NOP), etc.
Unidad de entradas/salidas (interfaz)
Esta unidad comunica al sistema con el mundo exterior, permitiendo la introducción y la extracción de información al sistema. Estas unidades consisten generalmente en registros que, accionados por los buses de control y direcciones, almacenan la información suministrada por el bus de datos. Estos registros son accesibles desde el exterior por una serie de terminales para su conexión a cualquier dispositivo que se deba accionar.
La parte de salida, por el contrario, consiste en una serie de registros en los que el sistema deposita el resultado de la información ya procesada. En las entradas se introduce la información de manera que cuando se ordena, mediante los buses de control y de direcciones, el sistema selecciona en un instante dado cuales de esas informaciones presentes en las entradas deben transferirse al bus de datos para su proceso.
Nota: Al igual que sucede en un sistema abierto con la Memoria Central, la Unidad de E/S es un elemento que no esta en el interior del microprocesador, pero si dentro de un micro controlador
ESQUELETO DE UN PROGRAMA EN ENSAMBLADOR
A continuación se presenta la estructura básica de un programa en ensamblador con extensión .asm. Tipo de modelo de un programa en ensamblador. .model stall Segmento .stack de pila .data Segmento de Datos
Determina el tamaño de los segmentos. Se declaran Variables, Arreglos, Matrices, Cadenas
Code mov ax,@data mov ds,ax push ds
Inicialización
…codigo programa
mov ax, 4c00h int ah end
Finalización
Segmento de Código
Conjunto de procedimiento Ensamblaje
Es el programa que convierte un listado de código fuente en código objeto.
Enlace y Ejecución
Encontrar los módulos a enlazar. Construir el modulo de carga asignado a los segmentos. Rellenar todos los desplazamientos de segmentos no terminado. Rellenar todas las direcciones de los segmentos. Cargar el programa.
http://timerime.com/en/timeline/268574/linea+del+tiempo+de+los+micr oprocesadores/ http://ensambladorisc.blogspot.com/2010_03_01_archive.html http://es.scribd.com/doc/72105135/2/DECLARACION-DE-SEGMENTOS? http://perso.wanadoo.es/pictob/microprg.htm#unidad_de_entradas_salid as__i http://perso.wanadoo.es/pictob/microprg.htm#lenguaje_ensamblador
View more...
Comments