Lenguaje ensamblador

12
LENGUAJE ENSAMBLADOR

Transcript of Lenguaje ensamblador

LENGUAJE ENSAMBLADOR

Movimiento(Bsico)

Nota: esta plantilla de vdeo est optimizada para Microsoft PowerPoint 2010.En PowerPoint 2007, los elementos de vdeo se reproducirn, pero el contenido que se superponga a las barras de vdeo aparecer cubierto por el vdeo en el modo de presentacin.En PowerPoint 2003, el vdeo no se reproducir, pero el marco de pster de los vdeos se conservar como imgenes estticas.

El vdeo:Se reproduce automticamente tras cada transicin de diapositiva.Tiene una duracin de 15 segundos.Entra en bucle para una reproduccin infinita.

Para agregar diapositivas o modificar el diseo:Para agregar una nueva diapositiva, en la ficha Inicio, en el grupo Diapositivas, haga clic en la flecha situada debajo de Nueva diapositiva y, a continuacin, en Tema de fondo en movimiento seleccione el diseo deseado.Para modificar el diseo de una diapositiva existente, en la ficha Inicio, en el grupo Diapositivas, haga clic en Diseo y, a continuacin, seleccione el diseo deseado.

Otros elementos animados:Los elementos animados que inserte se iniciarn despus de la transicin de la diapositiva y tras iniciar el vdeo de fondo.

1

CONTENIDODefinicinCaractersticasVentajasDesventajasInstruccionesRegistrosEjemplo

DEFINICIN

Consiste en un conjunto de mnemnicos que representan instrucciones bsicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables.

Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador.

3

CARACTERSTICAS

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel.Difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente.Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel.Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel.Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.

4

VENTAJAS

Como trabajadirectamentecon el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la mquina la computadora lo procesa mas rpido.

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

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

5

DESVENTAJAS

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.

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.

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

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.

6

INSTRUCCIONES

ARITMTICAS:Se usa para la realizar operaciones aritmticas sobre los operandos.ADD: Suma los operandos y guarda el resultado en el operando destino.SUB: Resta el operando fuente del destino.DIV: El divisor puede ser un byte o palabra y es el operando que se la da instruccin.IDIV: Consiste basicamente en lo mismo que la instruccin DIV, solo que esta ultima realiza la operacin con signo.MUL: El ensambldor asume que el multiplicando sera del mismo tamao que el del multiplicador, por lo tanto multiplica el valor almacenado en el registro que se le da como operando por el que se encuentre contenido en AH si el multiplicador es de 8 bits o por AX si el multplicador es de 16 bits.

LGICAS:Son utilizadas para realizar operaciones lgicas sobre los operandos.AND: Con esta instruccin se lleva a cabo la operacin "y" lgica de los dos operandos.OR: Lleva a cabo, bit por bit, la disyuncin inclusiva lgica de los dos operandos .XOR: Su funcin efectuar bit por bit la disyuncin exclusiva lgica de los dos operandos.TEST: Realiza una conjuncin, bit por bit, de los operandos, pero a diferencia de AND esta instruccin no coloca el resultado en el operando destino, solo tiene efecto sobre el estado de las banderas.NEG: Esta instruccin genera el complemento a 2 del operando destino y lo almacena en este mismo operando.NOT: Lleva a cabo la negacin bit por bit del operando destino

7

INSTRUCCIONES

TRANSFERENCIA:Son utilizadas para mover los contenidos de los operandos. Cada instruccin se puede usar con diferentes modos de direccionamiento.MOV: Transferencia de datos entre celdas de memoria, registros y acumulador.MOVS: Mover cadenas de bytes o palabras desde la fuente, direccionada por SI, hasta el destino direccionado por DI.

CARGA:Son instrucciones especficas de los registros. Son usadas para cargar en algn registro bytes o cadenas de bytes.LODS: Toma la cadena que se encuentre en la direccin especificada por SI, la carga al registro AL (o AX) y suma o resta 1 (segun el estado de DF) a SI si la transferencia es de bytes o 2 si la transferencia es de palabras.LAHF: Esta instruccin es til para verificar el estado de las banderas durante la ejecucin de nuestro programa.LDS: El operando fuente debe ser una palabra doble en memoria. La palabra asociada con la direccin mas grande es transferida a DS, o sea que se toma como la direccin del segmento. La palabra asociada con la direccin menor es la direccin del desplazamiento y se deposita en el registro sealado como destino.LEA: El operando fuente debe estar ubicado en memoria, y se coloca su desplazamiento en el registro ndice o apuntador especificado en destino.LES: El operando fuente debe ser un operando en memoria de palabra doble. El contenido de la palabra con la direccin mayor se interpreta como la direccin del segmento y se coloca en ES. La palabra con la direccin menor es la direccin del desplazamiento y se coloca en el registro especificado en el parmetro destino.

8

INSTRUCCIONES

PILA:Estas instruciones permiten el uso de la pila para almacenar y extraer datos.POP: Esta instruccin transfiere el ltimo valor almacenado en la pila al operando destino,despues incrementa en dos el registro SP.POPF: Este comando transfiere bits de la palabra almacenada en la parte superior de la pilahacia el registro de banderas.PUSH: La instruccin PUSH decrementa en dos el valor de SP y luego transfiere elcontenido del operando fuente a la nueva direccin resultante en el registro recinmodificado.PUSHF: Decrementa en 2 el valor del registro SP y luego se transfiere elcontenido del registro de banderas a la pila, en la direccin indicada por SP.

9

REGISTROS

Registros de uso general

AX: Acumulador (AL:AH)BX: Registro base (BL:BH)CX: Registro contador (CL:CH)DX: Registro de datos (DL:DH)Registros de segmentoDS: Registro del segmento de datosES: Registro del segmento extraSS: Registro del segmento de pilaCS: Registro del segmento de cdigoRegistros punteros

BP: Registro de apuntadores baseSI: Registro ndice fuenteDI: Registro ndice destinoRegistros especiales

SP: Registro apuntador de la pilaIP: Registro apuntador de la siguiente instruccinF: Registro de banderas (8 bits)

10

REGISTROS

Bits del registro de banderas

OverflowNV (Apagado): No hay desbordamientoOV (Encendido): Si lo hay

DirectionUP: Hacia adelanteDN: Hacia atras

InterruptsDI: DesactivadasEI: Activadas

SignPL: PositivoNG: Negativo

ZeroNZ: No es ceroZR: Si lo esAuxilary carryNA: No hay acarreo auxiliarAC: Hay acarreo auxiliar

ParityPO: ImparPE: Paridad par

CarryNC: No hay acarreoCY: Si lo hay

11

EJEMPLOS:

Es un ejemplo del programa clsico Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS).; ---------------------------------------------; Programa que imprime un string en la pantalla; ---------------------------------------------.model small ; modelo de memoria.stack ; segmento del stack.data ; segmento de datosCadena1 DB 'Hola Mundo.$' ; string a imprimir (finalizado en $).code ; segmento del cdigo; ---------------------------------------------; Inicio del programa; ---------------------------------------------programa:; ------------------------------------------------------------------------------; inicia el segmento de datos; -----------------------------------------------------------------------------MOV AX, @data ; carga en AX la direccin del segmento de datosMOV DS, AX ; mueve la direccin al registro de segmento por medio de AX; ------------------------------------------------------------------------------; Imprime un string en pantalla; ------------------------------------------------------------------------------MOV DX, offset Cadena1 ; mueve a DX la direccin del string a imprimirMOV AH, 9 ; AH = cdigo para indicar al MS DOS que imprima en la pantalla, el string en DS:DXINT 21h ; llamada al MS DOS para ejecutar la funcin (en este caso especificada en AH); ------------------------------------------------------------------------------; Finaliza el programa; ------------------------------------------------------------------------------INT 20h ; llamada al MS DOS para finalizar el programaend programa

12