Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único...

27
1 Tema 6 Ensamblador

Transcript of Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único...

Page 1: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

1

Tema 6

Ensamblador

Page 2: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

2

Tema 6. Ensamblador

LENGUAJE MÁQUINA

El único lenguaje que entienden los microcontroladores es elformado por los ceros y unos del sistema binario, a este lenguajese le denomina lenguaje máquina.

Y los códigos de este lenguaje que forman las intrucciones sellaman códigos máquina.

Ejemplo: “11111000111010”

3 E 3 A

Page 3: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

3

Tema 6. Ensamblador

LENGUAJE ENSAMBLADOR

El lenguaje ensamblador es la forma de expresar las instrucciones de una forma más natural al ser humano y que, sin embargo, es muy cercana al microcontrolador porque cada una de sus instrucciones se corresponde con otra en código máquina que el microcontrolador es capaz de interpretar.

Utiliza nemónicos que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar con cada instrucción. Los nemónicos se corresponden con las iniciales del nombre de la instrucción en inglés.

Ejemplo: “11111000111010”

3 E 3 Aaddlw d’58’

Page 4: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

4

Tema 6. Ensamblador

PROGRAMA ENSAMBLADOR

El primer paso de un diseño basado en microcontrolador consiste en escribir el código fuente del programa en el lenguaje seleccionado. Posteriormente, si el lenguaje usado ha sido el ensamblador, se convierte a código ejecutable mediante el uso de un programa de ensamblador como el de la empresa Microchip, que se llama MPASM.

La depuración y simulación se realizarán mediante el simulador software MPSIM (entorno DOS) o el MPLAB (entorno Windows).

Page 5: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

5

Tema 6. EnsambladorPROGRAMA ENSAMBLADOR

El primer paso de un diseño basado en microcontrolador consiste en escribir el código fuente del programa en el lenguaje seleccionado. Posteriormente, si el lenguaje usado ha sido el ensamblador, se convierte a código ejecutable mediante el uso de un programa de ensamblador como el de la empresa Microchip, que se llama MPASM.

La depuración y simulación se realizarán mediante el simulador software MPSIM(entorno DOS) o el MPLAB (entorno Windows).

Page 6: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

6

Tema 6. Ensamblador

CÓDIGO FUENTE

El código fuente del lenguaje ensamblador está estructurado en columnas.

Cualquier texto que comience en la primera columna se consideraráuna etiqueta y será parte del campo de etiquetas.

Las siguientes tres columnas contienen el campo de instrucciones, el campo de datos y el campo de comentarios. Los comentarios deben empezar con punto y coma (;) y pueden ir también en la primera columna.

Page 7: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

7

Tema 6. Ensamblador

CÓDIGO FUENTE

Page 8: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

8

Tema 6. Ensamblador

CONSTANTES NUMÉRICAS Y ALFANUMÉRICAS

Decimal à D’<cantidad>’ d’<cantidad>’ .<cantidad>

Hexadecimal à H’<cantidad>’ h’<cantidad>’ 0x<cantidad> .<cantidad>H <cantidad>h

Binario à B’<cantidad>’ b’<cantidad>’

ASCII à A’<caracter>’ a’<caracter>’ ’<caracter>’

String à DT

o cadena de caracteres

Page 9: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

9

Tema 6. Ensamblador

OPERADORES ARITMÉTICOS

$

(

)

!

-

~

high

low

*

/

%

+

-

>=

>

<

<=

==

!=

=

Page 10: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

10

Tema 6. Ensamblador

JUEGO DE INSTRUCCIONES

35 instrucciones

Tipos de instrucciones:•de carga•aritméticas•lógicas•de bit•de salto•para manejo de subrutinas•especiales

Page 11: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

11

Tema 6. Ensamblador

INSTRUCCIONES DE CARGA

clrf fclrwmovlw kmovf f,dmovwf f

Page 12: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

12

Tema 6. Ensamblador

INSTRUCCIONES DE CARGA

Nemónico Descripción Flags afectados

clrf f clear f00 à (f)

Z

Ejemplo:clrf PORTB

00 à (PORTB)

Antes: (PORTB) = ¿? y Z=¿?Después: (PORTB) = 0x00 y Z=1

Page 13: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

13

Tema 6. Ensamblador

INSTRUCCIONES DE CARGA

Nemónico Descripción Flags afectados

clrw clear W00 à (W)

Z

Ejemplo:clrw

00 à (W)

Antes: (W) = ¿? y Z=¿?Después: (W) = 0x00 y Z=1

Page 14: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

14

Tema 6. Ensamblador

INSTRUCCIONES DE CARGA

Nemónico Descripción Flags afectados

movlw k move literal to Wk à (W)

Ninguno

Ejemplo:movlw 0x5A

0x5A à (W)

Antes: (W) = ¿?Después: (W) = 0x5A

Page 15: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

15

Tema 6. Ensamblador

INSTRUCCIONES DE CARGA

Nemónico Descripción Flags afectados

movf f,d move f(f) à (destino)

si d=0, destino=(W)si d=1, destino=(f)

Z

Ejemplo 1:movf PORTA,0

(PORTA) à (W)

Antes: (PORTA) = 0x1A, (W) = ¿? y Z=¿?Después: (PORTA) = 0x1A, (W) = 0x1A y Z=0

Ejemplo 2:movf FSR,1

(FSR) à (FSR)

Antes: (FSR) = 0x00 y Z=¿?Después: (FSR) = 0x00 y Z=1

Page 16: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

16

Tema 6. Ensamblador

INSTRUCCIONES DE CARGA

Nemónico Descripción Flags afectados

movwf f move W to f(W) à (f)

Ninguno

Ejemplo:movwf PORTB

(W) à (PORTB)

Antes: (PORTB) = ¿? y (W) = 0x4FDespués: (PORTA) = 0x4F y (W) = 0x4F

Page 17: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

17

Tema 6. Ensamblador

INSTRUCCIONES DE BIT

bcf f,bbsf, f,b

Page 18: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

18

Tema 6. Ensamblador

INSTRUCCIONES DE BIT

Nemónico Descripción Flags afectados

bcf f,b bit clear fPone a 0 el bit “b” del registro “f”

Ninguno

Ejemplo:bcf PORTB,7

Antes: (PORTB) = 11111111Después: (PORTB) = 01111111

Page 19: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

19

Tema 6. Ensamblador

INSTRUCCIONES DE BIT

Nemónico Descripción Flags afectados

bsf f,b bit set fPone a 1 el bit “b” del registro “f”

Ninguno

Ejemplo:bsf PORTB,7

Antes: (PORTB) = 01111111Después: (PORTB) = 11111111

Page 20: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

20

Tema 6. Ensamblador

INSTRUCCIÓN GOTO

Nemónico Descripción Flags afectados

goto k Instrucción de salto incondicional, queproduce un salto a la dirección del

programa indicada por “k”.“k” es la dirección de destino del salto

Ninguno

Ejemplo:goto Bucle

Antes: (PC)= ¿?Después:(PC)= dirección apuntada por la etiqueta Bucle

Page 21: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

21

Tema 6. Ensamblador

CONFIGURAR LAS LÍNEAS DE LOS PUERTOS

Para configurar las líneas de los puertos hay que acceder a los registros TRISA y TRISB que se hallan en el Banco 1 y cargar en ellos los valores adecuados.

Por ello, hay que acceder al Banco 1 poniendo a “1” el bit RP0 de STATUS.

Una vez configurados los puertos (como entradas o como salidas) hay que regresar al Banco 0 (poniendo a “0” el bit RP0 de STATUS) para poder leer o escribir en los puertos.

Page 22: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

22

Tema 6. Ensamblador

Ejemplo: Ensam_03.asm

Page 23: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

23

Tema 6. Ensamblador

DIRECTIVAS

Para poder ensamblar un programa automáticamente elensamblador necesita información en forma de directivas,que son comandos insertados en el programa que controlan el proceso de ensamblado.

No son instrucciones del microcontrolador.

Suelen escribirse en mayúsculas.

Page 24: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

24

Tema 6. Ensamblador

DIRECTIVAS

Las más utilizadas son:

END End Program Block Indica el fin del programa

EQU Define an assembler constant Asigna etiquetas a las posiciones (a los números)

Ejemplos:Valor EQU d’147’PORTA EQU 0x05

Page 25: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

25

Tema 6. Ensamblador

DIRECTIVAS

ORG Set program origin Indica la dirección de memoria de programa dondese sitúa el código

Ejemplos:ORG 0x00ORG 0x04

_ _CONFIG Set processor Configuration Bits

Carga el registro de configuración

Ejemplo:_ _ CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Page 26: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

26

Tema 6. Ensamblador

DIRECTIVAS

LIST Listing Options Indica el tipo de microcontrolador utilizado

Ejemplo:LIST P=16F84A

INCLUDE Inserta código en el programa

Ejemplo:INCLUDE <P16F84A.INC>

Include Additional Source file

Page 27: Tema 6 - coolab.umh.escoolab.umh.es/sea/microcontroladores/tema6_ensamblador.pdf · El único lenguaje que entienden los microcontroladores es el formado por los ceros yunos del sistema

27

BIBLIOGRAFÍA

"Microcontrolador PIC16F84, Desarrollo de proyectos" E. Palacios, F. Remiro, L.J. López. Ra-Ma, 2004

Podéis encontrar más información de este Tema 6 en el

CAPÍTULO 6

Y en los manuales de los microcontroladores………