Documentos de Académico
Documentos de Profesional
Documentos de Cultura
- 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.
ENSAMBLADOR
software
Macro ensamblador Lenguaje de Alto Nivel
traduce
Lenguaje de Mquina
traducir
Programa en lenguaje ensamblador
nico Medio
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
SOFTWARE
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)
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
. .
2 1 0
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
SI Registro ndice fuente DI Registro ndice destino IP Registro de apuntador de siguiente instruccin F Registro de banderas
REGISTROS
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.
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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.
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)
Registro
EA = R
No referencia a memoria
extra
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.
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
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
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
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.
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.
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
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
Registro Base
Registro Base
Registro ndice s
des
Con actualizacin
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 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.
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.