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

Post on 17-Mar-2020

9 views 0 download

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

1

Tema 6

Ensamblador

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

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’

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

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

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.

7

Tema 6. Ensamblador

CÓDIGO FUENTE

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

9

Tema 6. Ensamblador

OPERADORES ARITMÉTICOS

$

(

)

!

-

~

high

low

*

/

%

+

-

>=

>

<

<=

==

!=

=

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

11

Tema 6. Ensamblador

INSTRUCCIONES DE CARGA

clrf fclrwmovlw kmovf f,dmovwf f

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

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

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

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

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

17

Tema 6. Ensamblador

INSTRUCCIONES DE BIT

bcf f,bbsf, f,b

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

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

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

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.

22

Tema 6. Ensamblador

Ejemplo: Ensam_03.asm

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.

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

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

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

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………