Está en la página 1de 57

INTRODUCCION

- El trmino ensamblador (del ingls assembler)


se refiere a un tipo de programa informtico que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene cdigo maquina, ejecutable directamente por la mquina para la que se ha generado

- Familiarizarnos con el lenguaje ensamblador. - Adquirir destreza suficiente para comenzar a escribir y
ejecutar programas en ensamblador.

LENGUAJE
Forma de comunicarnos con la computadora
Cmo ? CPU
Lenguaje Binario Ej. 1010011010 Conjunto de Instrucciones y op. Arit. elementales Conjunto de Instruciones que no dependen de la maquina.

Lenguaje de Mq. Lenguaje Ensamblador Sistema Operativo Lenguaje de alto nivel

ENSAMBLADOR
software
Macro ensamblador Lenguaje de Alto Nivel

traduce
Lenguaje de Mquina

traducir
Programa en lenguaje ensamblador

nico Medio

Hace referencia directa Al hardware No es portable, depende De sus circuitos integrados

CPU
Programa especfico Estrecha relacin con la Arquitectura de cada computadora

Circuitos Electrnicos de memoria de propsito General para formar registros AX, BX, CX, DX

AMBIENTE DEL SOFTWARE EN EL MICROPROCESADOR IBM 8088 Microprocesador Intel 8088


Configuracin PC -ROM -RAM -Generador Reloj (8259A) -Multiplexores -Controlador de Perifricos de E/S.

SOFTWARE

-Integra la configuracin del Sistema. - Mov. De Datos entre dif. Componentes.

ARQUITECTURA PRINCIPAL DEL S.O


Carga Iniciar PC ROM Microprograma SO (Flexible o Duro)

MEMORIA SSOO Rutinas del BIOS Procesador de Comandos


COMMAND.COM
Espacio Libre Para comandos Segn se requiera. Programas y datos.

IBMBIO.COM

IBMDOS.COM

No Visibles
Porcin del Bios(ROM) - Que Permite Manejar Todos los dispositivos - Controlar Tareas I/O Rutinas de servicio al S.O ->Llamadas mediante Interrupciones EJ. 10H (Monitor de video)

Maneja comandos ingresados desde teclado.

SEGMENTO Y DESPLAZAMIENTO
CPU Trabaja

Memoria RAM

64 KBytes 64 KBytes

20 bits
La direccin inicial de un segmento define su localizacin. Puede estar contenida 1 de los 4 registros disponibles. - Cdigo - Datos - Stack - Extra

16 Bytes

SEGMENTOS
Cdigo: Segmento de Cdigo: ejecucin. ejecucin. Datos: Segmento de Datos: Seala hacia la direccin en donde se inicia el segmento en el se define las variables. variables. Stack. Segmento de Stack. Seala el segmento en donde se pila. encuentra la pila.(En donde pueden colocarse bytes o labras recuperarse). una tras otras y luego recuperarse). Extra: Segmento Extra: Apunta al segmento definido por el usuario adicionales. y que contiene datos adicionales. Contiene la direccin de inicio de segmento donde residen las instrucciones del programa en

Direccin Completa en 1 MB
Direccin del segmento Memoria RAM

65 535

. .

DIRECCIN SEGMENTO + DIRECCIN DEL DESPLAZAMIETNO

2 1 0

El encadenador linker es quien define las direcciones de los segmentos.

Ejemplo.
En Binario 0001 0000 1010 1111 (0000) Dir. Segemnto 1111 0000 1111 1111 Dir. Dezplazamient 0001 1111 1011 1110 1111 Dir. 20 Bits En Hexadecimal. 10AF(0) F 0F F 1FBEF

REGISTROS
Los registros internos del microprocesador INTEL 8088 son conocidos por sus nombres especficos: - AX Acumulador - CX Registro contador - BX Registro base - DX Registro de datos

CS Registro del segmento de cdigo SS Registro del segmento de pila

- DS Registro del segmento de datos - ES Registro del segmento extra

BP Registro de apuntadores base SP Registro del apuntador de la pila

SI Registro ndice fuente DI Registro ndice destino IP Registro de apuntador de siguiente instruccin F Registro de banderas

REGISTROS

Los registros del procesador se emplean para:

Controlar instruccion es en ejecucin,

Manejar direcciona miento de memoria y

Proporcion ar capacidad aritmtica.

Los registros se dividen en:


Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propsitos generales Registro ndice Registro de bandera.

CUADRO COMPARATIVO
TIPOS DE REGISTROS FUNCION Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para el direccionamiento conocida como el segmento actual Este registro esta compuesto por 16 bits y contiene el desplazamiento de la siguiente instruccin que se va a ejecutar.

Registros de Segmento Registros de Apuntador de Instrucciones

Registros Apuntadores Registros de Propsito General Registros Indices

Permiten al sistema accesar datos al segmento de la pila. Son los caballos de batalla del sistema y pueden ser direccionados como una palabra o como una parte de un bytes. Sirven para el direccionamiento de indexado y para las operaciones de sumas y restas. Sirven para indicar el estado actual de la maquina y el resultado del procesamiento. De los 16 bits de registro de bandera 9 son comunes a toda la familia de los procesadores 8086.

Registros de Banderas

INTEL 8088

Los Intel 8088 es un microprocesador de 16 bits diseados por Intel en 1978, iniciadores de la arquitectura x86, utiliza un bus externo de 8 bits, para poder emplear circuitos de soporte al microprocesador.

Los registros internos del microprocesador INTEL 8088 son conocidos especficos: por sus nombres especficos:
Registros de propsito general +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | AH BH CH DH | | | | AL BL CL DL | | | | | AX | BX | CX | DX +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Registros ndices +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | SI DI BP SP | | | | | Indice Fuente | Ind. Destino | A. Base | A. de Pila +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Registros de segmento +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CS | | Cdigo +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DS | | Datos +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ES | | Extra +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SS | | Pila +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Apuntador de Instruccin +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP | | A. I. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Registro de Banderas +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |- - - - O D I T S Z - A - P C | Banderas +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ CF Bandera de acarreos PF Bandera de Paridad AF Bandera auxiliar de acarreos ZF Bandera de cero SF Bandera de signo TF Bandera de trampa IF Bandera de habilitacin de interrupcin DF Bandera de Direccin OF Bandera de sobre flujo

INTERRUPCIONES
Una interrupcin es una instruccin que detiene la ejecucin de un programa para permitir el uso de la UCP a un proceso prioritario. Una vez concluido este ltimo proceso se devuelve el control a la aplicacin anterior.

RUTINAS UTILIZADAS PARA PROGRAMAR EN LENGUAJE ENSABLADOR


EDITOR: EDITOR: Programa en el cual se puede crear cdigo fuente. (Bloc de notas, Word, Edit de DOS, etc). Este archivo puede tener extensin .asm, .txt. TASM: TASM: Programa que se emplea para ensamblar cdigo fuente y generar cdigo objeto ( Cdigo intermedio). Este archivo tendr extensin .obj. TLINK: TLINK: Programa que se emplea para encadenar diversos mdulos objeto. Se encarga de asignar localidades de memoria absolutas para relocalizar al cdigo objeto. En esta rutina se crear dos archivo uno de extensin *.exe y *.map. DEBUG: DEBUG: Para correr un programa paso a paso, y examinando el cambio dinmico d la memoria.

FORMATO INTERNO DE UN PROGRAMA


Bsicamente el formato de una lnea de cdigo en lenguaje ensamblador consta de cuatro partes: constante: - Etiqueta, variable o constante: No siempre es definida, si se define es necesario utilizar separadores para diferenciarla de las otras partes, usualmente espacios, o algn smbolo especial. instruccin: - Directiva o instruccin: Es el nombre con el que se conoce a la instruccin que queremos que se ejecute.

FORMATO INTERNO DE UN PROGRAMA


(s): - Operando (s): la mayora de las instrucciones en ensamblador trabajan con dos operndos, aunque hay instrucciones que funcionan solo con uno. Los operandos se separan uno del otro por medio de una coma ",". Ej. Ej. MOV destino, fuente Comentarios: - Comentarios: Se empiezan con ; Ej. AX,001 001H Ej. MOV AX,001H ; Inicializa AX con el valor 001H

FORMATO EXTERNO DE UN PROGRAMA

DIRECCIONAMIENTO
El campo de operacin de una instruccin, especifica la operacin que se debe realizar. Esta debe ser ejecutada sobre algunos datos almacenados en registros del computador o en palabras de memoria, es decir, sobre los operandos. El modo de direccionamiento especifica la forma de interpretar la informacin contenida en cada campo de operando, para localizar en base a esta informacin el operando.

Los ordenadores utilizan tcnicas de direccionamiento con los siguientes fines: Dar versatilidad de programacin al usuario proporcionando facilidades tales como ndices, direccionamientos indirectos, etc., esta versatilidad nos servir para manejar estructuras de datos complejas como vectores, matrices, etc. Reducir el nmero de bits del campo de operando.

La variedad de modos de direccionamiento en un ordenador puede parecer excesivamente complicada. Sin embargo, la disponibilidad de diferentes esquemas de direccionamiento da flexibilidad para escribir programas que son ms eficientes en cuanto a nmero de instrucciones y tiempo de ejecucin. Es tal la importancia de los modos de direccionamiento que la potencia de una mquina se mide tanto por su repertorio de instrucciones como por la variedad de modos de direccionamiento que es capaz de admitir.

Definicin: Los modos de direccionamiento de un ordenador son las diferentes Definicin: formas de transformacin del campo de operando de la instruccin en la direccin del operando. En esta definicin el trmino direccin debe interpretarse en su sentido ms general de localizacin del operando, en cualquier lugar, y no en el sentido ms estricto de direccin de memoria.

Modos de DIRECCIONAMIENTO ms usuales


La mayora de estos modos son comunes en muchas mquinas, sin embargo, hay otros que slo se usan en determinados procesadores. Inmediato Directo Indirecto Registro Indirecto con registro Con desplazamiento Pila

Modos de Direccionamiento Bsicos


MODO ALGORITMO PRINCIPAL VENTAJA PRINCIPAL DESVENTAJA

Inmediato

Operando =A

No referencia a memoria

Operando de magnitud limitada Espacio de direcciones limitado Referencia a memorias mltiples Nmero registros Referencia memoria Complejidad Aplicabilidad limitada limitado de

Indirecto Directo

EA = A EA = (A)

Es sencillo Espacio de direcciones grande

Registro

EA = R

No referencia a memoria

Indirecto con registro Con dezplazamiento Pila

EA = (R) EA = A + (R) EA = cabecera de la pila

Espacio de direcciones grande Flexibilidad No referencia a memoria

extra

Direccionamiento Inmediato (o literal)


Es la forma ms sencilla, en la que el operando esta presente en la propia instruccin. OPERANDO = A

Instruccin operando

Este nodo es utilizado para definir y utilizar constantes y para fijar valores inciales de variables. Normalmente, el nmero se almacena en complemento a dos. Cuando el operando se carga en un registro de datos, el bit de signo se replica hacia la izquierda hasta la longitud total de la palabra de datos. * La ventaja es que una vez captada la instruccin, no se requiere una referencia a memoria para obtener el operando, ahorrndose pues un ciclo de memoria o de cache en el ciclo de instruccin. * La desventaja es que el tamao del nmero est restringido a la longitud del campo de direcciones.

Direccionamiento Directo (o absoluto)

Es otra de las formas sencillas en la que el campo de direcciones contiene la direccin efectiva del operando. EA = A Esta tcnica fue comn en las primeras generaciones de computadores y se encuentra an en un pequeo grupo de sistemas. Slo necesita una referencia a memoria y no necesita ningn clculo especial.

Instruccin A Memoria

Operando

Direccionamiento Indirecto
El Problema del direccionamiento directo es que la longitud del campo de direcciones es normalmente menor que la longitud de palabra, limitando pues el rango de direcciones. Una solucin es hacer que el campo de direcciones referencie la direccin de una palabra de memoria , la cual contenga la direccin completa del operando. EA = (A)
Instruccin

A
Memoria

Operando

**La ventaja de esta aproximacin es que para una longitud de palabra de N bits, se dispone ahora de un espacio de direcciones de 2N. **La desventaja es que la ejecucin de la instruccin requiere dos referencias a memoria para capturar el operando: una para captar su direccin, y otra para obtener su valor.

Direccionamiento de registro
El direccionamiento de registros es similar al directo. La nica diferencia es que el campo de Direcciones. Referencia. Un registro, en lugar de una direccin de memoria principal. EA = R Normalmente un campo de direcciones que referencia a registros consta de 3 o 4 bits de manera que pueden referenciarse un total de 8 a 16 registros de uso general.
Instruccin

Ventajas:
Solo es necesario un campo pequeo en la instruccin. No se requiere referencias a memoria.

R
Registros

Desventajas:
Es que el espacio de memoria es muy limitado.

Operando

DIRECCIONAMIENTO INDIRECTO CON REGISTROS


Igual que el direccionamiento de registros es anlogo al directo, el direccionamiento indirecto con registros es anlogo al direccionamiento indirecto. En ambos casos, la diferencia estriba en si el campo de direcciones hace referencia A una posicin de memoria o a un registro. EA = (R)
Instruccin

R
Registros Memoria

Operando

Las ventajas y limitaciones del direccionamiento indirecto con registros son bsicamente Las mismas que se tienen para el direccionamiento indirecto. En ambos casos la limitacin del espacio. Adems el direccionamiento indirecto con registro emplea una referencia menos a memoria que el direccionamiento indirecto

Direccionamiento con desplazamiento


Instruccin

Un modo muy potente de direccionamiento combina las posibilidades de los Direccionamientos directo e indirecto con registros . A este se le conoce con Distintos nombres dependiendo el contexto en que se emplee. EA = A + (R)

A
Memoria

Registros

Operando

Este requiere que las instrucciones tengan dos campos de direcciones al menos Uno de ellos explicito . El valor contenido en uno de los campos de direcciones (valor = A) se utiliza directamente ; el otro campo de direcciones, o una referencia implcita definida por el cdigo de operacin, se refiere a un registro cuyo contenido se suma a A para generar la direccin afectiva

Direccionamiento de Pila
Esta definida una pila como una matriz lineal de posiciones. A veces se le denomina lista de apilamiento o cola ultimo en entrar primero en salir Una pila es un bloque de posiciones reservado.los elementos se aaden en la cabecera de la pila. La pila tiene asociado un puntero, cuyo valor es la direccin de la cabecera o tope de la pila.

Instruccin

Implcita

Registro cabecera de pila

El modo de direccionamiento de pila es una forma de direccionamiento implcito. Las instrucciones maquina no necesitan incluir una referencia a memoria sino que Operan implcitamente a la cabecera de la pila.

Modos de direccionamiento en el Pentium y el Power PC


Modos de direccionamiento en el Pentium II.El Pentium II esta equipado con diversos modos de direccionamiento ideado para Permitir la ejecucin eficiente de lenguajes de alto nivel.

Modo Inmediato Registro Con desplazamiento Base Base con desplazamiento ndice escalado con desplazamiento Base con ndice y desplazamiento Base con ndice desplazamiento Relativo escalado

Algoritmo Operando = A LA = R LA = ( SR ) + A LA = ( SR ) + ( B ) LA = ( SR ) + ( B ) +A LA = ( SR ) + ( I ) * S + A LA = ( SR ) + ( B ) + ( I ) + A y LA = ( SR ) + ( I ) * S + ( B) + A LA = ( PC ) + A

Siendo : LA = direccin lineal (X) = contenido de X SR = registro de segmentos PC = contador de programa A = contenido de un campo de direccin de una instruccin R = registro B = registro base I = registro ndice S = factor de escala

En el modo inmediato, el operando se incluye en la instruccin. El operando Puede ser un byte, una palabra o una palabra doble de datos.

En el modo de operando de registro, el operando esta situado en un registro para instrucciones de tipo general tales como instrucciones de transferencia de datos, aritmticas y lgicas el operando puede ser : De 32 bits (EAX, ECX, EDX, ESI, EDI, ESP EBP) , De 16 bits (AX, BX, CX, DX,SI, DI,SP ,BP) De 8 bits ( AH, BH, CH, DH, AL, BL, CL, DL)

En el modo de desplazamiento, el desplazamiento del operando esta incluido formando parte de la instruccin como desplazamiento de 8, 16 o 32 bits. El modo de direccionamiento con desplazamiento se puede encontrar en pocas mquinas ya que estas implica instrucciones largas, en el caso del Pentium II El valor del desplazamiento puede ser tan largo como 32 bits. El direccionamiento con desplazamiento puede ser util para referenciar variables globales.

El modo base especifica que uno de los registros de 8,16 o 32 bits contiene la direccin efectiva. Esto es equivalente a lo que hemos denominado direccionamiento indirecto con registros

En el modo base con desplazamiento, la instruccin incluye un desplazamiento que hay que sumar a un registro base que puede ser cualquiera de los registros de uso general. En el modo desplazamiento con ndice escalonado, la instruccin incluye un desplazamiento a sumar un registro llamado en este caso registro ndice el registro ndice puede ser cualquiera de los registros de uso excepto el ESP , que normalmente se emplea para procesamiento de pila.

El modo base con ndice y desplazamiento, suma los contenidos de los registros base e ndice y un desplazamiento para formar una direccin efectiva.

El modo base con ndice escalonado y desplazamiento suma el contenido de registros ndice multiplicado por un factor de escala, con el contenido de registro base y el desplazamiento.

Finalmente el direccionamiento relativo puede emplearse en instrucciones de transferencia de control. Se suma un desplazamiento al valor del contador de programa que apunta a la instruccin siguiente.

MODO DE DIRECCIONAMIENTO DEL PowerPC


El PowerPc emplea un conjunto de modos de direccionamiento sencillo y relativamente evidente, como lo vemos a continuacin.

Modo ndice Indirecto indexado

Algoritmo Direccionamiento para carga/memorizacin EA = ( BR ) + D EA = ( BR ) + ( IR ) Direccionamiento de bifurcaciones EA = I EA = ( PC ) +I EA = ( L/CR ) Clculos en coma fija EA = GPR Operando = 1 Calculo en coma flotante EA = FPR

Absoluto Relativo Indirecto

Registro Inmediato

Registro

Siendo :
LA = direccin lineal GPR = registro de uso general (X) = contenido de X FPR = registro de coma flotante BR = registro base D = desplazamiento IR = registro ndice I = valor inmediato L/CR = registro de enlace o de cuenta PC = contador de programa

Direccionamiento para Carga/memorizacin


El PowerPc proporciona dos modos de direccionamiento alternativos para instrucciones de carga/memorizacin. En el direccionamiento indirecto, la instruccin incluye un desplazamiento de 16 bits que se suma a un registro base, que puede ser alguno de los registros de uso general. Adems, la instruccin puede especificar que la nueva direccin efectiva.

Registro Base

Desplazamien to con signo s des

Registro Base

Registro ndice s

des

Con actualizacin

Con actualizacin Direccin Lgica

Direccin Lgica

Direccionamiento de bifurcaciones.
Se dispone de tres modos de direccionamiento para bifurcaciones. * Si se emplea direccionamiento absoluto * Con direccionamiento relativo * Con direccionamiento Indirecto

INSTRUCCIONES DEL LENGUAJE ENSAMBLADOR

INSTRUCCIONES DE TRANSFERENCIA

INSTRUCCIONES ARITMTICAS

Las instrucciones ADD y SUB permiten realizar sumas y restas sencillas respectivamente. Sintaxis: ADD Destino, Fuente SUB Destino, Fuente Ejemplos: ADD AX,10 ;AX=AX+10 SUB AX,BX ;AX=AX-BX En las operaciones de suma y resta el resultado siempre es almacenado en el operando de destino, el cual puede ser un registro o una variable.

MUL, MUL El producto de una multiplicacin siempre tiene el doble de ancho. Si se multiplican dos nmeros de 8 bits, el resultado ser de 16 bits
Ejemplos: Ejemplos:

MOV BL,5 ;Cargar datos MOV AL,10 ; MUL BL ; AX=AL*BL DIV, el dividendo es almacenado en el registro AX y el divisor puede ser cualquier registro de 8 bits o cualquier variable declarada de tipo byte. Despus de la divisin, el cociente es cargado en el registro AL y el residuo en el registro AH.
Ejemplo de divisin sin signo: MOV AX,10 MOV BL,5 DIV BL

INSTRUCCIONES DE CONTEO

Las instrucciones INC y DEC permiten incrementar los contenidos de los registros y de las variables almacenadas en memoria. Ejemplos: INC AX ;AX=AX+1 INC VAR1 ;VAR1=VAR1+1 DEC AX ;AX=AX-1 DEC VAR1 ;VAR1=VAR1-1

INSTRUCCIONES LOOP

permite la programacin de ciclos finitos. LOOP Esta instruccin trabaja en forma conjunta con el registro contador CX. El formato general de esta instruccin es: Mov CX,No_Veces Etiqueta: ------Loop Etiqueta La instruccin LOOP ejecuta las instrucciones que se encuentran entre la Etiqueta: y Loop Etiqueta el numero de veces que indique el campo No_Veces. Por ejemplo, el siguiente grupo de instrucciones incrementa en 1 el registro AX, esto lo repite 10 veces. Mov CX,10 ;10 veces Otro: Inc AX ; AX=AX+1 Loop Otro La instruccin Loop decrementa el registro CX en cada iteracin y se detiene cuando CX es igual a cero.

INSTRUCCIONES DEL STACK

La pila es un grupo de localidades de memoria que se reservan con la finalidad de proporcionar un espacio para el almacenamiento temporal de informacin. La pila de los programas es del tipo LIFO (Ultimo en entrar, Primero en salir). Para controlar la pila el microprocesador cuenta con dos instrucciones bsicas: Push (Meter) y Pop (sacar). El formato de estas instrucciones es el siguiente: Push operando Pop operando Push AX ;Pila=5 Pop BX ;BX=5

Cuando se ejecuta la instruccin Push, el contenido del operando se almacena en la ultima posicin de la pila.

INSTRUCCIONES LOGICAS

INSTRUCCIONES DE CARGA

CONCLUSIONES
Trabaja directamente con el microprocesador al ejecutar un programa, como este lenguaje es el mas cercano a la mquina la computadora lo procesa mas rpido. Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargar libreras como lo hacen los lenguajes de alto nivel. Uno de los limitantes es el 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.

También podría gustarte