Você está na página 1de 23

ELT043 Microcontroladores

Graduao em Engenharia Eletrnica


Universidade Federal de Itajub
IESTI
Aula 06
Programao do HCS12 - Parte 1

Prof. Rodrigo de Paula Rodrigues

HCS12 | Histrico

Programao de microprocessadores

Atividade a ser
executada

Tarefas
individuais

Atividade a ser
executada
1

...

...
criao do roteiro

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Histrico

Programao de microprocessadores

Atividade a ser
executada

Tarefas
individuais

1
2

...

...

Nmeros binrios

criao do roteiro

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Histrico

Programao de microprocessadores
Roteiro de instrues

Nmeros binrios
(modo da mquina)
10101

11101

....

cdigo de mquina

ELT043 - Microcontroladores

Instrues textuais
(rtulos)
ROT1

ROT2

....

Linguagem de montagem

Construes complexas
(modo humano)
if

else

for/while

...

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

Prof. Rodrigo

HCS12 | Histrico

Programao de microprocessadores
Roteiro de instrues
arquivo-fonte

Cdigo de
mquina

montagem

Assembly
(baixo nvel)

asm

Linguagem
de alto nvel

compilao

nvel de abstrao
conhecimento da arquitetura do P

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Exemplo
Soma de duas variveis no HCS12
M[ $0003 ] = M[ $0001 ] + M[ $0002 ]

Linguagem
de alto nvel

char x, y, z;

z = x + y;

compilao

Memria
$0001

$0002

$0003

ELT043 - Microcontroladores

Cdigo de
mquina

Assembly
(baixo nvel)

LDAA $01
LDAB $02
ABA
STAA $03

montagem

$96
$01
$D6
$02
$18
$06
$5B
$03

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Assembly para o HCS12


Freescale CodeWarrior

Estrutura de
programas

ELT043 - Microcontroladores

Representao
numrica

Diretivas de
compilao

Diretivas de
instruo

Modos de
endereamento

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Estrutura de programas
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

XDEF Inicio
ABSENTRY Inicio

Diretivas para o montador

ROMInicio :
RAMInicio:

EQU $4000
EQU $0000

Declarao de constantes

Contador :

ORG RAMInicio
DS.B 1 ; Varivel

Declarao de variveis

ORG ROMInicio
Inicio:

LDS #RAMInicio+10
ABA
STAB $03
END
ORG $FFFE
DC.W Inicio

Rtulos
ELT043 - Microcontroladores

Diretivas de instrues
(cdigo de mquina)

Inicializao dos vetores

Diretivas
Prof. Rodrigo

HCS12 | Assembly para o HCS12

Representao numrica

Prefixo

Base numrica

nenhum

decimal

10, 20, 30, 255, 12876, 65534

LDAA 255

hexadecimal

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

STAA $F3A1

octal

@1, @23, @3455, @177777

LDAB @37

binria

%10101010, %11111111

STAB %01101001

ELT043 - Microcontroladores

Exemplos

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Formato geral de declaraes

rtulo *

declarao

parmetro

comentrio *

comentrio precedido por ;


valor relacionado ao operanto ou diretiva
de instruo ou diretiva
nome associado declarao, o qual recebe o endereo da posio da declarao

ELT043 - Microcontroladores

opcional

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Formato geral de declaraes


Exemplos
rtulo *

CONST_A:
INICIO:

SUBTRAIR:

ELT043 - Microcontroladores

declarao

parmetro

comentrio *

ORG

$0100

; Posio de incio do programa

EQU

$33

; Declarar a constante como $33

LDAA

%0110

; A

LDAB

10

; B

10

ABA

; A

A + B = 10 + 6

DECA

; A

A -1 = 16 1 = 15

END

; Fim do programa

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Diretivas de compilao
Diretiva

ORG POS
END
DC VALOR
DS N

ELT043 - Microcontroladores

Finalidade

Exemplos

Especificar a posio da memria a partir


da qual comear a montagem.

ORG $0100

Parar a montagem.

END

Reservar uma posio de memria e ento


inicializ-la. DC.B e DC.W so variantes.

DC.B $1234, DC.W $1235

Reservar N posies de memria. DS.B


e DS.W so variantes.

DS.B 10, DS.W 2

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Diretivas de compilao (cont.)


Diretiva

EQU VALOR
FILL VALOR, N
FCC STRING

ELT043 - Microcontroladores

Finalidade

Exemplos

Define uma constante.

EQU $33, EQU $1234

Ocupar N posies de memria e inicilas com o valor VALOR

FILL $4, 20

Reservar um sequncia de posies capaz


de reter os caracteres da string.

FCC MENSAGEM

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Modos de endereamento
Prefixo/sufixo

Modo

Exemplos

nenhum

inerente

CLRB, CLI, ABA

imediato

LDAA #10, LDAB #$25

nenhum

direto

STAA $35, ANDB 34

nenhum

estendido

STAB $3456, ORAB $FF23

nenhum

relativo

BGT 10, BGT $8F

,x

indexado

LDAA 0,X; STAA 33,X

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Diretivas de instrues

instrues de operao para o P


todo o conjunto de instrues da arquitetura
operao e modo de endereamento
declarao

ELT043 - Microcontroladores

cdigo de mquina da instruo

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Diretivas de instrues
Exemplos
rtulo *

INICIO:

REPETIR:

declarao

comentrio *

Cd. mquina
$FEF0AB

LDX

#$F0AB

; IX

$F0AB, imediato

LDAB

#$20

; B

$20, modo imediato

$C620

LDAB

$20

; B

M[$0020], modo direto

$D620

DECA
JSR

CHAMAR:

parmetro

$43
$DFA9

INCB
CMPA

ELT043 - Microcontroladores

#$0A

; PC

$DFA9, estendido

$16DFA9

; modo inerente

$52

; Comparar A com o valor $0A

$810A

Prof. Rodrigo

HCS12 | Assembly para o HCS12


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

Espao de
endereamento

4000h a 43FFh

1000h a 107Fh

ELT043 - Microcontroladores

Programa
1024 bytes
Dados
128 bytes

01:
02:
03:
04: ROMInicio :
05: RAMInicio:
06:
07:
08: VA:
09: VB:
10: VR:
11:
12:
13: Inicio:
15:
16
17:
18:
19:
20:
21:
22:
23:

XDEF Inicio
ABSENTRY Inicio
EQU $4000
EQU $1000
ORG RAMInicio
DC.B
02 ; A
DC.B
03 ; B
DS.B
1 ;R
ORG ROMInicio
LDAA VA
LDAB VB
ABA
STAB VR
ORG $FFFE
DC.W Inicio
END

Prof. Rodrigo

HCS12 | Execuo de instrues

Execuo de instrues

Ciclo de execuo

P
Tempo de execuo

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Execuo de instrues

Execuo de instrues:
Ciclo de execuo

Mudana de contexto

Ciclo de execuo
Atualizao do PC

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Execuo de instrues


Execuo de instrues:
Ciclo de execuo e atualizao do PC
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:

Incio
PC
$4000

XDEF Inicio
ABSENTRY Inicio
VA:
VB:
VR:
Inicio:

ORG $1000
DC.B 02 ; A
DC.B 03 ; B
DS.B 1 ; R
ORG
LDAA
LDAB
ABA
STAA

$4000
VA
VB
VR

$1000: 02
$1001: 03
$1002: ??

(VA)
(VB)
(VR)

$4000:
$4003:
$4006:
$4008:

(LDAA VA)
(LDAB VB)
(ABA)
(STAA VR)

861000
F61001
1806
7A1002

??:??

CC

11010000

Aps LDAA VA

PC
A

$4003

02

Aps LDAB VB

PC
A

ELT043 - Microcontroladores

03

02:?

02:03

CC

11010000

CC

11010000

PC
A

END

Aps ABA

ORG $FFFE
DC.W Inicio

02

$4006

05

Aps STAA VR

$4008
B

03

PC
A

02

$400B
B

03

05:03

05:03

CC

11010000

CC

11010000

Prof. Rodrigo

HCS12 | Execuo de instrues

Execuo de instrues:
Tempo de execuo

Ciclos Por Instruo

Texecuo =

ELT043 - Microcontroladores

1
fbarramento

CPI(I )
i

Prof. Rodrigo

HCS12 | Execuo de instrues


Execuo de instrues:
Ciclos de instruo
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:

XDEF Inicio
ABSENTRY Inicio
VA:
VB:
VR:
Inicio:

ORG $1000
DC.B 02 ; A
DC.B 03 ; B
DS.B 1 ; R
ORG
LDAA
LDAB
ABA
STAA

$4000
VA
VB
VR

ORG $FFFE
DC.W Inicio

CPI(I ) = 3 + 3 + 2 + 3 = 11
i

i
;
;
;
;

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

Texecuo =

11
fbarramento

END

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Fim

Obrigado

ELT043 - Microcontroladores

Prof. Rodrigo