1 Lenguaje de maquina Unidad I Introducción al lenguaje ensamblador Juego de instrucciones. Tema:
TEMA 03 Ensamblador
-
Upload
ricardo-elizalde -
Category
Documents
-
view
224 -
download
0
Transcript of TEMA 03 Ensamblador
-
8/17/2019 TEMA 03 Ensamblador
1/48
Tema 3LENGUAJE ENSAMBLADOR
-
8/17/2019 TEMA 03 Ensamblador
2/48
Microcontroladores: Tema 3
2
¿Qué es el lenguaje Ensamblador ?
• Es un lenguaje de computadora que se encuentra en eltérmino medio de un lenguaje de alto nivel y el lenguaje demáquina ejecutado por un microcontrolador.
For I = 1 to 10 do
begin
valor = valor + 2
end
Inicio: movlw 0x01
movwf 0x30
movff 0x30,0x40
movlw 0x00
movf 0x40,W
0x0108
0x010
0x!030
0x"000
0x#040
$"%&'("$)* %I"$
$"%&'(""%-.$/*
$"%&'("-'I%
-
8/17/2019 TEMA 03 Ensamblador
3/48
Microcontroladores: Tema 3
3
¿Crossasembler?
• El ensamblador utilizado para programar unmicrocontrolador es llamado
crossasembler! o ensamblador cruzado yaque el c"digo generado no es ejecutado!en la plata#orma de desarrollo.
-
8/17/2019 TEMA 03 Ensamblador
4/48
Microcontroladores: Tema 3
4
Ciclo de $esarrollo tradicional
am
*
*
5ex
"ditor
de
)exto
6rograma
F7ente "namblador 6rograma
*beto$in9er "ec7table
6rogramador
cof
"m7lador
im7lador
-
8/17/2019 TEMA 03 Ensamblador
5/48
Microcontroladores: Tema 3
5
Elementos del lenguaje
• %nstrucciones de máquina
• $irectivos de ensamblador
• Control del ensamblador
• Comentarios
C"digo
&uente
-
8/17/2019 TEMA 03 Ensamblador
6/48
Microcontroladores: Tema 3
6
&ormato de una instrucci"n
INICIO: movf 0x020, W ;Lee registro
")I'"):; -%"-*%I!* *6"%/*;,*6"%/*;
-
8/17/2019 TEMA 03 Ensamblador
7/48
Microcontroladores: Tema 3
7
Etiqueta de $irecci"n
• 'epresenta con un nombre la direcci"ndonde se encuentra localizada la instrucci"nque la precede
( )e consideran solamente los primeros *+ c,ars
( )iguiero terminar con dos puntos -!
( o puede contener espacios en su interior
( o puede empezar con un n/mero
( $ebe iniciar en columna 0
-
8/17/2019 TEMA 03 Ensamblador
8/48
Microcontroladores: Tema 3
8
Comentario
• Comentarios-
( $eben iniciar con punto y coma 1!
INICIO: movf 0x020, W ;Lee registro
-
8/17/2019 TEMA 03 Ensamblador
9/48
Microcontroladores: Tema 3
9
)2mbolos prede#inidos
• ombres que el ensamblador maneja comode#ault y que representa los registros y
direcciones empleadas mnem"nicamente por el #abricante
• 3icroc,ip los de#ine en un arc,ivo llamado
4567'8E.%C 9 60:&;
-
8/17/2019 TEMA 03 Ensamblador
10/48
Microcontroladores: Tema 3
10
Evaluaci"n de E>presiones
• as direcciones@ constantes y operandos pueden ser representadas de tres maneras para #acilitar la legibilidad del programa
( E>pl2cito movA# B>&+
( 6rede#inido movA# 83'*
( E>presi"n movA# B>&0 D 0
-
8/17/2019 TEMA 03 Ensamblador
11/48
Microcontroladores: Tema 3
11
ases uméricas• 6ara #acilitar la legibilidad@ el ensamblador
permite e>presar los n/meros en varias basesnumericas. a indicaci"n del tipo de base se
realiza por medio de un pre#ijo. a base o radi>de#ault es ,e>adecimal pero se puede modi#icar
-
8/17/2019 TEMA 03 Ensamblador
12/48
Microcontroladores: Tema 3
12
$irectivas de ensamblador )on instrucciones que le indica al ensambladora ,acer cosas di#erentes a la generaci"n dec"digo de máquina.
(Control (Condicionales
($atos
( istado (3acro
(4bjeto
-
8/17/2019 TEMA 03 Ensamblador
13/48
Microcontroladores: Tema 3
13
Control
Controlan como será ensamblado el programa
-
8/17/2019 TEMA 03 Ensamblador
14/48
Microcontroladores: Tema 3
14
Condicional6ermiten que ciertas secciones del c"digo seanensambladas o no dependiendo de una condici"nl"gica. 4 son como las condicionales en lenguaje dealto nivel
-
8/17/2019 TEMA 03 Ensamblador
15/48
Microcontroladores: Tema 3
15
$atosControlan la alocaci"n de memoria y proveen unmedio para re#erirnos a estos elementos en #ormasimb"lica
-
8/17/2019 TEMA 03 Ensamblador
16/48
Microcontroladores: Tema 3
16
istadoControlan el #ormato de salida del arc,ivo de listadoF.)8G. 6ermiten de#inir titulos@ paginaci"n etc..
-
8/17/2019 TEMA 03 Ensamblador
17/48
Microcontroladores: Tema 3
17
3acro6ermiten la creaci"n de macros que nos evitan tenerqu estar reHescribiendo grupos de instrucciones
-
8/17/2019 TEMA 03 Ensamblador
18/48
Microcontroladores: Tema 3
18
4bjetoIsadas para la creaci"n de c"digo objeto.
-
8/17/2019 TEMA 03 Ensamblador
19/48
Microcontroladores: Tema 3
19
$e#inici"n de constantes
• $irectivo equ
CUATRO equ 4 ;Asign v!or "e 4 sim#o!o CUATRO ACC equ WR$% ;Asign e! v!or "e un &re"efini"o'OTRO(CUATRO equ CUATRO ;Otr sign)i*n+ON(O+ equ CUATRO-2 ;+e &ermiten o&er)iones
-
8/17/2019 TEMA 03 Ensamblador
20/48
Microcontroladores: Tema 3
20
$e#inici"n de Jariables
• $irectivo set
( $e#ine variables en ram interna.
.I(/ARIAL$ set 0x00 ;Asign e! nom#re "ire))i*n 0x00
-
8/17/2019 TEMA 03 Ensamblador
21/48
Microcontroladores: Tema 3
21
$e#inici"n de Constantes en '43
• $irectivo db
( $e#ine una constante en memoria de programa.
CO1R%(.+%: "# 3Co&rig5t 20627 ;As)ii !iter!CON+TANT$+: "# 0x06,0x08 ;T#! "e )tes
.$9CLA(LO: "# A,7o!7,045 ;.e
-
8/17/2019 TEMA 03 Ensamblador
22/48
Microcontroladores: Tema 3
22
$irectivo org!
• 7signa el operando al que precede un valorabsoluto de direcci"n de modo que todas lasinstrucciones estaran localizadas a partir de
esa direcci"n.
org 0x0000 ;Ini)io "e memori &rogrm #r ini)io ;$n reset e=e)utr &rin)i&!
org 0x0600 ;ire))ion "e )o"igo 0600ini)io: "">f 0x40,WR$%
-
8/17/2019 TEMA 03 Ensamblador
23/48
Microcontroladores: Tema 3
23
3ás sobre $irectivos
• El lenguaje ensamblador@ tiene la capacidadde manejar m"dulos independientes. os
directivos asociados a este esquema de programaci"n quedan #uera del alcance delcurso.
-
8/17/2019 TEMA 03 Ensamblador
24/48
Microcontroladores: Tema 3
24
)obre el inKer
• El inKer es un programa utilizado paraunir varios arc,ivos objeto! relocalizableen un arc,ivo objeto! más grande.
-
8/17/2019 TEMA 03 Ensamblador
25/48
Microcontroladores: Tema 3
25
)obre el inKer
• a ,erramienta367 realiza el
proceso en #orma
automática@ sinembargo estade#inici"n puederequerir cambios enciertas aplicaciones.
-
8/17/2019 TEMA 03 Ensamblador
26/48
Microcontroladores: Tema 3
26
6rogramaci"n
-
8/17/2019 TEMA 03 Ensamblador
27/48
Microcontroladores: Tema 3
27
6rogramas
• Entender el problema
• $e#inir la estrategia de soluci"n
• $e#inir el algoritmo
• Codi#icaci"n
• 6ruebas y depuracion debugG
• iberaci"n
• 3antenimiento
-
8/17/2019 TEMA 03 Ensamblador
28/48
Microcontroladores: Tema 3
28
anda 8ransportadora
CONTROLADOR
BASADO EN PIC18
MOTOR
SENSOR
BOTON DE
ARRANUE
TORRETA
CONTENEDOR
-
8/17/2019 TEMA 03 Ensamblador
29/48
Microcontroladores: Tema 3
29
-
8/17/2019 TEMA 03 Ensamblador
30/48
Microcontroladores: Tema 3
30
anda 8ransportadora
• El programa de control deberá de realizar losiguiente-
( Esperar el bot"n de arranque ( Contar el n/mero de cajas
( )i el n/mero llega a un 37L%34
• 6arar la banda transportadora
• Encender una torreta
• Esperar de nuevo el bot"n de arranque.
-
8/17/2019 TEMA 03 Ensamblador
31/48
Microcontroladores: Tema 3
31
anda 8ransportadora
• )eMales en sensores y actuadores-RB4 BOTON
PRESIONADO
!1"
!0"
RD0
!1"
!0"
MOTOR
ENCENDIDO
RB5
!1" SENSORCAJA PRESENTE
RD1
TORRETAENCENDIDA
!1"
!0" !0"
-
8/17/2019 TEMA 03 Ensamblador
32/48
Microcontroladores: Tema 3
32
INCIO
BOTON
PRESIONADO
ENCENDER MOTOR
APAGAR T OR RET A
CAJA
PRESENTE
CUENTA #
CUENTA $ 1
CAJA
AUSENT E
CUENTA
# MA%IMO &
APAG AR
MOTORSI
ENCENDER
TORRETA
INICIALI'AR
CUENTA
NO
NO
NO
INICIALI'AR
-
8/17/2019 TEMA 03 Ensamblador
33/48
Microcontroladores: Tema 3
33
-
8/17/2019 TEMA 03 Ensamblador
34/48
Microcontroladores: Tema 3
34
;????????????????????????????????????????????????????????????????????????????
;? 1rogrm &rin)i&!;????????????????????????????????????????????????????????????????????????????
org 0x0000 ;ire))ion "e memori en reset #r ini)i ;rin) ini)io "e! &rogrm
org 0x0600 ;@ueremos que em&ie)e e! &rogrm en 0x600ini)i: )!! ini)i!i
-
8/17/2019 TEMA 03 Ensamblador
35/48
Microcontroladores: Tema 3
35
;? $+1$RA.O+ A @U$ 1R$+ION$N $L OTON, $+TO +UC$$ CUANO OTON 0es&er(#oton: #tfs) 1ORTA,OTON ;Test #it n" sDi& if )!er 0B
#r es&er(#oton ;+i es 6 )ontinu ®untn"o
;? A 1R$+NIONO $L OTON $NTONC$+ $NC$N$.O+ $L .OTOR
#sf 1ORTA,.OTOR ;$n)en"er e! motor )tivo !toB #sf 1ORTA,TORR$TA ;A&gr torret )tivo #=oB
;? $+1$RA.O+ LA 1R$+$NCIA $ UNA CAEA $+TO +UC$$ CUANO +$N+OR 6
es&er()=6: #tfss 1ORTA,+$N+OR ;Test #it n" sDi& if set 6B #r es&er()=6 ;+i es 0 )ontinu ®untn"o
;? $+TA 1A+ANO UNA CAEA, LA CONTA.O+
mov!> 0x06 ;/mos sumor 6 W 6"">f CU$NTA,F ;+ummos CU$NTA CU$NTA G W
;? $+1$RA.O+ @U$ T$R.IN$ $ 1A+AR LA CAEA, +UC$$ CUANO +$N+OR 0
es&er()=2: #tfs) 1ORTA,+$N+OR ;Test #it n" sDi& if )!er 0B #r es&er()=2 ;+i es 6 )ontinu ®untn"o
;? /A.O+ AORA A C$CAR +I A +$ LL$%O A LA CU$NTA .HI.A
J mov!> .AI.0)&fseq CU$NTA ;Com&re f >it5 WR$%, sDi&
#r es&er()=6 ;+i no fue igu, es&er ! siguiente )=
;? )uent .AI.O, en)en"er siren''''
#)f 1ORTA,TORR$TA ;$n)en"er torret )tivo #=oB)!rf CU$NTA ;)emos ! )uent 0
#r es&er(#oton ;$s&err #oton
-
8/17/2019 TEMA 03 Ensamblador
36/48
Microcontroladores: Tema 3
36
6rincipales arc,ivos generados
• F.4
( C"digo objeto
• F.)8 ( istado del programa
• F.C4&
( 7rc,ivo para la ,erramienta de debug
• F.NEL
( 7rc,ivo ejecutable #ormato %8E NELG
-
8/17/2019 TEMA 03 Ensamblador
37/48
Microcontroladores: Tema 3
37
7rc,ivo Ejecutable
• El arc,ivo que va a ser ejecutado por el microcontrolador puede ser generado en varios #ormatos@ entre los principales #ormatos se encuentran-
( %ntel e>tendido te>toG
( %ntel corto te>toG
( 3otorola ) records te>toG
( 8eKtroni> te>toG
( inario binario secuencialG
-
8/17/2019 TEMA 03 Ensamblador
38/48
Microcontroladores: Tema 3
38
7rc,ivo %ntel Ne>.
• Empleado por muc,os programadores comoel arc,ivo estandar!.
( Cada l2nea equivale a un registro! ( E>isten ; tipos de registros
• 'egistro de datos B>BB
• 'egistro de #in B>B0
• 'egistro segmentado B>B+
• 'egistro lineal B>B;
-
8/17/2019 TEMA 03 Ensamblador
39/48
Microcontroladores: Tema 3
39
7rc,ivo %ntel Ne>.
:04000000K0$F00F0Inicio
!antidad
de
.@te
/ireccin
/e
-emoria
4 .@te
80,"F,00,F0
!5ec9
7m
)iAo
:020000040000FA :04000000K0$F00F0:60060000M$C00F0K02K0K00AK00F$K0K2FM:60066000K0KK0A4F$060$002K04F$080$6
:60062000002FK000AF00F06K0AKA :0A 068000$00$8KFFM0$2$62006:00000006FF
-
8/17/2019 TEMA 03 Ensamblador
40/48
Microcontroladores: Tema 3
40
$ocumentaci"n.
• os programa en lenguaje ensamblador como encualquiere lenguaje deben de ser adecuadamentedocumentados para #acilitar el mantenimiento.
• El lenguaje ensamblador es muy criptico! si locomparamos con otros lenguajes por lo que ladocumentaci"n se vuelve un #actor muy importante.
• In programa sin documentaci"n es un programa que no puede ser mantenido@ un programa que no puede ser
mantenido acaba en la basura ......y......
• Firmware is the most expensive thing in the universe, yetwe do little to control its costs (Jack Ganssle dixit )
-
8/17/2019 TEMA 03 Ensamblador
41/48
Microcontroladores: Tema 3
41
$ocumetaci"n.• )e recomienda que todo programa deberá de iniciar con un
encabezado con m2nimo la siguiente in#ormaci"n-
( 7utor
( &ec,a de creaci"n
( 7rc,ivo ( Jersi"nO'evisi"n y #ec,a
( ayout de los puertos y dispositivos destino
( 7bstract de como #unciona
( Nerramientas empleadas para su desarrollo
• EnsambladorOinKerOversiones etc.
( 3odulos adicionales requeridos
( %nstrucciones especiales
-
8/17/2019 TEMA 03 Ensamblador
42/48
Microcontroladores: Tema 3
42
$ocumetaci"n.• )e recomienda tener una secci"n a manera de bitácora
donde se indica-
( Jersi"n anterior
( 7rc,ivo anterior
( Jersi"n actual ( 7rc,ivo actual
( &ec,a de la revisi"n
( 7bstract de los cambios realizados.
-
8/17/2019 TEMA 03 Ensamblador
43/48
Microcontroladores: Tema 3
43
$ocumetaci"n.• )e recomienda que cada procedimiento y subrutina lleve
un encabezado donde se describe su #unci"n.
• )e recomienda el uso e>a,ustivo de comentarios paraindicar en #orma te>tual lo que las intrucciones estan
realizando.• )e recomienda que las variables tengan nombres
co,erentes con su #unci"n y sean lo más descriptivas posibles.
• E>isten muc,os estilos para el nombramiento de variablesy tipos@ se debe de probar con varios para encontrar el quemejor se adapte a la organizaci"n.
-
8/17/2019 TEMA 03 Ensamblador
44/48
Microcontroladores: Tema 3
44
%nstrucciones de rotaci"n
-
8/17/2019 TEMA 03 Ensamblador
45/48
Microcontroladores: Tema 3
45
'esumen
• enguaje ensamblador
• Elementos del lenguaje
• Ejemplos de programas• 7rc,ivos
• $ocumentaci"n.
-
8/17/2019 TEMA 03 Ensamblador
46/48
Microcontroladores: Tema 3
46
'otaci"n izquierda
r!)f f,",
7 6 5 4 3 2 1 0 C
r!n)f f,",
r!)f f,",
7 6 5 4 3 2 1 0
-
8/17/2019 TEMA 03 Ensamblador
47/48
Microcontroladores: Tema 3
47
'otaci"n derec,a
rrn)f f,",
rr)f f,",01234567C
01234567
-
8/17/2019 TEMA 03 Ensamblador
48/48
Microcontroladores: Tema 3
E(em)*+, -,a./+ MPLABTEMA031ASM