elt043 - aula 07 - programação do hcs12 - parte 2

35
ELT043 – Microcontroladores Graduação em Engenharia Eletrônica Universidade Federal de Itajubá IESTI Prof. Rodrigo de Paula Rodrigues Programação do HCS12 - Parte 2: Instruções aritméticas e lógicas básicas Aula 07

Upload: italo-pereira-guimaraes

Post on 22-Dec-2015

13 views

Category:

Documents


4 download

DESCRIPTION

notas de aula sobre Programação do HCS12

TRANSCRIPT

Page 1: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

ELT043 – MicrocontroladoresGraduação em Engenharia Eletrônica

Universidade Federal de Itajubá IESTI

Prof. Rodrigo de Paula Rodrigues

Programação do HCS12 - Parte 2:Instruções aritméticas e lógicas básicas

Aula 07

Page 2: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Diretivas de instruções da família HCS12

HCS12 | Assembly para o HCS12

O que deve ser feito

Com quem deve ser feito

CÓD. OPE OPERANDO(s)

+

ELT043 - Microcontroladores Prof. Rodrigo

operações específicas

tamanho das instruções

ciclos de execução

reflexos no registro de código de condição

Page 3: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

HCS12 | Assembly para o HCS12

Modelo de análise de instruções

OP ~ # H I N Z V C

Código demáquina

Comprimento(bytes) Não afetado

XS

ELT043 - Microcontroladores Prof. Rodrigo

máquina

Númerode ciclos

(bytes) Não afetadoValor 1 se verdadeiro, senão, 0Valor 0 sempreValor 1 sempre

01

Page 4: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Instruções básicas de trabalho com osacumuladores

HCS12 | Assembly para o HCS12

acumuladores

CLR(A/B) - Inicialização

TAB/TBA – Transferência de valores

LDA(A/B/D) - Carregamento

ELT043 - Microcontroladores Prof. Rodrigo

ST(AA/AB/DD) - Armazenamento

Page 5: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Inicialização dos acumuladores

HCS12 | Assembly para o HCS12

S X H I N Z V CCLRACLRB

A $00B $00 0 1 0 0

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

CLRA

Page 6: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Transferência de valores entre acumuladores

HCS12 | Assembly para o HCS12

S X H I N Z V CTBATAB

A BB A 0

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

TBA

Page 7: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Carregar o acumulador

HCS12 | Assembly para o HCS12

S X H I N Z V CLDAALDAB

A ← MB ← M 0

ELT043 - Microcontroladores Prof. Rodrigo

Imediato

LDAA #$10

Direto

LDAB $10

Estendido

LDAB $FAAB

Indexado

LDAA $01, X

Page 8: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Carregar o acumulador

HCS12 | Assembly para o HCS12

S X H I N Z V CLDD A:B ← M:M+10

ELT043 - Microcontroladores Prof. Rodrigo

Imediato

LDD #$1034

Direto

LDD $10

Estendido

LDD $FAAB

Indexado

LDD $01, X

Page 9: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Armazenar valor do acumulador

HCS12 | Assembly para o HCS12

S X H I N Z V CSTAASTAB

A → MB → M 0

ELT043 - Microcontroladores Prof. Rodrigo

Direto

STAA $10

Estendido

STAB $FAAB

Indexado

STAB $01, X

Page 10: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Armazenar valor do acumulador

HCS12 | Assembly para o HCS12

S X H I N Z V CSTD A:B → M:M+10

ELT043 - Microcontroladores Prof. Rodrigo

Direto

STD $10

Estendido

STD $FAAB

Indexado

STD $01, X

Page 11: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Instruções aritméticas básicas

HCS12 | Assembly para o HCS12

ABA – Soma de acumuladores

ADDC(A/B) – Adição com carry

SBC(A/B) – Subtração com borrow

SB(A/B/D) – Subtração sem borrow

INC(A/B) – Incrementar acumulador DEC(A/B) – Subtrair acumulador

ELT043 - Microcontroladores Prof. Rodrigo

ADDC(A/B) – Adição com carry

ADD(A/B/D) – Adição sem carry

SB(A/B/D) – Subtração sem borrow

Page 12: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Incrimentar acumulador

HCS12 | Assembly para o HCS12

S X H I N Z V CINCAINCB

A ← A + 1B ← B + 1

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

INCB

Page 13: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Decrementar acumulador

HCS12 | Assembly para o HCS12

S X H I N Z V CDECADECB

A ← A - 1B ← B - 1

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

DECA

Page 14: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Somar acumuladores

HCS12 | Assembly para o HCS12

S X H I N Z V CABA A ← A + B

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

ABA

Page 15: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Adicionar ao acumulador com carry

HCS12 | Assembly para o HCS12

S X H I N Z V CADCAADCB

A ← A + M + CB ← B + M + C

ELT043 - Microcontroladores Prof. Rodrigo

ADCA #$10 ADCB $10 ADCB $FAAB ADCB $AE,X

Imediato Direto Estendido Indexado

Page 16: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Adicionar ao acumulador sem carry

HCS12 | Assembly para o HCS12

S X H I N Z V CADDAADDB

A ← A + MB ← B + M

ELT043 - Microcontroladores Prof. Rodrigo

ADDA #$10 ADDB $10 ADDB $FAAB ADDA $AE,X

Imediato Direto Estendido Indexado

Page 17: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Adicionar ao acumulador sem carry

HCS12 | Assembly para o HCS12

S X H I N Z V CADDD A:B ← A:B + M:M+1

ELT043 - Microcontroladores Prof. Rodrigo

ADDD #$1234 ADDD $10 ADDD $FAAB ADDD $AE,X

Imediato Direto Estendido Indexado

Page 18: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Subtrair do acumulador com borrow

HCS12 | Assembly para o HCS12

S X H I N Z V CSBCASBCB

A ← A - M - CB ← B - M - C

ELT043 - Microcontroladores Prof. Rodrigo

SBCA #$10 SBCB $10 SBCA $FAAB SBCB $AE,X

Imediato Direto Estendido Indexado

Page 19: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Subtrair do acumulador sem borrow

HCS12 | Assembly para o HCS12

S X H I N Z V CSUBASUBB

A ← A - MB ← B - M

ELT043 - Microcontroladores Prof. Rodrigo

SUBA #$10 SUBB $10 SUBB $FAAB SUBA $AE,X

Imediato Direto Estendido Indexado

Page 20: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Subtrair do acumulador sem borrow

HCS12 | Assembly para o HCS12

S X H I N Z V CSUBD A:B ← A:B - M:M+1

ELT043 - Microcontroladores Prof. Rodrigo

SUBD #$1234 SUBD $FE SUBD $FEDC SUBD $02,X

Imediato Direto Estendido Indexado

Page 21: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Instruções lógicas básicas

HCS12 | Assembly para o HCS12

NEG(A/B) – Complemento de 2

AND(A/B) – Operação E

ORA(A/B) – Operação Ou

COM(A/B) – Complemento de 1 EOR(A/B) – Operação Ou-Exclusivo

ELT043 - Microcontroladores Prof. Rodrigo

AND(A/B) – Operação E

Page 22: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Complemento de 2

HCS12 | Assembly para o HCS12

S X H I N Z V CNEGANEGB

NEGA ← A + 1NEGB ← B + 1

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

NEGB

Page 23: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Complemento de 1

HCS12 | Assembly para o HCS12

S X H I N Z V CCOMACOMB 0 1

COMA ← ACOMB ← B

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

COMA

Page 24: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Operação lógica E bit a bit

HCS12 | Assembly para o HCS12

S X H I N Z V CANDAANDB

A ← A & MB ← B & M 0

ELT043 - Microcontroladores Prof. Rodrigo

NEGA #$10 NEGB $10 NEGB $FAAB NEGB $AE,X

Imediato Direto Estendido Indexado

Page 25: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Operação lógica Ou bit a bit

HCS12 | Assembly para o HCS12

S X H I N Z V C

0

ORAAORAB

A ← A | MB ← B | M

ELT043 - Microcontroladores Prof. Rodrigo

ORAB #$10 ORAB $10 ORAA $FAAB ORAB $AE,X

Imediato Direto Estendido Indexado

Page 26: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Operação lógica Ou -Exclusivo bit a bit

HCS12 | Assembly para o HCS12

S X H I N Z V C

0

EORAEORB

A ← A MB ← B M

ELT043 - Microcontroladores Prof. Rodrigo

EORA #$10 EORB $10 EORB $FAAB EORA $AE,X

Imediato Direto Estendido Indexado

Page 27: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Instruções de deslocamento e rotaçãode bits

HCS12 | Assembly para o HCS12

de bits

LSL(A/B/D) – Des. lógico à esquerda

ASL(A/B/D) - Des. aritmético à esquerda

ASR(A/B) - Des. aritmético à direita

ROL(A/B) - Rotação à esquerda

ELT043 - Microcontroladores Prof. Rodrigo

LSR(A/B/D) – Des. lógico à direita ROR(A/B) – Rotação à direita

Page 28: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Deslocamento lógico e aritmético à esquerda

HCS12 | Assembly para o HCS12

LSLA(B)ASLA(B) b0b7

0C

S X H I N Z V C

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

LSLA

Page 29: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Deslocamento lógico e aritmético à esquerda

HCS12 | Assembly para o HCS12

S X H I N Z V CLSLDASLD

0C

…b0b7 A

…b0b7 B

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

ASLD

Page 30: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Deslocamento lógico à direita

HCS12 | Assembly para o HCS12

LSRA(B)b0b7

0C

S X H I N Z V C

0

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

LSRB

Page 31: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Deslocamento lógico à direita

HCS12 | Assembly para o HCS12

LSRD S X H I N Z V C

0

0

C

…b0b7 A

…b0b7 B

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

LSRD

Page 32: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Deslocamento aritmético à direita

HCS12 | Assembly para o HCS12

ASRA(B) S X H I N Z V C

b0b7 C

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

ASRA

Page 33: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Rotação à esquerda

HCS12 | Assembly para o HCS12

ROLA(B) S X H I N Z V C

b0b7C

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

ROLB

Page 34: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

Rotação à direita

HCS12 | Assembly para o HCS12

RORA(B) S X H I N Z V C

b0b7C

ELT043 - Microcontroladores Prof. Rodrigo

Inerente

RORA

Page 35: ELT043 - Aula 07 - Programação Do HCS12 - Parte 2

HCS12 | Fim

Obrigado

ELT043 - Microcontroladores Prof. Rodrigo