Post on 22-Dec-2015
description
ELT043 – MicrocontroladoresGraduação em Engenharia Eletrônica
Universidade Federal de Itajubá IESTI
Prof. Rodrigo de Paula Rodrigues
Programação do HCS12 - Parte 3
Aula 08
HCS12 | Execução de instruções
Implementação de algoritmos
Ação W
?sim
não
Ação X
AÇÃO
+
DECISÃO
ELT043 - Microcontroladores Prof. Rodrigo
nãoDECISÃO
Ação Y
Instruções de desvio de programa
HCS12 | Assembly para o HCS12
Parâmetros a serem utilizados pela instrução
CÓD. OPE OPERANDO
O que deve ser feito: desviar o fluxo do programa
Desviar por “n” posições de memória ou paraa posição de menória X
ELT043 - Microcontroladores Prof. Rodrigo
Instrução a ser efetuada pelo µP (OPCODE)
Parâmetros a serem utilizados pela instrução
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Ação da instrução
Busca a instruçãona memória
Efetua as operaçõesnecessárias
ELT043 - Microcontroladores Prof. Rodrigo
Decodifica a instruçãoobtida
Aponta para a próximainstrução
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Modo de endereçamento
CÓD. OPE DESLOCAMENTO DE e 8 bits
Relativo
ELT043 - Microcontroladores Prof. Rodrigo
PC+
PC ← PC + DESLOCAMENTO
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Tipos de desvio
Tipo de desvio
Incondicional
condiçãoverdadeira
Condicional
CÓD. OPE
ELT043 - Microcontroladores Prof. Rodrigo
condiçãofalsa
verdadeira
PC ← PC + DESLOCAMENTOSe a CONDIÇÃO for VERDADEIRA , então PC ← PC + DESLOCAMENTO
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Características do operando
Deslocamento de 8 bits
Complemento de 2 (para trás ou para frente)OPERANDO
ELT043 - Microcontroladores Prof. Rodrigo
para frente
para trás
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:desvio para frente
PC atual (PC do desvio + 2)
∆PC Desvio de ∆PC
End
ereç
os
Instrução de desvio
ELT043 - Microcontroladores Prof. Rodrigo
PC novo (> PC atual)
∆PC Desvio de ∆PC
End
ereç
os
∆PC de 0 a +127
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:desvio para frente
Desvio de $04 (BRA $04)
$0100
$0101
$20
$04
$0102 …
BRA
04
…
Endereço Conteúdo Instrução
$0103 …
$0104 …
…
…
PC atual
$0102+ $04
ELT043 - Microcontroladores Prof. Rodrigo
$0104 … …
$0105 …
$0106 …
…
…
$0107 … …
$0102+ $04
$0106
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Desvio para frente
$0118
$0119
$20
??
$011A …
BRA
??
…
Endereço Conteúdo Instrução
… …
… …
…
…
$0124$011A
$000A
-
Desvio de $0A
ELT043 - Microcontroladores Prof. Rodrigo
… … …
… …
$0124 …
…
…
$0125 … …
Desvio de $0A
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Desvio para trás
PC novo (< PC atual)
∆PC Desvio de - ∆PC
End
ereç
os
Instrução de desvio
∆ de -1 a -128
ELT043 - Microcontroladores Prof. Rodrigo
PC atual (PC do desvio + 2)∆PC de -1 a -128
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Desvio para trás
Desvio de -$05 (BRA $FB)
$0100
$0101
…
…
$0102 …
…
…
…
Endereço Conteúdo Instrução
$0103 …
$0104 $20
…
BRA$0106
-$058 → $FB8 → $FFFB16
ELT043 - Microcontroladores Prof. Rodrigo
$0104 $20 BRA
$0105 …
$0106 …
…
…
$0107 … …
PC atual
$0106+$FFFB
$0101
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Desvio para trás
Desvio
$0162
$0163
…
…
$0164 …
…
…
…
Endereço Conteúdo Instrução
… …
$0184 $20
…
BRA
$0186- $0163
$0023
PC novo
ELT043 - Microcontroladores Prof. Rodrigo
$0184 $20 BRA
$0185 ??
$0186 …
??
…
$0187 … …PC atual
-$002316 → $FFDD16 → $DD8
Desvio de $DD (-$23)
HCS12 | Assembly para o HCS12
Instruções de desvio de programa:Regra geral para cálculo do desvio
A + B + D = F
Endereço da Tamanho, em bytes, Deslocamento Endereço final
ELT043 - Microcontroladores Prof. Rodrigo
Endereço dainstrução de salto
Tamanho, em bytes, do operando da
instrução de salto + 1
Deslocamentoem complemento de 2
e estendido para 16 bits
Endereço finalpretendido
HCS12 | Assembly para o HCS12
Instruções de desvio de programa
Teste Instrução Condição Teste Instrução Condição
sempre BRA - nunca BNR -
r = 0 BEQ Z = 1 r ≠ 0 BNE Z = 0
r < 0 BMI N = 1 r > 0 BPL N = 0
carry BCS C = 1 sem carry BCC C = 0
overflow BVS V = 1 sem overflow BVC V = 0
r > m BGT r ≤ m BLE0=⊗+ VNZ 1=⊗+ VNZ
ELT043 - Microcontroladores Prof. Rodrigo
r > m BGT r ≤ m BLE
r < m BLT r ≥ m BGE
r > m BHI * r ≤ m BLS *
0=⊗+ VNZ 1=⊗+ VNZ
1=⊗ VN 0=⊗ VN
0=+ ZC 1=+ ZC
* não sinalizadosS X H I N Z V C
HCS12 | Assembly para o HCS12
Exercícios
1 – Desenvolva um programa que constantemente multiplique por 2 o valorpresente em uma dada posição de memória. Considere tanto o parâmetroquanto o resultado como valores de 8 bits;
2 – Altere o programa de forma que a multiplicação seja realizada a cada 4 a 8ciclos do barramento do processador;
3 – Altere o program de forma que somente quando um valor em uma dadaposição de memória for 1, a multiplicação deverá ser efetuada;
ELT043 - Microcontroladores Prof. Rodrigo
posição de memória for 1, a multiplicação deverá ser efetuada;
4 – Desenvolva um programa para resolver a igualdade r = x2 + 2*x + 12.Considere x um valor não sinalizado de 8 bits e r, também não sinalizado, de16 bits.
HCS12 | Fim
Obrigado
ELT043 - Microcontroladores Prof. Rodrigo