Você está na página 1de 25

ELT043 Microcontroladores

Graduao em Engenharia Eletrnica


Universidade Federal de Itajub
IESTI
Aula 09
Programao do HCS12 - Parte 4

Prof. Rodrigo de Paula Rodrigues

HCS12 | Execuo de instrues

Implementao de algoritmos

Ao Y

Memria de dados
Ao X
Dado:

...

Ao W
Endereo:

E+1

E+2

E+3

...

Interao:

N+1

N+2

N+3

Ao Z

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Assembly para o HCS12

Modo de endereamento indexado

O que deve ser feito


Deslocamento a partir de uma base (ndice)

CD. OPE

OPERANDO

Parmetros a serem utilizados pela instruo


Instruo a ser efetuada pelo P (OPCODE)

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Endereamento indexado

CD. OPE

DESLOCAMENTO
ndice base
+

ENDEREO EFETIVO

Memria
OPERANDO

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Endereamento indexado no HCS12

CD. OPE

DES. de 3, 5, 9 ou 16 bits

ENDEREO EFETIVO

X , Y , SP ou PC
Memria
OPERANDO

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Deslocamento fixo sinalizado de 5 ou 9 bits

INSTRUO

Operando de 5 ou 9 bits , BASE

SP

PC

Exemplos ( X $1000, Y $2000 )

LDAA 0, X

LDAB $FF, Y

STAB -8, Y

A M[ X+0 ]
A M[ $1000 ]

A M[ Y+$FF ]
A M[ $20FF ]

M[ Y - 8 ] B
M[ $1FF8 ] B

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Deslocamento fixo de 16 bits

INSTRUO

Operando de 16 bits , BASE

SP

PC

Exemplos ( X $1000, Y $2000 )

LDAA $1234, X

LDAB $81FF, Y

STAB $FF00, Y

A M[ X+ $1234 ]
A M[ $2234 ]

A M[ Y+$81FF ]
A M[ $A1FF ]

M[ Y+$FF00 ] B
M[ $1F00 ] B

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Ps-incremento/decremento de 3 bits

INSTRUO

Operando de 3 bits , BASE +/-

SP

Exemplos ( X $1000, Y $2000 )

LDAA 1, X+

LDAB 8, Y-

STAB %101, Y+

A M[ $1000 ]
X X + 1 = $1001

A M[ $2000 ]
Y Y - 8 = $1FF8

M[ $2000 ] B
Y Y + 5 = $2005

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Pr-incremento/decremento de 3 bits

INSTRUO

Operando de 3 bits , +/- BASE

SP

Exemplos ( X $1000, Y $2000 )

LDAA 1, +X

LDAB 8, -Y

STAB %101, +Y

X X + 1 = $1001
A M[ $1001 ]

Y Y - 8 = $1FF8
A M[ $1FF8 ]

Y Y + 5 = $2005
M[ $2005 ] B

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Deslocamento por acumulador

INSTRUO

Acumulador ,

BASE

SP

PC

Exemplos ( A $10, B $20, X $1000, Y $2000 )

LDAA B, X

LDAB A, Y

STAB D, Y

A M[ $1000+$20 ]
A M[ $1020 ]

A M[ $2000 + $10 ]
A M[ $2010 ]

M[ $1020+$2000] B
M[ $3020 ] B

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Indireto por 16 bits

INSTRUO

Operando de 16 bits , BASE

SP

PC

Exemplo ( X $1000, M[$100A:$100B ] $2000, M[ $2000 ] $3A )

LDAA [ 10, X ]

ELT043 - Microcontroladores

1: EE1 10 + $1000 $100A


2: EE2 M[ E1:E1+1 ] $2000
3: A M[ EE2 ] $3A

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Indireto pelo acumulador D

INSTRUO

D , BASE

SP

PC

Exemplo ( SP,D $1000, M[$2000:$2001 ] $1234, M[ $1234 ] $A3 )

LDAA [ D, SP ]

ELT043 - Microcontroladores

1: EE1 $1000 + $1000 $2000


2: EE2 M[ E1:E1+1 ] $1234
3: A M[ EE2 ] $A3

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Instrues de trabalho com


os registros de ndice

LD (X/Y/S) - Carregamento

XGD(X/Y) Troca de valores

ST(X/Y/S) - Armazenamento

IN(X/Y/S) Incremento

T(SX/SY/XS/YS) - Transferncia

DE (X/Y/S) Decremento

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Carregar o registro de ndice


LDX
LDY
LDS

X M:M+1
Y M:M+1
S M:M+1

V
0

Imediato

Direto

Estendido

Indexado

LDS #$1234

LDX $12

LDY $1234

LDS 0, X

SP $1234

X M[ $0012 ]:
M[ $0013 ]

Y M[ $1234 ]:
M[ $1235 ]

SP M[ X ]:
M[X+1]

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Armazenar o registro de ndice


STX
STY
STS

M:M+1 X
M:M+1 Y
M:M+1 S

V
0

Direto

Estendido

Indexado

STX $12

STY $1234

STS 0, Y

M[$0012]:M[$0013] X

M[$1234]:M[$1234] Y

M[ Y ]:M[Y+1] SP

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Transferir entre os registros de ndice


TSX
TSY
TXS
TYS

XS
XY
SX
SY

Inerente
TSX
TSX
XS
XS

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Trocar valores entre os registros de ndice

XGDX
XGDY

X D
Y D

Inerente
XGDY
YD

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Incrimentar registro de ndice

INX
INY

XX+1
YY+1

INS

SP SP + 1

Inerente
INX
XX+1

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Decrementar registro de ndice


DEX
DECY

XX-1
YY1

DECS

SP SP - 1

Inerente
DES
SP SP - 1

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Exemplo 1

Somar os 10 primeiros valores presentes a partir da posio de memria


$1000. Considerar que os valores sejam no sinalizados de 8 bits e que o
resultado da soma no seja superior ao valor 255.O resultado da soma deve
ser armazenado na posio de memria $1020.

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado


Exemplo 1
XDEF Inicio
ABSENTRY Inicio
A 0, X $1000 e B 10

A A + M[ X ]

Armazenar o
resultado

; Valores a somar

VR:

ORG $1020
DS.B 1

; Resultado

ORG $4000
CLRA
LDX #V
LDAB #10

; A 0
; X $1000
; B 10

ADDA 0, X
INX
DECB
BNE Somar
STAA VR

; A A + M[ X ]
;XX+1
;BB-1
; Se B = 0, parar a soma
; M[$1020] Soma

Inicio:

X X+1, B B - 1

B=0?

V:

ORG $1000
DS.B 10

No

Somar:

ORG $FFFE
DC.W Inicio
END

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado


Exemplo 1 (soluo alternativa)
XDEF Inicio
ABSENTRY Inicio
A 0, Y $1000 e B 9

A A + M[ Y + B ]

Armazenar o
resultado

; Valores a somar

VR:

ORG $1020
DS.B 1

; Resultado

ORG $4000
CLRA
LDY #V
LDAB #9

;A 0
; Y $1000
;B9

ADDA B, Y
DECB
BPL Somar
STAA VR

; A A + M[ Y + B ]
;BB-1
; Se B = 0, parar a soma
; M[$1020] Soma

Inicio:

BB-1

B<0?

V:

ORG $1000
DS.B 10

No

Somar:

ORG $FFFE
DC.W Inicio
END

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado

Exemplo 2

Para o exemplo anterior, o aletre de forma a considerar que o resultado da


soma seja de 16 bits e o armazena a partir da posio de memria $1030.

ELT043 - Microcontroladores

Prof. Rodrigo

HCS12 | Modo de endereamento indexado


Exemplo 2
XDEF Inicio
ABSENTRY Inicio

A, B 0, X $1000 e Y 10

A:B A:B + 0:M[ X ],


XX+1

Inicio:

ORG $4000
CLRA
CLRB
LDX #$1000
LDY #10

; A, B 0
; X $1000
; Y 10

YY-1

Somar:

Y=0?

No

ADDB 1, X+
ADCA #0
DEY
BNE Somar
STD $1030

; B B + M[ X ] e, depois, X X + 1
;AA+ 0 + C
;YY-1
; Se Y = 0, parar a soma
; M[$1030]:M[$1031] A:B (Soma)

ORG $FFFE
DC.W Inicio
Armazenar o
resultado

ELT043 - Microcontroladores

END

Prof. Rodrigo

HCS12 | Fim

Obrigado

ELT043 - Microcontroladores

Prof. Rodrigo