clase10 2-lenguaje ensamblador

44

Upload: infomania-pro

Post on 15-Apr-2017

111 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Clase10 2-lenguaje ensamblador
Page 2: Clase10 2-lenguaje ensamblador

Contenido1. Definición

2. Historia

3. Componentes

4. Software Utilizado

5. Registros

6. Instrucciones

7. Ejemplos

Page 3: Clase10 2-lenguaje ensamblador

1. definicionEl término ensamblador (del inglés assembler) se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente

escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se

ha generado.

El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en

código binario, que es el único código entendible por la computadora, es en la práctica imposible.

La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa

ensamblador hacia lo que se conoce como programa compilador.

3

Page 4: Clase10 2-lenguaje ensamblador

2. historiaEl primer compilador fue escrito por Grace Hopper, en 1952 para el

lenguaje de programación A-0.

En 1950 John Backus dirigió una investigación en IBM sobre un lenguaje algebraico.

En 1954 se empezó a desarrollar un lenguaje que permitía escribir fórmulas matemáticas de manera traducible por un ordenador; le

llamaron FORTRAN (FORmulae TRANslator).

Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la computadora IBM modelo 704.

4

Page 5: Clase10 2-lenguaje ensamblador

2. historia

El primer compilador de FORTRAN tardó 18 años-persona en realizarse y era muy sencillo

5

Page 6: Clase10 2-lenguaje ensamblador

2. historiaEl primer compilador autocontenido, es decir, capaz de compilar su

propio código fuente fue el creado para Lisp por Hart y Levin en el MIT en 1962. Desde 1970 se ha convertido en una práctica común escribir el compilador en el mismo lenguaje que este compila, aunque Pascal y C

han sido alternativas muy usadas.

Crear un compilador autocontenido genera un problema llamado bootstrapping, es decir el primer compilador creado para un lenguaje

tiene que o bien ser compilado por un compilador escrito en otro lenguaje o bien compilado al ejecutar el compilador en un intérprete.

6

Page 7: Clase10 2-lenguaje ensamblador

3. componentesLos elementos básicos del lenguaje ensamblador son:

Etiquetas

Instrucciones

Operandos

Directivas

Comentarios

7

Page 8: Clase10 2-lenguaje ensamblador

etiquetasUna etiqueta es una palabra utilizada para designar alguna línea o secci

ón del programa, se pueden utilizar para saltar de una parte hacia esa

etiqueta.

Es importante que las etiquetas empiecen con una letra o con un guión

bajo "_". La longitud de una etiqueta puede ser de hasta 32 caracteres y

como ya se dijo se deben escribir en la primer columna.

8

Page 9: Clase10 2-lenguaje ensamblador

instrucciones

Las instrucciones son las operaciones

que realiza el microcontrolador, así que esta

s ya están definidas para cada familia de

PIC.

9

Page 10: Clase10 2-lenguaje ensamblador

Microcontrolador PICLos PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument.

El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como Peripheral Interface Controller (controlador de interfaz periférico)*.

10

Page 11: Clase10 2-lenguaje ensamblador

Microcontrolador PIC

11

Page 12: Clase10 2-lenguaje ensamblador

operandos

Son los elementos que emplea la instru

cción que se está ejecutando. Usualmen

te los operandos son los registros, las

variables o las constantes.

12

Page 13: Clase10 2-lenguaje ensamblador

directivasLas directivas son similares a las instrucciones, pero a diferencia de

estas las directivas

son propias del lenguaje ensamblador e independientes del microcontr

olador que se utilice.

Las directivas representan algunas características del lenguaje ensambl

ador, se utilizan

para especificar el procesador empleado así como la configuración de e

ste, también para asignar locaciones de memoria.

13

Page 14: Clase10 2-lenguaje ensamblador

comentarios

Los comentarios son las palabras, frases y oracione

s que se pueden escribir en el código para hacer el

programa más claro y legible, o solo para recordar.

Los comentarios se pueden escribir en cualquier

parte del código pero siempre deben

empezar con punto y coma ";".

14

Page 15: Clase10 2-lenguaje ensamblador

4. Software editores

Un programador escribe el programa origen en

lenguaje ensamblador utilizando cualquier editor de

textos o procesador de palabras que sea capaz de

producir una salida de texto en ASCII. Una vez que el

código origen ha sido escrito, el archivo origen es

ensamblado mediante su procesamiento a través de

algún ensamblador.

15

Page 16: Clase10 2-lenguaje ensamblador

4. Software reglas de programaciónPara la programación se utiliza una cierta tabulación que se debe respetar, además utilizar una tabulación adecuada hace los programas más claros y legibles.

Las etiquetas se escriben en la primer columna de cualquier línea, las instrucciones y directivas en la segunda y por último, en la tercer columna, los operandos.

Los comentarios

se pueden escribir en cualquier parte del programa.

16

Page 17: Clase10 2-lenguaje ensamblador

4. Software ENS2001

17

Page 18: Clase10 2-lenguaje ensamblador

4. Software MASM

18

Page 19: Clase10 2-lenguaje ensamblador

4. Software TAST

19

Page 20: Clase10 2-lenguaje ensamblador

Ejemplo

Hola alumno

Page 21: Clase10 2-lenguaje ensamblador

4. Software MASM Y TLINK

El Turbo Assembler (TASM) un paqueteensamblador principalmente destinado a laplataforma del IBM PC y sus compatibles.

El enlazador o linkador LINK permiteconvertir el código objeto generado porTASM en archivo ejecutable de tipo EXE*.*empleando el ML de MASM 6.X se obtiene directamente el fichero EXE ya queinvoca automáticamente al linkador.

21

Page 22: Clase10 2-lenguaje ensamblador

5. registros

Se trata de una serie de "variables", que

contienen información que puede ser

cambiada.

22

Page 23: Clase10 2-lenguaje ensamblador

REGISTROS IP Y CSEl registro CS es una variable de un tamaño dedos bytes. Contiene el Segmento actual en quese encuentra el programa.

El registro IP es la variable, de dos bytestambién, que contiene el Offset actual. Estosignifica, el ordenador va interpretando lassecuencias de bytes, pero necesita "algo" que leindique donde tiene que leer.

23

Page 24: Clase10 2-lenguaje ensamblador

COMBINACION DE REGISTROS IP Y CSLa combinación CS:IP contiene la dirección en la que elordenador está interpretando información en elmomento. Indica la dirección de la próxima instrucción quese va a ejecutar.

El registro DS y el registro ES también sirven para guardardirecciones de Segmentos, y también son variables de dosbytes, pueden ser utilizados para por ejemplo moverdatos en memoria, imprimir cadenas, etc. Son"punteros", que apuntan a cierta zona de memoria. Elregistro SS apunta a la pila, y el SP es el que contiene eloffset de la pila.

24

Page 25: Clase10 2-lenguaje ensamblador

REGISTROS AX,BX,CX,DXTodos ocupan dos bytes, y se pueden utilizar divididos en dos partes con un byte de longitud.

◦ AX se divide en AH y AL

◦ BX en BH y BL

◦ CX en CH y CL

◦ DX en DH y DL.

AX

|-----------------------------|

11010110 10111000

AH AL

La 'H' se refiere a High en inglés, alto (de mayor valor), y la 'L' a Low (de menor valor).

25

Page 26: Clase10 2-lenguaje ensamblador

REGISTROSAX y BXAX se suele utilizar como propósito general, indica función a lasinterrupciones, etc., y es el más flexible, ya que ser el único quepermita multiplicaciones y divisiones. Se denomina a vecesacumulador. Realiza operaciones como entrada/salida de datos,ultiplicación, división, operaciones con decimales codificados en binario,etc.

BX nos servirá mucho como "handler", para abrir/cerrar archivos,etc, y como registro de propósito general al igual que AX, CX y DX.Funciona como registro Base, en algunas ocasiones, parareferenciar direcciones de memoria En estos casos mantiene ladirección de base, comienzo de tabla o matrices, en la que la direcciónse determina usando valores de desplaza- miento.

26

Page 27: Clase10 2-lenguaje ensamblador

REGISTROScX y dXCX se suele usar como contador. Es decir, cuenta el número de bits opalabras en una determinada cadena de datos durante losoperaciones con cadenas.

◦ Ej: Si se va a mover de un área de memoria a otra n palabras, CX mantiene inicialmente elnúmero total de palabras a desplazar llevando la cuenta de la palabra o byte que va siendotrasladada.

DX suele ser el puntero, señalando haciendo el papel de Offsetlugares en memoria. Se usa en la multiplicación para mantenerparte del producto de 32 bits o en las divisiones para antener elvalor del resto. Y en operaciones de Entrada/Salida de datos paraespecificar la dirección del puerto de E/S usado.

27

Page 28: Clase10 2-lenguaje ensamblador

6. instruccionesSe pueden clasificar en los siguientes grupos:

De Transferencia.Aritméticos. Lógicos. De salto.

28

Page 29: Clase10 2-lenguaje ensamblador

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

29

Page 30: Clase10 2-lenguaje ensamblador

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

SINTAXIS:

PUSH: reg16

PUSH: mem16

Ejemplo: PUSH: CX

PUSH: TABLA (SI)

30

Page 31: Clase10 2-lenguaje ensamblador

INSTRUCCIONES DE TRANSFERENCIA popPOP: Extrae de la cima de la pila el valor de 16 bits almacenado,depositándolo en la dirección de memoria indicada y a diferenciadel PUSH incrementa el puntero de la pila en dos bytes,igualmente se debe tener en cuenta que no se debe rescatarvalores para los registros CS e IP ya que estos deben sermodificados por las instrucciones de salto.

SINTAXIS:

PUSH: reg16

PUSH: mem16

Ejemplo: POP: DX

POP: [BX]

31

Page 32: Clase10 2-lenguaje ensamblador

INSTRUCCIONES DE TRANSFERENCIA xchgXCHG: (Intercambio): Consta de dos operandos e intercambiasus valores por lo que modifica los operandos a no ser quetengan idéntico valor, cabe recalcar que no se permite que losoperandos estén los dos en la misma memoria.

SINTAXIS: XCHG destino, origen

Indicadores:

Ejemplo: XCHGN: bl, ch

XCHGN: mem pal, bx

32

Page 33: Clase10 2-lenguaje ensamblador

INSTRUCCIONES aritméticas

Son efectuada por la

Unidad Aritmeto – logica (ALU) y suelen

cambian los flags o indicadores de

condición.

33

Page 34: Clase10 2-lenguaje ensamblador

INSTRUCCIONES aritméticasincINC: Incrementa. Suma 1 al contenido de un registro o de una posición dememoria, dicho contenido puede ser byte o palabra.

SINTAXIS: INC destino

Indicadores: OF DF IF TF SF ZF AF PF CF

Ejemplo: INC AX ; AX = AX+1

INC DL ; DL = DL +1

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

; es ES: DI+4

34

Page 35: Clase10 2-lenguaje ensamblador

INSTRUCCIONES aritméticasdecDEC: Decrementa. resta 1 al contenido de un registro o de una posiciónde memoria, dicho contenido puede ser byte o palabra.

SINTAXIS: DEC destino

Indicadores: OF DF IF TF SF ZF AF PF CF

Ejemplo: DEC AX ; AX = AX+1

DEC DL ; DL = DL-1

DEC WORD PTR ES: [DI+4] ; Decrem. Byte contenido;en ES: DI+4

35

Page 36: Clase10 2-lenguaje ensamblador

INSTRUCCIONES aritméticassub

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

SINTAXIS:

SUB op_destino, op_fuente ; sintaxis básica.

Ejemplo: SUB al, bl

SUB dx,dx

36

Page 37: Clase10 2-lenguaje ensamblador

INSTRUCCIONES LOGICASEn este grupo se incluyen las instrucciones de conjunción,

disyunción, exclusiva y negación, la aplicación practica no es de

siempre sin embargo suelen estar presentes en la mayoría de

los programas.

37

Page 38: Clase10 2-lenguaje ensamblador

INSTRUCCIONES LOGICASandAND: Realiza una operación de “Y” lógico entre el operando origen y el

operando destino quedando el resultado en el operando destino.

SINTAXIS:

AND destino, origen

Ejemplo: AND AX,BX ; AX = AX AND BX

AND SI,ES:[DI] ; SI=SI AND ES:[DI]

AND BX,0A34H ; BX=BX AND 0A34H

AND ES:[BX], CX ; ES: [BX] = ES: [BX] AND CX

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

38

Page 39: Clase10 2-lenguaje ensamblador

INSTRUCCIONES LOGICASorOR: 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:

OR destino, origen

Ejemplo: OR AL,BL ; AL = AL OR BL

OR DI:[BX] ; DI=DI OR [BX]

OR CL,34 ; CL=CL OR 34

OR [DI], BX ; [DI] = [DI] OR BX

OR BYTE PTR [DI],8 ; [DI] = [DI] OR 8

39

Page 40: Clase10 2-lenguaje ensamblador

INSTRUCCIONES LOGICASxorXOR: 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:

XOR destino, origen

Ejemplo: XOR CX,BX ; CX = CX XOR BX

XOR DI,ES:[SI] ; DI= DI XOR ES:[SI]

XOR AX,4500H ; AX=AX XOR 4500H

XOR [BX], AX ; [BX] = [BX] XOR AX

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

40

Page 41: Clase10 2-lenguaje ensamblador

INSTRUCCIONES de saltoSirven para que el procesador, en lugar de

ejecutar la siguiente instrucción , pase a

ejecutar otra en lugar que se denomina

“destino de salto”.

41

Page 42: Clase10 2-lenguaje ensamblador

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

SINTAXIS:

JMP dirección o JMP SHORT dirección

Ejemplos: JMP 100H ; Salta a CX:100h

JMP 55AAH:100H ; Salto lejano a otro segmento

JMP WORD PTR [BX] ; Salto a la dirección contenida en; la dirección de memoria especificada

; por BX (salto indirecto)

JMP REPITE ; Salto a la etiqueta REPITE

42

Page 43: Clase10 2-lenguaje ensamblador

INSTRUCCIONES de saltocallCALL: El efecto de esta instrucción es similiar a la de saltoincondicional con la diferencia de que el procesador guardaciertos datos en lugares para facilitar el retorno una vezterminada la ejecución de la subrutina.

SINTAXIS:

CALL destino

43

Page 44: Clase10 2-lenguaje ensamblador

LAB1 50%>.: Tarea 1 - GUIA DE EJERCICIOS 02-Junio

Investigar que otras instrucciones hay disponibles para ensamblador y desarrolle 6 ejemplos donde se utilicen estas.

Tarea:

1. Traer los archivos de código fuente escritos en su cuaderno

2. Presentar los archivos en digital listo para ser compilador en una memoria usb

3. El docente seleccionara uno para que lo explique a sus compañeros

4. Individual