lenguaje ensamblador

27
UNIVERSIDAD POLITÉCNICA AMAZÓNICA LENGUAJE ENSAMBLADOR DOCENTE: o MARCO PORRO INTEGRANTES: o ALTAMIRANO CORDOVA, Sheylly Nathaly. o CHAVEZ CHAPA, Sady Yubitza. CURSO: o MICROPROCESADORES

Upload: sheylly-nathaly-altamirano-cordova

Post on 19-Jan-2017

121 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Lenguaje ensamblador

UNIVERSIDAD POLITÉCNICAAMAZÓNICALENGUAJE

ENSAMBLADOR

DOCENTE:o MARCO PORRO

INTEGRANTES:o ALTAMIRANO CORDOVA, Sheylly

Nathaly.o CHAVEZ CHAPA, Sady Yubitza.CURSO:o MICROPROCESADO

RES

Page 2: Lenguaje ensamblador

DEFINICIÓN CARACTERISTI

CAS

LENGUAJE ENSAMBLA

DOR

VENTAJAS Y

DESVENTAJAS

INSTRUCCIONES Y

REGISTROS EJEMPLO

S

Page 3: Lenguaje ensamblador

DEFINICIÓN:• El lenguaje ensamblador, o assembler (en inglés assembly language y la

abreviación asm), es un lenguaje de programación de bajo nivel.

• Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores microprocesadores, microcontroladores y otros circuitos integrados programables.

• Implementa una representación simbólica de los códigos de maquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador.

• Cada  arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos  que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje

Page 4: Lenguaje ensamblador

CARACTERÍSTICAS: El código escrito en lenguaje ensamblador posee una cierta

dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.

El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta.

Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel.

Page 5: Lenguaje ensamblador

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 código difíciles ,debido a que dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel.

También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución

El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado sobre un archivo de programación (.ASM), en el cual pueden existir varios programas, macros o rutinas que pueden ser llamados entre sí.

Page 6: Lenguaje ensamblador

VENTAJAS: Como trabaja directamente con el microprocesador al ejecutar un

programa, pues como este lenguaje es el más cercano a la máquina la computadora lo procesa más rápido.

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.

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 específicas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite. 

Page 7: Lenguaje ensamblador

DESVENTAJAS: Tiempo de ejecución: Como es un lenguaje de bajo nivel requiere más

instrucciones para realizar un proceso. 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.

Programas fuente grandes: Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.

Peligro de afectar recursos inesperadamente : Todo error que podamos cometer, o todo riesgo que podamos tener, puede afectar los recursos de la máquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialice.

Falta de portabilidad: Porque para cada máquina existe un lenguaje ensamblador.

Page 8: Lenguaje ensamblador

INSTRUCCIONES:

DE TRANSFEREN

CIA

ARITMETICAS

LÓGICAS

DE SALTO

Page 9: Lenguaje ensamblador

DE TRANSFERENCIA:Este grupo de instrucciones se utiliza para efectuar la transferencia

de datos, copian datos de un origen a un destino sin modificar dicho origen. Pueden transferir palabras, fracciones de palabras, o bloques completos.

PUSH: Guarda en la cima de la pila 16 bits, decrementando el puntero de la pila en dos bytes, hay que tener en cuenta que no se puede guardar en la pila el contenido del registro CS o el contenido del registro IP ya que estos deben ser modificados por las instrucciones de salto.

SINTAXIS EJEMPLO

PUSH: reg16PUSH: mem16

PUSH: CXPUSH: TABLA (SI)

Page 10: Lenguaje ensamblador

POP: Extrae de la cima de la pila el valor de 16 bits almacenado, depositándolo en la dirección de memoria indicada y a diferencia del PUSH incrementa el puntero de la pila en dos bytes, igualmente se debe tener en cuenta que no se debe rescatar valores para los registros CS e IP ya que estos deben ser modificados por las instrucciones de salto.

SINTAXIS EJEMPLOPUSH: reg16PUSH: mem16

POP: DX POP: [BX] 3

XCHG (Intercambio): Consta de dos operandos e intercambia sus valores por lo que modifica los operandos a no ser que tengan idéntico valor, cabe recalcar que no se permite que los operandos estén los dos en la misma memoria.

SINTAXIS EJEMPLOXCHG destino, origen indicadores

XCHGN: bl, ch XCHGN: mem pal, bx

Page 11: Lenguaje ensamblador

ARITMETICAS:Son efectuadas por la Unidad Aritmeto – logica (ALU) y suelen cambian los flags o indicadores de condición.

INC: Incrementa. Suma 1 al contenido de un registro o de una posición de memoria, dicho contenido puede ser byte o palabra.

SINTAXIS EJEMPLOINC destino Indicadores: OF DF IF TF SF ZF AF PF CF x - - - x x x x

INC AX : AX = AX+1 INC DL : DL = DL +1

INC WORD PTR ES: [DI+4]:Increm. Palabra contenida :es ES: DI+4

 

Page 12: Lenguaje ensamblador

DEC: Decrementa. resta 1 al contenido de un registro o de una posición de memoria, dicho contenido puede ser byte o palabra.

SINTAXIS EJEMPLODEC destino Indicadores: OF DF IF TF SF ZF AF PF CF x - - - x x x x

DEC AX : AX = AX+1 DEC DL : DL = DL-1DEC WORD PTR ES: [DI+4]; Decrem. Byte contenido en ; ES: DI+4

SUB: Resta el operando destino al operando origen, colocando dicho resultado en el operando destino, los operandos pueden tener signo siempre y cuando sean del mismo tipo byte o palabra.

SINTAXIS EJEMPLOSUB op_destino, op_fuente : sintaxis básica

SUB al, blSUB dx,dx

Page 13: Lenguaje ensamblador

LÓGICAS:En este grupo se incluyen las instrucciones de conjunción, disyunción, esxclusiva y negación, la aplicación práctica no es de siempre sin embargo suelen estar presentes en la mayoría de los programas.

AND: Realiza una operación de “Y” lógico entre el operando origen y el operando destino quedando el resultado en el operando destino.

SINTAXIS EJEMPLOAND destino, origen

AND AX,BX : AX = AX AND BX AND SI,ES:[DI] : SI=SI AND ES:[DI]AND BX,0A34H : BX=BX AND 0A34HAND ES:[BX], CX : ES: [BX] = ES: [BX] AND CX

AND BYTE PTR [SI+4],5 : [SI+4] = [SI+4] AND 5

 

Page 14: Lenguaje ensamblador

OR: Realiza una operación de “O” lógico a nivel de bits entre los dos operandos, almacenándose después dicho resultado en el operando destino.

SINTAXIS EJEMPLOOR destino, origen

OR AL,BL : AL = AL OR BL OR DI:[BX] : DI=DI OR [BX]OR CL,34 : CL=CL OR 34OR [DI], BX : [DI] = [DI] OR BXOR BYTE PTR [DI],8 : [DI] = [DI] OR 8

XOR: Realiza una operación de “O” exclusivo lógico a nivel de bits entre los dos operandos, almacenándose después dicho resultado en el operando destino. SINTAXIS EJEMPLO

XOR destino, origen XOR CX,BX : CX = CX XOR BXXOR DI,ES:[SI] : DI= DI XOR ES:[SI]XOR AX,4500H: AX=AX XOR 4500HXOR [BX], AX: [BX] = [BX] XOR AX

XOR BYTE PTR [SI+BX],50 : [SI+BX] = [SI+BX] XOR 50

Page 15: Lenguaje ensamblador

DE SALTO:Sirven para que el procesador, en lugar de ejecutar la siguiente instrucción, pase a ejecutar otra en lugar que se denomina “destino de salto”.

JMP: Realiza un salto de ejecución incondicional hacia la dirección o etiqueta especifica.

SINTAXIS EJEMPLOJMP dirección o JMP SHORT dirección

JMP     100H :Salta a CX:100hJMP 55AAH:100H: Salto lejano a otro segmento.JMP WORD PTR [BX]  : Salto a la dirección contenida, en memoria especificada (salto indirecto)JMP     REPITE :Salto a la etiqueta REPITE

Page 16: Lenguaje ensamblador

CALL: El efecto de esta instrucción es similar a la de salto incondicional con la diferencia de que el procesador guarda ciertos datos en lugares para facilitar el retorno una vez terminada la ejecución de la subrutina.

SINTAXIS EJEMPLOCALL destino El salto puede ser cercano o lejano

“ ' (1) Call a Sub procedure. Call printToDebugWindow("Hello World") ... ' The above statement passes control to the following Sub procedure. Sub printToDebugWindow(ByVal anyString As String) Debug.WriteLine(anyString) End Sub”

Page 17: Lenguaje ensamblador

REGISTROS:Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre.

Registros de propósito general

Registros de banderas

Registros de Puntero de instrucción

Registros de apuntadore

s

Registros de segmento

Registros de Pila

Page 18: Lenguaje ensamblador

REGISTROS DE SEGMENTO:Tiene 16 bits de longitud y facilita un área de memoria para

direccionamiento conocida como el segmento actual.

• El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS.

Registro CS

• La dirección inicial de un segmento de datos de programa es almacenada en el registro DS.

Registro DS: 

• El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos.

• El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS

Registro SS

• El registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.

Registros ES

Page 19: Lenguaje ensamblador

REGISTROS DE PROPÓSITO GENERAL:Los registros de propósito general AX, BX, CX y DX son los caballos de

batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El último byte de la izquierda es la parte “alta”, y el último byte de la derecha es la parte “baja”.

• El acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX

Registro AX

• Conocido como el registro base ya que es el único registro de propósito general que puede ser índice para direccionamiento indexado. También es común emplear el BX para cálculos.

Registro BX

• Conocido como el registro de datos. Algunas operaciones de entrada/salida requieren uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos.

Registro DX

Page 20: Lenguaje ensamblador

REGISTROS DE APUNTADORES:Los registros SP (apuntador de la pila) Y BP (apuntador de base) están

asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila. Registro SP. El apuntador de la pila de 16 bits está asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila.

El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP está asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se está ejecutando actualmente.

REGISTROS DE PUNTERO DE INSTRUCCIÓN:

Page 21: Lenguaje ensamblador

REGISTROS DE BANDERAS:Sirven para indicar el estado actual de la máquina y el resultado del

procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente. En resumen, los bits de las banderas comunes son como sigue:

• Indica desbordamiento de un bit de orden alto (más a la izquierda) después de una operación aritmética.

OF (Overflow, desbordamien

to): • Designa la dirección hacia la izquierda o hacia la derecha

para mover o comparar cadenas de caracteres.DF

(dirección): • Indica que una interrupción externa, como la entrada desde

el teclado, sea procesada o ignorada.

IF (interrupción)

: • Permite la operación del procesador en modo de un paso. Los programas

depuradores, como el DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo, para examinar el efecto de esa instrucción sobre los registros de memoria.

TF (trampa): 

Page 22: Lenguaje ensamblador

• Contiene el signo resultante de una operación aritmética (0 = positivo y 1 = negativo).SF (signo): 

• Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).ZF (cero):

• Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmética especializada.

AF (acarreo auxiliar): 

• Indica paridad par o impar de una operación en datos de 8 bits de bajo orden (más a la derecha).PF (paridad): 

• Contiene el acarreo de orden más alto (más a la izquierda) después de una operación aritmética; también lleva el contenido del último bit en una operación de corrimiento o de rotación.

CF (acarreo): 

Page 23: Lenguaje ensamblador

REGISTROS DE PILA:La pila es un área de memoria importante y por ello tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar a su contenido. Se usan como complemento al registro y son:

• Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila. Por lo general, el programador no debe alterar su contenido.

SP- Stack Point

er• Se usa como registro auxiliar. El programador

puede usarlo para su provecho.

BP- Base point

er

Page 24: Lenguaje ensamblador

EJEMPLOS :Ejemplo 1 Raíz cuadrada: org 100hsiguiente: inc r mov ax, r mul ax cmp ax, m jbe siguiente ;(r*r) MENOR O IGUAL a mdec rret ;Variables m dw 146r dw 0 ;Al final debe ser r=sqrt(m). 

Page 25: Lenguaje ensamblador

Ejemplo 2 Potencia: name "potencia" ;8 chars DOSorg 100h ;counter to 100hmov cx, num2 mov ax, num1inicio: mov bx,num1 mul bx ;ax = ax * bx loop inicio ;c-- mov num3,ax ;copiamos el resultadoret;Variables "db" para byte y "dw" para wordnum1 dw 0Ahnum2 dw 03hnum3 dw 0h

Page 26: Lenguaje ensamblador

Ejemplo 3 Arreglos:name "arreglo"org 100h;un areglo se puede acceder a travez de []mov cx, 9 ;cuantos elementos voy a recorrer, empezamos con el 9inicio: mov si, cx mov dl, v[si] cmp dl, mayor jng siguiente: mov mayor,dl siguiente: loop inicioretv db 1,32,64,32,98,12,5,21,91,38mayor db 0

Page 27: Lenguaje ensamblador