Upload
samuel-ramsbott
View
57
Download
8
Embed Size (px)
Citation preview
1ATE-Universidad de Oviedo
Programacin en Ensamblador
1
ATE-Universidad de Oviedo
Programacin en Ensamblador
2
LENGUAJE ENSAMBLADOR
El nico lenguaje que entienden los microcontroladores es el cdigo mquina formado por ceros y unos del sistema binario.
El lenguaje ensamblador expresa las instrucciones de una forma ms natural al hombre a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en cdigo mquina.
El lenguaje ensamblador trabaja con nemnicos, que son grupos de caracteres alfanumricos que simbolizan las rdenes o tareas a realizar.
La traduccin de los nemnicos a cdigo mquina entendible por el microcontrolador la lleva a cabo un programa ensamblador.
El programa escrito en lenguaje ensamblador se denomina cdigo fuente(*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente cdigo mquina, que suele tener la extensin *.hex.
2ATE-Universidad de Oviedo
Programacin en Ensamblador
3
Cdigo Fuente.asm
110100001.1100
Cdigo Mquina.hex
ProgramaEnsamblador
(MPASM)
Lenguaje ensambladory
Programa ensamblador
LenguajeEnsamblador
ATE-Universidad de Oviedo
Programacin en Ensamblador
4
El cdigo fuente Est compuesto por una sucesin de lneas de texto.
Cada lnea puede estructurarse en hasta cuatro campos o columnas separados por uno o ms espacios o tabulaciones entre s.
Campo de etiquetas. Expresiones alfanumricas escogidas por el usuario para identificar una determinada lnea. Todas las etiquetas tienen asignado el valor de la posicin de memoria en la que se encuentra el cdigo al que acompaan. Campo de cdigo. Corresponde al nemnico de una instruccin, de una directiva o de una llamada a macro. Campo de operandos y datos. Contiene los operandos que precisa el nemnico utilizado. Segn el cdigo, puede haber dos, uno o ningn operando. Campo de comentarios. Dentro de una lnea, todo lo que se encuentre a continuacin de un punto y coma (;) ser ignorado por el programa ensamblador y considerado como comentario.
3ATE-Universidad de Oviedo
Programacin en Ensamblador
5
Instrucciones: son aquellos nemnicos que son convertidos por el ensamblador en cdigo mquina que puede ejecutar el ncleo del microcontrolador. En la gama media (PIC16xxx) cada nemnico se convierte en una palabra en la memoria de programa
Directivas. Pseudoinstrucciones que controlan el proceso de ensamblado del programa, pero no son parte del cdigo. Son indicaciones al programaensamblador de cmo tiene que generar el cdigo mquina
Macros: Secuencia de nemnicos que pueden insertarse en el cdigofuente del ensamblador de una manera abreviada mediante una simple llamada.
Campo de cdigo
Puede corresponder ese cdigo a:
ATE-Universidad de Oviedo
Programacin en Ensamblador
6
;Fichero CUENTA.ASM;;Programa de Prueba para la placa PICDEM-2 plus;Por el Puerto B se saca en binario, el numero de veces;que se puls la tecla que est conectada a la entrada RA4;si pulsada a cero y si libre a 1;
LIST P=16F877 ;Directiva para definir listado y microcontroladorINCLUDE P16F877.INC ;Inclusin de fichero de etiquetasORG 0BSF STATUS,RP0 ;Paso al banco 1 de la memoria de datosCLRF TRISB ;para definir el PORTB como salidaBCF STATUS,RP0 ;Volvemos al banco 0CLRF PORTB ;Ponemos a cero el PORTB para que aparezca ese
;valor cuando se defina como salidaESPERA BTFSS PORTA,4 ;Esperamos a que se pulse la tecla
CALL INCREMENTO ;en cuyo caso RA4 pasa a 0 y vamos aGOTO ESPERA ;subprograma de INCREMENTO
;Subprograma de INCREMENTOINCREMENTO
INCF PORTB,F ;Si se puls incrementamos PORTBSOLTAR
BTFSS PORTA,4 ;no salimos hasta que se haya soltadoGOTO SOLTAR ;la tecla, en ese caso RA4 pasara a 1RETURN ;y volvemos al programa principalEND
Ejemplo de cdigo fuente
4ATE-Universidad de Oviedo
Programacin en Ensamblador
7
El ensamblador MPASM (distribuido por Microchip) soporta los sistemas de numeracin decimal, hexadecimal, octal, binario y ASCII.
Los nemnicos que tengan una constante como operando debern incluirla respetando la sintaxis que se indica a continuacin.
Decimal .dD
Hexadecimal0xhH
h .HOctal oOBinario bBASCII aACadena
TIPO SINTAXIS
Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta. Ejemplo: movlw 0F7h
Campo de Operandos y Datos
ATE-Universidad de Oviedo
Programacin en Ensamblador
8
Aprendiendo a Programar
Pasos a dar para poder generar cdigo fuente:
1.- Juego de Instrucciones
2.- Directivas y Macros
3.- Organizacin de la Memoria interna:
Programa
Datos
5ATE-Universidad de Oviedo
Programacin en Ensamblador
9
El juego de instrucciones
Es un juego reducido de 35 instrucciones muy simples. Procesador RISC
La mayora de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos y llamadas a subprogramas se ejecutan en 8 (no se aprovecha pipeline)
Todas las instrucciones tienen la misma longitud en la gama media: 14 bits.
Por lo tanto el clculo del tiempo de ejecucin y de lo que ocupa un programa resulta simple
Las instrucciones se pueden clasificar atendiendo a dos criterios:
1. Formato
2. Funcionalidad
ATE-Universidad de Oviedo
Programacin en Ensamblador
10
El juego de instrucciones: SEGN SU FORMATO
1.- Orientadasal byte
2.- Orientadasal bit
3.- Literales yde control
6ATE-Universidad de Oviedo
Programacin en Ensamblador
11
Operacin fuente, destino
W Opera con Operando en dir fuente
1.- Instrucciones orientadas al byte
c3c4c5 c0c1c2
13 8 7 6 0
Cdigo Operacin
6 bits
Direccin operando fuente
7 bitsDestinoresultado 1 bit
W
Dir. fuented = 1
d = 0
d f6 f5 f4 f3 f2 f1 f0
Cmo se escriben en ensamblador?
Qu hacen?
Cmo se codifican?
Nemnico reservado
7 bits o algo que pueda sustituir a 7 bits, si es mayor se trunca
1 bit o algo que puedasustituir a 1 bit, si es mayor se trunca
Dnde va a parar el resultado?
ATE-Universidad de Oviedo
Programacin en Ensamblador
12
Operacin fuente, bit
Opera o explora el bit de la posicin #bit del operando fuente
2.- Instrucciones orientadas al bit
c1c2c3 b1b2c0
13 8 7 6 0
Cdigo Operacin
4 bits
Direccin operando fuente
7 bits
Bit a tratar
3 bits
b0 f6 f5 f4 f3 f2 f1 f0
Cmo se escriben en ensamblador?
Qu hacen?
Cmo se codifican?
Nemnico reservado
7 bits o algo que pueda sustituir a 7 bits, si es mayor se trunca
3 bits o algo que puedasustituir a 3 bits, si es mayor se trunca
10
7ATE-Universidad de Oviedo
Programacin en Ensamblador
13
Operacin valor literal
Operan con el valor literal directamente
3.- Instrucciones literales o de control
c3c4c5 c0c1c2
13 8 7 0Cdigo Operacin 6b Valor con el que se opera 8 bits
k7 k6 k5 k4 k3 k2 k1 k0
Cmo se escriben en ensamblador?
Qu hacen?
Cmo se codifican?
Nemnico reservado
8 bits o algo que pueda sustituir a 8 bits, si es mayor se trunca
en instrucciones del tipoGOTO CALL el valor es de 11 bits
c0c1c2 k8k9k10 k7 k6 k5 k4 k3 k2 k1 k0En el caso
GOTOy CALL
ATE-Universidad de Oviedo
Programacin en Ensamblador
14
TABLA-RESUMEN DE INSTRUCCIONES
Orientadasal byte: son 18
Orientadasal bit: son 4
Literalesy de
control: son 13
Cmo leer la tabla?
8ATE-Universidad de Oviedo
Programacin en Ensamblador
15
CICLO DE INSTRUCCION
Un ciclo de instruccin es el tiempo que se tarda en ejecutar una instruccin (salvo las instrucciones de salto) en el microcontrolador. En los PIC16, un ciclo de instruccin dura 4 ciclos de reloj. En una primera etapa, la instruccin es trada a la CPU. Esto lleva un ciclo de instruccin TCY. En la segunda etapa se ejecuta la instruccin. Esto lleva otro TCY.. No obstante, debido al solapamiento (pipelining entubado) de traer la instruccin actual y ejecucin de la instruccin previa, una instruccin se trae y otra se ejecuta cada TCY.
Oscilador
ATE-Universidad de Oviedo
Programacin en Ensamblador
16
Pudiera haber un ciclo de instruccin de retardo si el resultado de ejecutar la instruccin anterior modifica el contenido del Contador de Programa (Ej: GOTO CALL). Esto implica suspender el entubado (pipelining) de las instrucciones durante un ciclo para que la instruccin a donde se salta se traiga a la CPU.
CICLO DE INSTRUCCION
Oscilador
9ATE-Universidad de Oviedo
Programacin en Ensamblador
17
El juego de instrucciones: SEGN SU FUNCIONALIDAD
Instrucciones de CARGANEMNICO DESCRIPCIN FLAGS AFECTADOS
clrf f 00 (f) Zclrw 00 (W) Zmovf f,d (f) (destino) Zmovlw k k (W) Ningunomovwf f (W) (f) Ninguno
ATE-Universidad de Oviedo
Programacin en Ensamblador
18
Instrucciones de BITNEMNICO DESCRIPCIN FLAGS AFECTADOS
bcf f,b Pone a 0 el bit b del registro f Ningunobsf f,b Pone a 1 el bit b del registro f Ninguno
Instrucciones ARITMTICASNEMNICO DESCRIPCIN FLAGS AFECTADOS
addlw k (W) + k (W) C DC - Zaddwf f,d (W) + (f) (destino) C DC - Zdecf f,d (f) - 1 (destino) Zincf f,d (f) + 1 (destino) Zsublw k K - (W) (W) C DC - Zsubwf f,d (f) - (W) (destino) C DC - Z
10
ATE-Universidad de Oviedo
Programacin en Ensamblador
19
Instrucciones LGICASNEMNICO DESCRIPCIN FLAGS AFECTADOS
andlw k (W) AND k (W) Zandwf f,d (W) AND (f) (destino) Zcomf f,d (/f) (destino) Ziorlw k (W) OR k (W) Ziorwf f,d (W) OR (f) (destino) Zrlf f,d Rota (f) a izquierda (destino) Crrf f,d Rota (f) a derecha (destino) Cswap f,d Intercambia nibbles (f) (destino) Ningunoxorlw k (W) XOR k (W) Zxorwf f,d (W) XOR (f) (destino) Z
ATE-Universidad de Oviedo
Programacin en Ensamblador
20
Instrucciones de SALTONEMNICO DESCRIPCIN FLAGS AFECTADOS
btfsc f,b Salta si el bit b de f es 0 Ningunobtfss f,b Salta si el bit b de f es 1 Ningunodecfsz f,d (f) - 1 (destino) y salta si es 0 Ningunoincfsz f,d (f) + 1 (destino) y salta si es 0 Ningunogoto k Salta a la direccin k Ninguno
Instrucciones de manejo de SUBRUTINASNEMNICO DESCRIPCIN FLAGS AFECTADOS
call k Llamada a subrutina Ningunoretfie Retorno de una interrupcin Ningunoretlw k Retorno con un literal en (W) Ningunoreturn Retorno de una subrutina Ninguno
11
ATE-Universidad de Oviedo
Programacin en Ensamblador
21
Instrucciones ESPECIALESNEMNICO DESCRIPCIN FLAGS AFECTADOS
clrwdt Borra Timer del Watchdog /TO - /PDnop No operacin Ningunosleep Entra en modo de bajo consumo /TO - /PD
ATE-Universidad de Oviedo
Programacin en Ensamblador
22
Fichero con el juego de
instrucciones completo.
Juego_instr.pdf
Campo Descripcin
f Posicin de memoria de datos (Register file address)(0x00 to 0x7F)
W Registro de trabajo(acumulador)
b n Bit dentro de una posicin de memoria (0-7)
k Valor literal, constante o etiqueta (puede de 8 o 11 bits)
x No importa el valor (0 1)
El ensamblador genera cdigo con x=0.
d Seleccin de destino:
d = 0: almacena el resultado en W,
d = 1: almacena el resultado en una posicin de la memoria de datos f.
dest Destino es el registro W o la posicicin de memoria de datos especificada
label nombre de etiqueta
TOS Cima de la pila
PC Contador de programa
PCLATH Latch de la parte alta del contador de programa
GIE Bit de habilitacin de interrupcin global
WDT Temporizador Watchdog
TO Time-out bit
PD Power-down bit
[ ] Optional
( ) Contenido
Asignado a< > Register bit field
En el conjunto deitalics termino definido por el usuario ( courier)
Las claves del juegode instrucciones
12
ATE-Universidad de Oviedo
Programacin en Ensamblador
23
Aprendiendo a Programar
Pasos a dar para poder generar cdigo fuente:
1.- Juego de Instrucciones
2.- Directivas y Macros
3.- Organizacin de la Memoria interna:
Programa
Datos
ATE-Universidad de Oviedo
Programacin en Ensamblador
24
Directivas de MPASM
Controlan el proceso de ensamblado del programa, pero no son parte del mismo (tambin se conocen como pseudoinstrucciones).
Hay ms de 50 directivas reconocidas por MPASM.
Las ms usadas :
ENDEs la nica directiva obligatoria. Indica al ensamblador dnde debedetener el proceso. Debe colocarse en la ltima lnea del programa.
EQU El valor es asignado a . Estas directivas sesuelen colocar al principio del programa y habitualmente se usanpara definir constantes y direcciones de memoria.
[] ORG Las instrucciones del cdigo fuente que siguen a esta directiva seensamblan a partir de la posicin indicada por .
13
ATE-Universidad de Oviedo
Programacin en Ensamblador
25
__CONFIG [& & ... & ]Permite indicar la configuracin elegida para la grabacin del PIC.Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC
LIST P=16F877Indica el tipo de microcontrolador utilizado.
INCLUDE o INCLUDE p16F877.incIncluye en el programa un fichero donde se definen las etiquetascon las que se nombra a los diferentes registros y sus bits. Estefichero se encuentra en el directorio principal del programaensamblador. Puede usarse esta directiva para incluir cualquierotro fichero (Ojo! El fichero de inclusin no puede terminar conuna directiva END).
DT [, , ... , ]Genera una instruccin retlw por cada expresin que incluya ladirectiva. Si la expresin es del tipo cadena, se generar unainstruccin retlw por cada carcter de la misma.
ATE-Universidad de Oviedo
Programacin en Ensamblador
26
Fichero adicionales:
Directivas MPASM.pdf
Gua de uso del MPASM, MPLINK y MPLIB
TODAS LAS DIRECTIVAS
14
ATE-Universidad de Oviedo
Programacin en Ensamblador
27
Aprendiendo a Programar
Pasos a dar para poder generar cdigo fuente:
1.- Juego de Instrucciones
2.- Directivas y Macros
3.- Organizacin de la Memoria interna:
Programa
Datos