Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
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………