TEMA3 Ensamblador PDF
TEMA3 Ensamblador PDF
TEMA3 Ensamblador PDF
ATE-Universidad de Oviedo
Programacin en Ensamblador
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.
ATE-Universidad de Oviedo
Programacin en Ensamblador
Lenguaje ensamblador
y
Programa ensamblador
Cdigo Fuente
.asm
110100001.1100
Cdigo Mquina
.hex
Lenguaje
Ensamblador
Programa
Ensamblador
(MPASM)
ATE-Universidad de Oviedo
Programacin en Ensamblador
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.
ATE-Universidad de Oviedo
Programacin en Ensamblador
Campo de cdigo
Puede corresponder ese cdigo a:
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 programa
ensamblador de cmo tiene que generar el cdigo mquina
Macros: Secuencia de nemnicos que pueden insertarse en el cdigo
fuente del ensamblador de una manera abreviada mediante una simple
llamada.
ATE-Universidad de Oviedo
Programacin en Ensamblador
;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 microcontrolador
INCLUDE P16F877.INC
;Inclusin de fichero de etiquetas
ORG
0
BSF
STATUS,RP0
;Paso al banco 1 de la memoria de datos
CLRF
TRISB
;para definir el PORTB como salida
BCF
STATUS,RP0
;Volvemos al banco 0
CLRF
PORTB
;Ponemos a cero el PORTB para que aparezca ese
;valor cuando se defina como salida
ESPERA
BTFSS
PORTA,4
;Esperamos a que se pulse la tecla
CALL
INCREMENTO
;en cuyo caso RA4 pasa a 0 y vamos a
GOTO
ESPERA
;subprograma de INCREMENTO
;Subprograma de INCREMENTO
INCREMENTO
INCF
PORTB,F
;Si se puls incrementamos PORTB
SOLTAR
BTFSS
PORTA,4
;no salimos hasta que se haya soltado
GOTO
SOLTAR
;la tecla, en ese caso RA4 pasara a 1
RETURN
;y volvemos al programa principal
END
ATE-Universidad de Oviedo
Programacin
en Ensamblador
Campo
de Operandos
y Datos
SINTAXIS
D<valor>
Decimal
Hexadecimal
d<valor>
H<valor>
.<valor>
h<valor>
<valor>H
0x<valor>
<valor>h
Octal
O<valor>
o<valor>
Binario
B<valor>
b<valor>
ASCII
A<carcter>
a<carcter>
<carcter>
<cadena>
Cadena
Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un
cero para no confundirlas con una etiqueta. Ejemplo: movlw 0F7h
ATE-Universidad de Oviedo
Programacin en Ensamblador
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
El juego de instrucciones
1. Formato
2. Funcionalidad
ATE-Universidad de Oviedo
Programacin en Ensamblador
3.- Literales y
de control
ATE-Universidad de Oviedo
10
Programacin en Ensamblador
Nemnico reservado
Qu hacen?
d=0
Cmo se codifican?
8
13
c5 c4 c3 c2 c1 c0
Dir. fuente
f6 f5 f4 f3 f2 f1 f0
Cdigo Operacin
6 bits
Dnde va a
parar el resultado?
7 bits
11
ATE-Universidad de Oviedo
Programacin en Ensamblador
Qu hacen?
Opera o explora el bit de la posicin #bit del operando fuente
Cmo se codifican?
10
13
c3 c2 c1 c0 b2 b1 b0 f6 f5 f4 f3 f2 f1 f0
Cdigo Operacin
Bit a tratar
4 bits
3 bits
7 bits
ATE-Universidad de Oviedo
12
Programacin en Ensamblador
Qu hacen?
Operan con el valor literal directamente
Cmo se codifican?
c5 c4 c3 c2 c1 c0 k7 k6 k5 k4 k3 k2 k1 k0
13
En el caso
GOTO
y CALL
Cdigo Operacin 6b
c2 c1 c0 k10 k9 k8 k7 k6 k5 k4 k3 k2 k1 k0
ATE-Universidad de Oviedo
Programacin en Ensamblador
13
TABLA-RESUMEN
DE INSTRUCCIONES
Orientadas
al byte: son 18
Orientadas
al bit: son 4
Literales
y de
control: son 13
ATE-Universidad de Oviedo
14
Programacin en Ensamblador
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
15
Programacin en Ensamblador
CICLO DE INSTRUCCION
Oscilador
ATE-Universidad de Oviedo
16
Programacin en Ensamblador
clrf
DESCRIPCIN
FLAGS AFECTADOS
00 (f)
00 (W)
f,d
(f) (destino)
movlw
k (W)
Ninguno
movwf
(W) (f)
Ninguno
clrw
movf
17
ATE-Universidad de Oviedo
Programacin en Ensamblador
Instrucciones de BIT
NEMNICO
DESCRIPCIN
FLAGS AFECTADOS
bcf
f,b
Ninguno
bsf
f,b
Ninguno
Instrucciones ARITMTICAS
NEMNICO
addlw
DESCRIPCIN
FLAGS AFECTADOS
(W) + k (W)
C DC - Z
addwf
f,d
C DC - Z
decf
f,d
(f) - 1 (destino)
incf
f,d
(f) + 1 (destino)
sublw
K - (W) (W)
C DC - Z
subwf
f,d
C DC - Z
ATE-Universidad de Oviedo
18
Programacin en Ensamblador
Instrucciones LGICAS
NEMNICO
DESCRIPCIN
FLAGS AFECTADOS
andlw
andwf
f,d
comf
f,d
(/f) (destino)
iorlw
(W) OR k (W)
iorwf
f,d
rlf
f,d
rrf
f,d
swap
f,d
xorlw
xorwf
f,d
Ninguno
19
ATE-Universidad de Oviedo
Programacin en Ensamblador
Instrucciones de SALTO
NEMNICO
DESCRIPCIN
FLAGS AFECTADOS
btfsc
f,b
Salta si el bit b de f es 0
Ninguno
btfss
f,b
Salta si el bit b de f es 1
Ninguno
decfsz f,d
Ninguno
incfsz
f,d
Ninguno
goto
Salta a la direccin k
Ninguno
call
retfie
retlw
return
DESCRIPCIN
FLAGS AFECTADOS
Llamada a subrutina
Ninguno
Ninguno
Ninguno
Ninguno
ATE-Universidad de Oviedo
20
10
Programacin en Ensamblador
Instrucciones ESPECIALES
NEMNICO
DESCRIPCIN
clrwdt
nop
No operacin
sleep
FLAGS AFECTADOS
/TO - /PD
Ninguno
/TO - /PD
21
ATE-Universidad de Oviedo
Programacin en Ensamblador
Fichero con el
juego de
instrucciones completo.
Campo
Descripcin
Registro de trabajo(acumulador)
No importa el valor (0 1)
Seleccin de destino:
d = 0: almacena el resultado en W,
Juego_instr.pdf
label
nombre de etiqueta
TOS
Cima de la pila
PC
Contador de programa
PCLATH
GIE
WDT
Temporizador Watchdog
TO
Time-out bit
PD
Power-down bit
[]
Optional
()
Contenido
Asignado a
<>
En el conjunto de
italics
ATE-Universidad de Oviedo
22
11
Programacin en Ensamblador
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
23
Programacin en Ensamblador
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 :
END
Es la nica directiva obligatoria. Indica al ensamblador dnde debe
detener el proceso. Debe colocarse en la ltima lnea del programa.
<etiqueta> EQU <expresin>
El valor <expresin> es asignado a <etiqueta>. Estas directivas se
suelen colocar al principio del programa y habitualmente se usan
para definir constantes y direcciones de memoria.
[<etiqueta>] ORG <expresin>
Las instrucciones del cdigo fuente que siguen a esta directiva se
ensamblan a partir de la posicin indicada por <expresin>.
ATE-Universidad de Oviedo
24
12
Programacin en Ensamblador
25
Programacin en Ensamblador
Fichero adicionales:
Directivas MPASM.pdf
ATE-Universidad de Oviedo
26
13
Programacin en Ensamblador
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
27
14