Está en la página 1de 33

Micro procesadores y Micro controladores Lenguaje ensamblador del microprocesador Dr. Castro Licona Miguel Ing.

Electrnica 604-A Laguns Gonzales Jos Alfredo Ramrez Lpez Rafael Solano Uscanga Gloria Rodriguez Rodriguez No

1.4 lenguaje ensamblador del p. 1.4.1 registros 1.4.2 declaracin de segmentos 1.4.3 modos de direccionamiento 1.4.4 control de dispositivos de entrada y salida 1.4.5 conjuntos de instruccin 1.4.6 esqueleto de un programa 1.4.7 uso de procedimientos

Lenguaje ensamblador del micro 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 sera que los programas en ensamblador ocupan menos espacio en memoria.

2. Ventajas y desventajas del Lenguaje Ensamblador


Ventajas 2. Eficiencia de tamao

3. Flexibilidad

Desventajas

4. Tiempo de programacin

5. Peligro de afectar recursos inesperadamente

6. Programas fuente grandes

7. Falta de portabilidad

Ventajas
1 .- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la mquina la computadora lo procesa mas 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 limitantes para explotar al mximo los recursos de la mquina. 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 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.

5. Peligro de afectar recursos inesperadamente

Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la maquina, 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.

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

7. 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 del lenguaje ensamblador con los componentes internos del procesador
En la memoria se almacena la informacin en celdas especiales

llamados registros los cuales tienen un nivel alto y un nivel bajo.

Unidad aritmtica y lgica es la responsable de realizar como su nombre lo indica operaciones aritmticas y lgicas. 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 informacin que la mquina va a procesar (bus de entrada) o procesada (bus de salida).

Registro
Concepto. Los registro del procesador se emplean para controlar instrucciones de ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo el microprocesador los registros estn 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 propsito general: son


ser direcciones o como una parte de un byte.

los caballos de batalla del sistema y pueden

Son 4 registros de 16 bytes.

(AX) ACUMULADOR.- Este registro


puede ser utilizado para almacenamiento de programacin en general. Sin embargo tambin se utiliza en algunas instrucciones especficas tales como las de multiplicacin, divisin, operaciones I/O y manejo de cadena d caracteres.

(BX) BASE.- Cuando se acceda a la memoria con frecuencia se utiliza este registro en combinacin con los registros ndice . (En el direccionamiento indirecto).(DS:BX).
(CX) CONTADOR.- Durante la ejecucin de un lazo(loop), este registro contiene el valor del ndice de conteo, sirve tambin como contador en rotaciones y desplazamientos.

(DX)

REG. DE DATOS.- Registro utilizado para almacenamiento general y se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instruccin CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el nmero 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 instruccin 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 instruccin PUSH y se incrementa en 2 con la instruccin POP. (SS:SP). BP.- (Base Pointer) Se usa como un segundo apuntador de Stack, aqu se puede guardar el SP que puede ser la direccin de datos que se van a usar frecuentemente, tambin se usa como registro de propsito 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 direccin del cdigo de la siguiente instruccin a traer desde memoria apuntado por CS.(CS:IP) . F.-(Registro de banderas o estado) Refleja el resultado de la operacin aritmtica o lgica ejecutada anteriormente. T.-(TRAP) Controla la operacin single step con un 1 despus de cada instruccin se genera una interrupcin controlada por el vector 1.

D.-(DIRECCION).- Con 1 decrementa DI o SI y con 0 los incrementa .


I.-(INTERRUPCION).-Con un 1 habilita interrupcin por INTR. O.-(SOBREFLUJO).-Si vale 1 hubo un desborde en el resultado de la operacin aritmtica con signo.

S.-(SIGNO).-Refleja el signo del resultado de la operacin(con 1 es neg.) . Z.-(CERO)- Cuando el resultado de la operacin es cero. A.-(CARRY 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).

P.-(PARIDAD) - Cuando el No. de unos del resultado es impar se levanta esta bandera p/conservar la paridad.
C.-(CARRY) Cuando hay un lleva del bit 15 al Carry p/ operaciones de 16 bits y del 7 al Carry de 8 bits.

REGISTROS DE SEGMENTOS: Los registros de segmento contienen la direccin


inicial de cada segmento.

CS.- Segmento de Cdigo. Segmento donde se encuentra el programa. La direccin 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 direccin 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 ).

Declaracin de segmentos

Alineamiento:

este atributo especifica el atributo fsico donde el link debe establecer este segmento en memoria, sino se especifica ningn 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 prrafo disponible. PAGE: el segmento se establece en la siguiente pagina (256 bytes) disponible.

Combinacin:

este atributo describe como el link debe combinar los segmentos lgicos con nombre indecisos en un solo segmento fsico. Los posible atributos de combinacin son los siguientes:

PUBLIC O MEMORY: todos los segmentos con cualquiera de estos atributos de combinacin, que contengan el mismo nombre de segmento sern encadenados en un solo segmento fsico. COMMON: todos los segmentos con este atributo de combinacin y el mismo nombre de segmento, el link comenzara estos segmentos lgicos con el mismo nombre en la misma direccin de memoria fsica, tal que los segmentos lgicos se encuentran traslapados. STACK: este atributo de combinacin indica que todos los segmentos con este atributo de combinacin sern encadenados en uno solo, el registro SS contendr la direccin de este segmento y SP el tamao de este segmento cuando DOS carga el programa antes de ejecutarlo. ATxxx: este atributo de combinacin no define mas datos al programa, solamente nos permite hacer referencia a una direccin especifica de memoria por medio de nombre simblicos, xxx es la direccin 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 despus de otro.

CODE para los segmentos de cdigo.


DATA para los segmentos de datos. STACK para los segmentos de stack.
Esto ayuda atener los segmentos de cdigo, datos y stack en forma contigua respectivamente.

Modos de direccionamiento
son un mecanismo que permite conocer la ubicacin de un dato o instruccin.
tipos:

Inmediato

Indirecto

Directo

Indexado

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

Las instrucciones estn formadas por dos partes, tal y como muestra a continuacin

El cdigo de operacin, est siempre presente en cualquier tipo de instruccin. Por el contrario, el operando puede o no estarlo. Por ejemplo, para que la CPU detenga la ejecucin de un programa, es suficiente con el cdigo de operacin. Sin embargo, para realizar una suma, a parte del cdigo de operacin habr que indicar con que dato se debe sumar, ya sea explcitamente despus del cdigo de operacin o indicando en su lugar la posicin de memoria donde se encuentra dicho dato.

Las instrucciones se pueden clasificar segn el tipo de operacin que realicen en:
Instrucciones lgicas: Realizan las operaciones lgicas entre operandos, tales como suma lgica, complementacin, etc.
Instrucciones aritmticas: Realizan las operaciones aritmticas, tales como la suma aritmtica, divisin aritmtica, 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 segn el resultado de ciertas operaciones) e incondicionales. Instrucciones de transferencia de datos (entrada/ salida): Estas instrucciones "ordenan" el paso de informacin entre distintos dispositivos del sistema. Instrucciones de control: Controlan el desarrollo del programa, lo finaliza, inicializa, no operacin (NOP), etc.

Unidad de entradas/salidas (interfaz)


Esta unidad comunica al sistema con el mundo exterior, permitiendo la introduccin y la extraccin de informacin al sistema. Estas unidades consisten generalmente en registros que, accionados por los buses de control y direcciones, almacenan la informacin suministrada por el bus de datos. Estos registros son accesibles desde el exterior por una serie de terminales para su conexin 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 informacin ya procesada. En las entradas se introduce la informacin 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 continuacin se presenta la estructura bsica de un programa en

ensamblador con extensin .asm. Tipo de modelo de un programa en ensamblador.


.model stall Segmento .stack de pila .data Segmento de
Datos Determina el tamao de los segmentos.

Se declaran Variables, Arreglos, Matrices, Cadenas

Code

mov ax,@data mov ds,ax push ds codigo programa mov ax, 4c00h int ah end

Inicializacin

Segmento de Cdigo

Finalizacin

Conjunto de procedimiento
Ensamblaje
Es el programa que convierte

Enlace y Ejecucin
Encontrar los mdulos a

un listado de cdigo fuente en cdigo objeto.

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

También podría gustarte