TEMA 03 Ensamblador

download TEMA 03 Ensamblador

of 48

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 &reguntn"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 &reguntn"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 &reguntn"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