ELT043 - Aula 06 - Programação Do HCS12 - Parte 1

Embed Size (px)

Citation preview

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    1/23

    ELT043 MicrocontroladoresGraduao em Engenharia Eletrnica

    Universidade Federal de ItajubIESTI

    Prof. Rodrigo de Paula Rodrigues

    Programao do HCS12 - Parte 1Aula 06

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    2/23

    HCS12 | Histrico

    Programao de microprocessadores

    Atividade a serexecutada

    1 2 3 ...

    1

    2 3

    ...

    Tarefasindividuais

    Atividade a serexecutada

    ELT043 - Microcontroladores Prof. Rodrigo

    criao do roteiro

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    3/23

    HCS12 | Histrico

    Programao de microprocessadores

    1

    2 3

    Atividade a serexecutada

    P1 2 3 ...

    Tarefasindividuais

    ELT043 - Microcontroladores Prof. Rodrigo

    ...

    criao do roteiro

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    4/23

    Programao de microprocessadores

    HCS12 | Histrico

    Roteiro de instrues

    Nmeros binrios(modo da mquina)

    Construes complexas(modo humano)

    Instrues textuais(rtulos)

    ELT043 - Microcontroladores Prof. Rodrigo

    cdigo de mquina

    ...

    Linguagem de programao(C, C++, Pascal, etc)

    ....

    Linguagem de montagem

    ....

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    5/23

    Programao de microprocessadores

    HCS12 | Histrico

    Roteiro de instrues

    Cdigo demquina

    Assembly(baixo nvel)

    Linguagemde alto nvelasmmontagem

    arquivo-fonte

    ELT043 - Microcontroladores Prof. Rodrigo

    nvel de abstrao

    conhecimento da arquitetura do P

    compilao

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    6/23

    ExemploSoma de duas variveis no HCS12

    M[ $0003 ] = M[ $0001 ] + M[ $0002 ]

    HCS12 | Assemblypara o HCS12

    char x, y, z;z = x + LDAA $01

    $96$01D6

    Linguagemde alto nvel

    Assembly(baixo nvel)

    Cdigo demquina

    ELT043 - Microcontroladores Prof. Rodrigo

    LDAB

    ABASTAA

    $02

    $03$0001

    $0002

    $0003

    x

    y

    z

    Memriacompilao $02$18

    $06$5B$03

    montagem

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    7/23

    HCS12 | Assemblypara o HCS12

    Assemblypara o HCS12Freescale CodeWarrior

    Representaonumrica

    Diretivas decompilao

    Estrutura deprogramas

    ELT043 - Microcontroladores Prof. Rodrigo

    Modos deendereamento

    Diretivas deinstruo

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    8/23

    Estrutura de programas

    HCS12 | Assemblypara o HCS12

    Declarao de variveis

    Declarao de constantes

    Diretivas para o montador01: XDEF Inicio02: ABSENTRY Inicio03:04: ROMInicio : EQU $400005: RAMInicio: EQU $000006:

    07: ORG RAMInicio08: Contador : DS.B 1 ; Varivel09:10: ORG ROMInicio11:12: Inicio: LDS #RAMInicio+10

    Inicializao dos vetores

    (cdigo de mquina)

    ELT043 - Microcontroladores Prof. Rodrigo

    13:

    14: ABA15: STAB $0316: END17:18: ORG $FFFE19: DC.W Inicio

    Rtulos Diretivas

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    9/23

    Representao numrica

    HCS12 | Assemblypara o HCS12

    decimalnenhum

    Prefixo Base numrica

    10, 20, 30, 255, 12876, 65534

    Exemplos

    hexadecimal$ $01, $A9, $FF, $1234, $FFFF

    octal@ @1, @23, @3455, @177777

    LDAA 255

    STAA $F3A1

    LDAB @37

    ELT043 - Microcontroladores Prof. Rodrigo

    binria% %10101010, %11111111 STAB %01101001

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    10/23

    Formato geral de declaraes

    HCS12 | Assemblypara o HCS12

    rtulo * declarao parmetro comentrio *

    valor relacionado ao operanto ou diretiva

    comentrio precedido por ;

    ELT043 - Microcontroladores Prof. Rodrigo

    nome associado declarao, o qual recebe o endereo da posio da declarao

    de instruo ou diretiva

    * opcional

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    11/23

    Formato geral de declaraesExemplos

    HCS12 | Assemblypara o HCS12

    rtulo * declarao parmetro comentrio *

    ORG $0100 ; Posio de incio do programa

    INICIO: LDAA %0110

    LDAB 10

    CONST_A: EQU $33; Declarar a constante como $33

    ; B 10

    ; A 6

    ELT043 - Microcontroladores Prof. Rodrigo

    ABA ; A A + B = 10 + 6

    END ; Fim do programa

    DECASUBTRAIR: ; A A -1 = 16 1 = 15

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    12/23

    Diretivas de compilao

    HCS12 | Assemblypara o HCS12

    Especificar a posio da memria a partirda qual comear a montagem.

    ORG POS

    Diretiva Finalidade

    ORG $0100

    Exemplos

    Parar a montagem.END END

    ELT043 - Microcontroladores Prof. Rodrigo

    Reservar uma posio de memria e ento

    inicializ-la. DC.Be DC.W so variantes.DC VALOR

    DC.B $1234, DC.W $1235

    Reservar N posies de memria.DS.Be DS.W so variantes.

    DS N DS.B 10, DS.W 2

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    13/23

    Diretivas de compilao (cont.)

    HCS12 | Assemblypara o HCS12

    Diretiva Finalidade Exemplos

    Ocupar N posies de memria e inici-las com o valor VALOR

    FILL VALOR, N FILL $4, 20

    Define uma constante.EQU VALOR EQU $33, EQU $1234

    ELT043 - Microcontroladores Prof. Rodrigo

    Reservar um sequncia de posies capazde reter os caracteres da string.FCC STRING FCC MENSAGEM

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    14/23

    Modos de endereamento

    HCS12 | Assemblypara o HCS12

    inerentenenhum

    Prefixo/sufixo Modo

    CLRB, CLI, ABA

    Exemplos

    imediato# LDAA #10, LDAB #$25

    diretonenhum STAA $35, ANDB 34

    estendidonenhum STAB $3456, ORAB $FF23

    ELT043 - Microcontroladores Prof. Rodrigo

    relativonenhum BGT 10, BGT $8F

    indexado, x LDAA 0,X; STAA 33,X

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    15/23

    Diretivas de instrues

    HCS12 | Assemblypara o HCS12

    todo o conjunto de instrues da arquitetura

    instrues de operao para o P

    declarao

    operao e modo de endereamento

    cdigo de mquina da instruo

    ELT043 - Microcontroladores Prof. Rodrigo

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    16/23

    Diretivas de instruesExemplos

    HCS12 | Assemblypara o HCS12

    LDX #$F0AB ; IX $F0AB, imediato

    INICIO: LDAB #$20 ; B $20, modo imediato

    DECAREPETIR:

    LDAB $20 ; B M[$0020], modo direto

    Cd. mquina

    $FEF0AB

    $C620$D620

    $43

    rtulo * declarao parmetro comentrio *

    ELT043 - Microcontroladores Prof. Rodrigo

    JSR $DFA9 ; PC $DFA9, estendido

    CHAMAR: INCB

    CMPA #$0A ; Comparar A com o valor $0A

    $16DFA9$52

    $810A

    ; modo inerente

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    17/23

    ExemploM[$1002] = M[$1000] + M[$1001]

    HCS12 | Assemblypara o HCS12

    02: ABSENTRY Inicio03:04: ROMInicio : EQU $400005: RAMInicio: EQU $100006:07: ORG RAMInicio08: VA: DC.B 02 ; A

    09: VB: DC.B 03 ; B10: VR: DS.B 1 ; R11:12: ORG ROMInicio13: Inicio:

    4000h a 43FFh Programa1024 bytes

    Espao deendereamento

    ELT043 - Microcontroladores Prof. Rodrigo

    16 LDAB VB17: ABA18: STAB VR19:20: ORG $FFFE21: DC.W Inicio22:

    23: END

    1000h a 107Fh Dados128 bytes

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    18/23

    Execuo de instrues

    HCS12 | Execuo de instrues

    P

    Ciclo de execuo

    Tempo de execuo

    ELT043 - Microcontroladores Prof. Rodrigo

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    19/23

    Execuo de instrues:Ciclo de execuo

    HCS12 | Execuo de instrues

    Ciclo de execuo

    Mudana de contexto

    Atualizao do PC

    ELT043 - Microcontroladores Prof. Rodrigo

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    20/23

    HCS12 | E d i

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    21/23

    Execuo de instrues:

    HCS12 | Execuo de instrues

    1

    Ciclos Por Instruo

    ELT043 - Microcontroladores Prof. Rodrigo

    i

    i

    barramento

    execuo

    f

    HCS12 | E d i t

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    22/23

    Execuo de instrues:Ciclos de instruo

    HCS12 | Execuo de instrues

    01: XDEF Inicio02: ABSENTRY Inicio03:04: ORG $100005: VA: DC.B 02 ; A06: VB: DC.B 03 ; B07: VR: DS.B 1 ; R

    08:09: ORG $400010: Inicio: LDAA VA11: LDAB VB12: ABA

    113233)( =+++=

    ii

    ICPI

    T 11=

    ; CPI de 3 ciclos; CPI de 3 ciclos; CPI de 2 ciclos

    ELT043 - Microcontroladores Prof. Rodrigo

    14:15: ORG $FFFE16: DC.W Inicio17:18: END

    barramentof

    HCS12 | Fi

  • 7/21/2019 ELT043 - Aula 06 - Programao Do HCS12 - Parte 1

    23/23

    HCS12 | Fim

    Obrigado

    ELT043 - Microcontroladores Prof. Rodrigo