Você está na página 1de 17

ELT043 Microcontroladores

Graduao em Engenharia Eletrnica


Universidade Federal de Itajub
IESTI
Aula 08
Programao do HCS12 - Parte 3

Prof. Rodrigo de Paula Rodrigues

HCS12 | Execuo de instrues

Implementao de algoritmos

AO

Ao W

+
DECISO

sim
Ao X

no
Ao Y

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa

O que deve ser feito: desviar o fluxo do programa


Desviar por n posies de memria ou para
a posio de menria X
CD. OPE

OPERANDO

Parmetros a serem utilizados pela instruo


Instruo a ser efetuada pelo P (OPCODE)

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Ao da instruo

Efetua as operaes
necessrias

Busca a instruo
na memria

Aponta para a prxima


instruo

Decodifica a instruo
obtida

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Modo de endereamento

Relativo

CD. OPE

DESLOCAMENTO DE e 8 bits

PC

PC PC + DESLOCAMENTO

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Tipos de desvio

CD. OPE
Tipo de desvio

Incondicional

Condicional
condio
verdadeira
condio
falsa

PC PC + DESLOCAMENTO

ELT043 - Microcontroladores

Se a CONDIO for VERDADEIRA,


ento PC PC + DESLOCAMENTO

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Caractersticas do operando

Deslocamento de 8 bits
OPERANDO

Complemento de 2 (para trs ou para frente)

para trs
para frente

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


desvio para frente

Endereos

Instruo de desvio
PC atual (PC do desvio + 2)

PC
PC novo (> PC atual)

ELT043 - Microcontroladores

Desvio de PC
PC de 0 a +127

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


desvio para frente
Desvio de $04 (BRA $04)

PC atual

$0102
+ $04
$0106

ELT043 - Microcontroladores

Endereo

Contedo

Instruo

$0100

$20

BRA

$0101

$04

04

$0102

$0103

$0104

$0105

$0106

$0107

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Desvio para frente

$0124
- $011A
$000A
Desvio de $0A

ELT043 - Microcontroladores

Endereo

Contedo

Instruo

$0118

$20

BRA

$0119

??

??

$011A

$0124

$0125

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:

Endereos

Desvio para trs

PC novo (< PC atual)

PC
Instruo de desvio
PC atual (PC do desvio + 2)

ELT043 - Microcontroladores

Desvio de -PC
PC de -1 a -128

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Desvio para trs
Desvio de -$05 (BRA $FB)

-$058 $FB8 $FFFB16

$0106
+$FFFB
$0101

ELT043 - Microcontroladores

PC atual

Endereo

Contedo

Instruo

$0100

$0101

$0102

$0103

$0104

$20

BRA

$0105

$0106

$0107

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Desvio para trs
Desvio

$0186
- $0163

PC novo

$0023
-$002316 $FFDD16 $DD8
Desvio de $DD (-$23)

ELT043 - Microcontroladores

PC atual

Endereo

Contedo

Instruo

$0162

$0163

$0164

$0184

$20

BRA

$0185

??

??

$0186

$0187

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa:


Regra geral para clculo do desvio

A+B+D=F
Endereo da
instruo de salto

ELT043 - Microcontroladores

Tamanho, em bytes,
do operando da
instruo de salto + 1

Deslocamento
em complemento de 2
e estendido para 16 bits

Endereo final
pretendido

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Instrues de desvio de programa


Teste

Instruo

Condio

Teste

Instruo

Condio

sempre

BRA

nunca

BNR

r=0

BEQ

Z=1

r0

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

Z +NV =0

rm

BLE

Z + N V =1

r<m

BLT

N V =1

r m

BGE

NV =0

r>m

BHI *

C + Z =0

rm

BLS *

C + Z =1

* no sinalizados

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Exerccios
1 Desenvolva um programa que constantemente multiplique por 2 o valor
presente em uma dada posio de memria. Considere tanto o parmetro
quanto o resultado como valores de 8 bits;
2 Altere o programa de forma que a multiplicao seja realizada a cada 4 a 8
ciclos do barramento do processador;
3 Altere o program de forma que somente quando um valor em uma dada
posio de memria for 1, a multiplicao dever ser efetuada;
4 Desenvolva um programa para resolver a igualdade r = x2 + 2*x + 12.
Considere x um valor no sinalizado de 8 bits e r, tambm no sinalizado, de
16 bits.

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Fim

Obrigado

ELT043 - Microcontroladores

Prof. Rodrigo

Você também pode gostar