Clase10 2-lenguaje ensamblador

Post on 15-Apr-2017

109 views 4 download

Transcript of Clase10 2-lenguaje ensamblador

Contenido1. Definición

2. Historia

3. Componentes

4. Software Utilizado

5. Registros

6. Instrucciones

7. Ejemplos

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

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

2. historia

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

5

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

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

Etiquetas

Instrucciones

Operandos

Directivas

Comentarios

7

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

instrucciones

Las instrucciones son las operaciones

que realiza el microcontrolador, así que esta

s ya están definidas para cada familia de

PIC.

9

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

Microcontrolador PIC

11

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

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

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

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

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

4. Software ENS2001

17

4. Software MASM

18

4. Software TAST

19

Ejemplo

Hola alumno

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

5. registros

Se trata de una serie de "variables", que

contienen información que puede ser

cambiada.

22

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

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

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

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

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

6. instruccionesSe pueden clasificar en los siguientes grupos:

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

28

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

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

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

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

INSTRUCCIONES aritméticas

Son efectuada por la

Unidad Aritmeto – logica (ALU) y suelen

cambian los flags o indicadores de

condición.

33

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

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

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

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

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

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

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

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

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

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

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