18
La primera abstracción de la máquina para el programador Tema 3: Lenguaje ensamblador

Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Embed Size (px)

Citation preview

Page 1: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

La primera abstracción de la máquina para el programador

Tema 3: Lenguaje ensamblador

Page 2: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Índice

• Introducción.

• Generación código máquina: ensamblador,

montador y cargador.

• Instrucciones y directivas.

• Macros y subrutinas.

• Interfaz binario de aplicación (ABI).

• Convenios de llamada a procedimientos.

Page 3: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

¿Qué es?

Mnemónicos para instrucciones, símbolos en lugar de bits, etiquetas en lugar de direcciones, macros en lugar de repetir.

• Lenguaje: notación formal para describir

algoritmos que serán ejecutados por un

compilador.

• Lenguaje ensamblador: representación

simbólica del lenguaje máquina permitiendo

que sea más legible y fácil de utilizar.

Page 4: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Traductores

inicio:

movf I,W

subwf J,W

btfss STATUS,C

goto JmI

movf G,W

addwf H,W ;sumagoto fin ;hemos terminado

JmI: movf G,W

subwf H,W

fin: movwf RESULT

sleep

080C

020D

1D83

2807

080F

070E

2809

080F

070E

0090

0063

Lenguajeensamblador

Lenguajemáquina

* Las instrucciones empleadas son del lenguaje ensamblador de los microcontroladores PIC de Microchip.

Page 5: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Elementos del lenguaje ensamblador

inicio:

movf I,W

subwf J,W

btfss STATUS,C

goto JmI

movf G,W

addwf H,W ;sumagoto fin ;hemos terminado

JmI: movf G,W

subwf H,W

fin: movwf RESULT

sleep

Etiquetas

Símbolos

Mnemónicos

Comentarios

Page 6: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Ensamblador

Primera pasada

Segundapasada

Listado delprograma

Ficheroobjeto

Tabla desímbolos

Page 7: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Ensamblador

Montador y Cargador

Fuente 1

Objeto 1

Montador

Fuente 2

Objeto 2

Fuente 3

Objeto 3

Ejecutable Cargador

Page 8: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

inicio_bucle: addwf a,W ;Comienzo del bucle

Formato de una sentenciaen ensamblador

• ETIQUETA: Nombre que se le asigna a una posición de la

memoria de programa. Empieza en la 1ª columna y suele ir

seguida de ':‘.

• MNEMÓNICO: Representación simbólica del campo de

operación (COP).

• OPERANDOS: Representados por símbolos o constantes,

separados por comas.

• COMENTARIOS: Comienzan con ';‘.

Page 9: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Tipos de sentencias

• Instrucciones simbólicas del lenguaje máquina.

o Corresponden con instrucciones del repertorio de

instrucciones (ISA).

o Son ejecutadas por el computador.

• Directivas o pseudoinstrucciones.

oNo tienen traducción en lenguaje máquina.

o Controlan la operación del programa ensamblador

y la generación del programa en lenguaje máquina.

• Comentarios.

o Forman parte de los archivo fuente tipo texto.

oNo tienen traducción en lenguaje máquina.

o Facilitan la comprensión del código.

Page 10: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Tipos de directivas

• De control: Compilación condicional.

• De datos: Asignación de memoria, símbolos.

• De formato de informes.

• De definición de macros.

• Para la creación de archivos objeto.

Page 11: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Directivas de control

#include “p16f84.inc”

ifndef DEBUG

...

endif

if NIVEL_LOG > 5

...

endif

• Permiten compilar código de forma condicional.

• Permiten incluir otros archivos.

Page 12: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Directivas de datos

STATUS equ 0x03

regs equ 0x0c

cblock regs

I,; I vale 0x0CJ ; J vale 0x0D

endc

org 0x10

btfsc STATUS,2

main:movf I,0

addwf J,1

goto main

Determina la dirección de

• Permiten controlar la ubicación de datos e instrucciones

en la memoria.

• Permiten hacer referencia a operandos de forma

simbólica.

Page 13: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Macros

• Permiten asignar nombre a una secuencia de instrucciones:

o Cuando se referencia, se produce una sustitución (expansión)

de la macro.

o No existe un salto a la macro, sino copias de la secuencia de

instrucciones.

o Aumenta la longitud del programa.

o No requieren llamada ni retorno.

o ¡Cuidado con los saltos a/desde una macro!

Page 14: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

movlw MAX_LUZ & 0xff

subwf nivel_luz, W

btfsc STATUS,C

goto apagar_luz

movlw MAX_LUZ & 0xff

subwf nivel_luz, W

btfsc STATUS,C

goto apagar_luz

jge nivel_luz, MAX_LUZ, apagar_luz

Ejemplo de macro

jge macro reg,cte,dest

movlw cte & 0xff

subwf reg,W

btfsc STATUS,C

goto dest

endm

jge nivel_luz, MAX_LUZ, apagar_luz

movlw MAX_LUZ & 0xff

subwf nivel_luz, W

btfsc STATUS,C

goto apagar_luz

jge nivel_luz, MAX_LUZ, apagar_luz

Page 15: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Literales y expresiones

Tipo Sintaxis Ejemplo

Decimal D'<dígitos>' D'100'

Hexadecimal H'<dígitos>' H'F5'

0x<dígitos>' 0xf5

Octal O'<dígitos>' O'206'

Binario B'<dígitos>' B'100'

ASCII A'<dígitos>' A'o'

• Cadenas de caracteres entre comillas.

• Constantes numéricas en distintas bases:

• Operadores: $, aritméticos, high, low

Page 16: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Subrutinas

• Conjunto de instrucciones que implementan una función

bien definida (funciones o procedimientos).

o Unidad básica de abstracción.

o Elemento básico de reutilización de código.

o Hacen el código más estructurado, entendible y facil de

utilizar.

• Se implementan almacenando el PC en la pila.

o call salva el PC en la pila.

o return y semejantes, lo recuperan.

Page 17: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Ejemplo de subrutina

org 0

call proc

goto $

proc: movf I,W

subwf J,W

btfsc STATUS,Z

goto L1

movf G,W

addwf H,W

movwf F

L1: movf F,W

subwf I,W

movwf RET

return

Page 18: Tema 3: Lenguaje ensamblador - esi.uclm.es · etiquetas en lugar de direcciones, macros en lugar de repetir. ... algoritmos que serán ejecutados por un compilador. ... * Las instrucciones

Conceptos importantes

• Estructura general de sentencias ensamblador.

• Pseudoinstrucciones o directivas.

• Definición y utilitzación de macros.

• Definición y utilización de subrutinas.

• Empleo de la pila de en llamadas a subrutinas.