Você está na página 1de 72

TE124-Microcontroladores: Assembly MSP430

Microcontrolador MSP430G2xxx:

Microcontrolador da Texas Instruments

CPU de 16 bits com arquitetura RISC

Arquitetura von-Neumann com barramento de


dados e barramento de endereos:
MDB - Memory Data Bus
MAB - Memory Address Bus

Sistema de Clock flexvel Aplicaes de baixo consumo

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Consumo de Energia Modos de Operao

AM - Active Mode
LPMx - Low Power Mode x

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Arquitetura do MSP430G2xxx

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Arquitetura do MSP430G2x53

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Mapeamento de Memria (Address Space) do MSP430

0C000h

MSP430G2553
256 bytes Information Memory
03FFh
512 bytes

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Direo
do Pino

Funo
do Pino

Pull-up
Pull-down

Sada

Entrada

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Watch Dog Timer - WDT

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Watch Dog Timer - WDT

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

CPU do MSP430:

2 sem/2014 Prof. Pastro


TE124-Microcontroladores: Assembly MSP430

Registrador R0: Program Counter (PC)

O Program Counter (PC) o ponteiro para a prxima instruo


a ser executada.

Cada instruo do MSP430 utiliza um nmero par de bytes (2, 4


ou 6 bytes), e o PC incrementado de acordo com o nmero de
bytes da instruo.

O alinhamento das instrues feito em words, assim o Program


Counter (PC) alinhado em endereos pares.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Registrador R1: Stack Pointer (SP)

O Stack Pointer (SP) utilizado pela CPU para armazenar o


endereo de retorno de uma sub-rotina ou de uma interrupo.

O Stack Pointer pr-decrementado e ps-incrementado:


Armazenar um endereo na pilha: o SP inicialmente decrementado
e aps o endereo colocado na pilha.
Retirar um endereo da pilha: o endereo retirado da pilha e o SP
incrementado.

O Stack Pointer pode ser utilizado como operando em qualquer


instruo.

O Stack Pointer deve ser inicializado pelo usurio, em um en-


dereo da RAM (normalmente o endereo mais alto da RAM).

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430
Registrador R2: Registrador de Estado (SR-Status Register)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Registradores de Propsito Geral: R4 a R15


Os 12 Registradores, R4 a R15, so de Propsito Geral. Todos esses regis-
tradores podem ser utilizados como registradores de dados, como ponteiros
de endereos ou indexadores, podendo ser acessados atravs de instrues
do tipo word ou byte.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Reset e inicializao do microcontrolador


O Power On Reset(POR) gerado por um dos seguintes eventos:
Energizao do dispositivo;
Nvel baixo no sinal RST/NMI, quando configurado como RESET;
Uma condio de nvel baixo no SVS.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Condies iniciais aps o Power On Reset

Aps o Power On Reset as condies iniciais do MSP430 so:


O pino RST/NMI configurado no modo RESET;
Os pinos de I/O so configurados como entrada;
Os perifricos e registradores so configurados no modo default;
O Registrador de Estado(SR) resetado;
O Watchdog Timer ativado no modo Watchdog
O PC carregado com o valor armazenado no endereo 0xFFFE
(Vetor de reset)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Aps o Reset o usurio deve inicializar o MSP430 de acordo


com os requisitos da aplicao:

Inicializar o Stack Pointer(SP), usualmente no final da RAM;


Configurar ou desabilitar o Watchdog ;
Configurar os perifricos de acordo com os requisitos da aplicao;
Configurar as portas de I/O

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Anatomia de uma listagem de programa assembly

#include "msp430g2553.h"
org 0xfffe
bc16 main
rseg code
main: mov.w #0x03FF,SP
mov.w #WDTPW+WDTHOLD,&WDTCTL
bis.b #00000001b,&P1DIR
bic.b #00000001b,&P1OUT
loop: xor.b #0x01,&P1OUT
mov.w #50000,R15
delay: dec.w R15
jnz delay
jmp loop
END

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430
Anatomia de uma listagem de programa assembly
/*-------------------------------------------------------------------------------------------------
Programa para inverter o estado do LED vermelho da placa
MSP-EXP430G2 com delay entre as mudanas de estado do led.
-------------------------------------------------------------------------------------------------*/
#include "msp430.h" // Definices do MSP430
Diretiva Comentrios
Comentrio
org 0xFFFE
do Assembly bc16 main

RSEG CODE

main: mov.w #0x0400,SP ; Inicializar stack pointer

mov.w #WDTPW+WDTHOLD,&WDTCTL ; Desativar WDT


Label
Comentrios bis.b #00000001b,&P1DIR ; Pino P1.0 como sada
(Rtulo)
bic.b #00000001b,&P1OUT ; Pino P1.0 = 0

loop: xor.b #0x01,&P1OUT ; Inverter o pino P1.0


mov.w #50000,R15 ; Carregar registrador R15
delay: dec.w R15 ; Decrementar R15
jnz delay ; Desvia para delay se R15 # 0
Mnemnico jmp loop ; Desvia para loop
da Instruo Operandos
de Mquina END

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Conjunto de Instrues do MSP430

O MSP430 possui um Conjunto de Instrues contendo 27 instrues nativas e


24 instrues emuladas.

Cada uma das 27 instrues nativas possui um Cdigo de Operao que pode
ser decodificado pela CPU.

As instrues emuladas so instrues que facilitam a codificao e a leitura do


programa, porm no possuem um Cdigo de Operao especfico. Essas ins-
trues so automaticamente substituidas pelo montador (Assembler), por ins-
trues nativas equivalentes.

O Conjunto de Instrues nativas do MSP430 est dividido em 3 grupos:


Instrues com dois operandos
Instrues com um operando
Instrues de desvio

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Conjunto de Instrues nativas do MSP430

Instrues com 2 operandos:


Mnemnico Operandos Operao
MOV[.W/.B] src,dst src dst
ADD[.W/.B] src,dst src + dst dst
ADDC[.W/.B] src,dst src + dst + C dst
SUB[.W/.B] src,dst dst src dst
SUBC[.W/.B] src,dst dst src C dst
CMP[.W/.B] src,dst dst src
DADD[.W/.B] src,dst src + dst + C dst (decimal)
BIT[.W/.B] src,dst src .and. dst
BIC[.W/.B] src,dst zerar bits em dst
BIS[.W/.B] src,dst setar bits em dst
XOR[.W/.B] src,dst src .xor. dst dst
AND[.W/.B] src,dst src .and. dst dst

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Conjunto de Instrues nativas do MSP430

Instrues com 1 operando:


Mnemnico Operando Operao
RRC[.W/.B] dst rotacionar dst com o Carry
RRA[.W/.B] dst rotacionar dst sem o Carry
PUSH[.W/.B] src colocar src na pilha
SWPB dst trocar bytes de dst
CALL dst chamada a sub-rotina
RETI retorno de interrupo
SXT dst propagar bit de sinal

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Conjunto de Instrues nativas do MSP430

Instrues de desvio:
Mnemnico Operando Operao
JEQ/JZ label desvia para label se Z = 1
JNE/JNZ label desvia para label se Z = 0
JC label desvia para label se C = 1
JNC label desvia para label se C = 0
JN label desvia para label se N = 1
JGE label desvia para label se (N .xor. V) = 0
JL label desvia para label se (N .xor. V) = 1
JMP label desvia incondicionalmente para label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modos de Endereamento

O MSP430 possui 7 modos de endereamento para o operando de


origem e 4 modos de endereamento para o operando de destino.

Cdigo da operao Operando de Origem Operando de Destino

Modos de Endereamento:
Registrador
Indexado Operando de Origem
Simblico e de Destino
Absoluto
Indireto
Indireto com auto-incremento Operando de Origem
Imediato

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modo de Endereamento a Registrador

MOV.W R10, R11

Operao: mover o contedo do Registrador R10 para o Registrador R11

Antes Depois

R10: 0x1234 R10: 0x1234

R11: 0x80A5 R11: 0x1234

MOV.B R10, R11


Antes Depois

R10: 0x1234 R10: 0x1234

R11: 0x80A5 R11: 0x0034

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modo de Endereamento Indexado


MOV.W 6(R10), 10(R11)

Operao: mover o contedo do endereo de memria 6 + (R10) para o


endereo de memria 10 + (R11)
Antes Depois
... ... ... ...
C022 ... C022 ...
R10: 0xC01A
C021 0xA002 6(R10) C021 0xA002
C020 0x4567 C020 0x4567
C01E 0x1B0A C01E 0x1B0A
+6
C01C 0xxxxx C01C 0xxxxx
C01A 0xxxxx C01A 0xxxxx
R11: 0x0200 ... ... 10(R11) ... ...
020A 0x025C 020A 0x4567
0208 0x1BC0 0208 0x1BC0
0206 0x0135 +10 0206 0x0135
0204 0x1234 0204 0x1234
0202 0xxxxx 0202 0xxxxx
0200 0xxxxx 0200 0xxxxx
... ... ... ...

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modo de Endereamento Simblico


MOV.W origem, destino

Operao: mover o contedo do endereo simblico de memria origem


para o endereo simblico de memria destino.

Antes Depois
... ... ... ...
0216 0x1506 0216 0x1506
0214 0x1B50 0214 0x1B50
0212 0xFFC7 0212 0xFFC7
destino 0210 0x0201 0210 0x4567
020E 0xxxxx 020E 0xxxxx
020C 0xxxxx 020C 0xxxxx
020A 0x025C 020A 0x025C
0208 0x1BC0 0208 0x1BC0
origem 0206 0x4567 0206 0x4567
0204 0x1234 0204 0x1234
0202 0xxxxx 0202 0xxxxx
0200 0xxxxx 0200 0xxxxx

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modo de Endereamento Absoluto

MOV.W &0x0206, &0x0210


MOV.W &origem, &destino

Operao: mover o contedo do endereo de memria 0x0206(origem) para o


endereo de memria 0x0210(destino).

Antes Depois
... ... ... ...
0216 0x1506 0216 0x1506
0214 0x1B50 0214 0x1B50
0212 0xFFC7 0212 0xFFC7
destino 0210 0x0201 0210 0x4567
020E 0xxxxx 020E 0xxxxx
020C 0xxxxx 020C 0xxxxx
020A 0x025C 020A 0x025C
0208 0x1BC0 0208 0x1BC0
origem 0206 0x4567 0206 0x4567
0204 0x1234 0204 0x1234
0202 0xxxxx 0202 0xxxxx
0200 0xxxxx 0200 0xxxxx

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modo de Endereamento Indireto


MOV.W @R10, 0(R11)

Operao: mover o contedo do endereo de memria apontado pelo


registrador R10, para o endereo de memria 0 + (R11)
Antes Depois
... ... ... ...
C024 ... C024 ...
R10: 0xC01E R10: 0xC01E
C022 0xA002 C022 0xA002
C020 0x4567 C020 0x4567
C01E 0x1234 C01E 0x1234
C01C 0x0C05 C01C 0x0C05
C01A 0xxxxx C01A 0xxxxx
R11: 0x0208 ... ... ... ... R11: 0x0208
020A 0x025C 020A 0x025C
0208 0x1BC0 0208 0x1234
0206 0x3001 0206 0x3001
0204 0x015A 0204 0x015A
0202 0xxxxx 0202 0xxxxx
0200 0xxxxx 0200 0xxxxx
... ... ... ...

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modo de Endereamento Indireto com auto-incremento


MOV.W @R10+, 0(R11)

Operao: mover o contedo do endereo de memria apontado pelo registrador R10,


para o endereo de memria 0 + (R11).
Aps a operao, o registrador R10 acrescido de 1 ou 2 conforme a operao
seja tipo .B/.W
Antes Depois
... ... ... ...
C024 ... C024 ...
R10: 0xC01E R10: 0xC020
C022 0xA002 C022 0xA002
C020 0x4567 C020 0x4567
C01E 0x1234 C01E 0x1234
C01C 0x0C05 C01C 0x0C05
C01A 0xxxxx C01A 0xxxxx
R11: 0x0208 ... ... ... ... R11: 0x0208
020A 0x025C 020A 0x025C
0208 0x1BC0 0208 0x1234
0206 0x3001 0206 0x3001
0204 0x015A 0204 0x015A
0202 0xxxxx 0202 0xxxxx
0200 0xxxxx 0200 0xxxxx
... ... ... ...
Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Modo de Endereamento Imediato

MOV.W #0x6789, &0x0210

Operao: mover o valor 0x6789 para o endereo de memria 0x0210.

Antes Depois
... ... ... ...
0216 0x1506 0216 0x1506
0214 0x1B50 0214 0x1B50
0212 0xFFC7 0212 0xFFC7
0210 0x0201 0210 0x6789
020E 0xxxxx 020E 0xxxxx
020C 0xxxxx 020C 0xxxxx
020A 0x025C 020A 0x025C
0208 0x1BC0 0208 0x1BC0
0206 0x4567 0206 0x4567
0204 0x1234 0204 0x1234
0202 0xxxxx 0202 0xxxxx
0200 0xxxxx 0200 0xxxxx

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


MOV[.W/.B] src, dst (move source to destination)

Operao: src dst

Descrio: o operando de origem movido para o operando de destino. O operan-


do de origem no modificado.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: MOV.B #0x47, &P2OUT


MOV.B &P1IN, R12
MOV.W @R7, 0(R15)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


ADD[.W/.B] src, dst (Add source to destination)

Operao: src + dst dst

Descrio: o operando de origem somado ao operando de destino e o resultado


fica armazenado no operando de destino. O operando de origem no
modificado.
Bits do Registrador de Estado afetados:
N = 1 se o resultado for negativo
N = 0 se o resultado for positivo
Z = 1 se o resultado for zero
Z = 0 se o resultado for diferente de zero
C = 1 se houve a ocorrncia de carry na operao
C = 0 se no houve a ocorrncia de carry na operao
V = 1 se ocorreu um estouro(overflow)
V = 0 se no ocorreu estouro

Exemplo: ADD.W #1234, R6


ADD.W R6, R13
ADD.W R13, soma

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


ADDC[.W/.B] src, dst (Add source and carry to destination)

Operao: src + dst + C dst

Descrio: o operando de origem mais o bit de Carry so somados ao operando de


destino e o resultado fica armazenado no operando de destino. O ope-
rando de origem no modificado.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: ADDC.B #45, R6


ADDC.W R5, R10
ADDC.W @R7, soma

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


DADD[.W/.B] src, dst (Source and carry added decimally to destination)

Operao: src + dst + C dest

Descrio: o operando de origem mais o bit de Carry so somados ao operando de


destino e o resultado fica armazenado no operando de destino. A opera-
o feita em BCD. O operando de origem no modificado.

Bits do Registrador de Estado afetados:


N, Z, C

Exemplo: DADD.W #0x1234, R5


DADD.W @R10, 20(R8)
DADD.B #0x08, R7

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


BIC[.W/.B] src, dst (Clear bits in destination)

Operao: .NOT. src .AND. dst dst

Descrio: realizada uma operao lgica AND entre o complemento do operan-


do de origem e o operando de destino e o resultado fica armazenado no
operando de destino. O operando de origem no modificado.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: BIC.W #0x040F, R5


BIC.W R8, 20(R12)
BIC.B @R7, &P1OUT

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


AND[.W/.B] src, dst (source AND destination)

Operao: src .AND. dst dst

Descrio: realizada uma operao lgica AND entre os operandos e o resultado


fica armazenado no operando de destino. O operando de origem no
modificado.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: AND.B #5A, R5


AND.W R8, 20(R12)
AND.B @R7, &P1OUT

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


BIS[.W/.B] src, dst (Set bits in destination)

Operao: src .OR. dst dst

Descrio: realizada uma operao lgica OR entre o operando de origem e o


operando de destino e o resultado fica armazenado no operando de
destino. O operando de origem no modificado.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: BIS.W #0x0F15, R5


BIS.W R10, 40(R15)
BIS.B #0x20, &P1OUT

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


BIT[.W/.B] src, dst (Test bits in destination)

Operao: src .AND. dst

Descrio: realizada uma operao lgica AND entre o operando de origem e o


operando de destino. O resultado afeta somente os flags do Registrador
de Estado. Nenhum dos operandos modificado.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: BIT.W #0x0F00, R5


BIT.W @R10, 10(R15)
BIT.B #0x08, &P1IN

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


CALL dst (Call subroutine)

Operao: dst tmp


SP 2 SP Empilha o endereo de retorno
PC @SP
tmp PC Coloca no PC o endereo de desvio

Descrio: uma chamada a sub-rotina pode ser feita para qualquer endereo dentro
dos 64kB do address space. Qualquer modo de endereamento pode ser
utilizado.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: CALL #calcular


CALL @R10
CALL 40(R5)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


CMP[.W/.B] src, dst (Compare source and destination)

Operao: dst src

Descrio: o operando de origem subtrado do operando de destino. O resultado


afeta somente os flags do Registrador de Estado. Nenhum dos operan-
dos modificado.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: CMP.W #0x1234, R5


CMP.W @R10, 10(R15)
CMP.B #0x08, &P1IN

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JC label (Jump if carry set)
JHS label (Jump if higher or same)

Operao: desvia se Carry = 1

Descrio: o estado do bit de Carry verificado. Se C = 1, desvia para o endereo


(label) especificado. Se C = 0, a instruo seguinte ao JC executada.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JC label
JHS label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JEQ label
JZ label
Operao: desvia se Z = 1

Descrio: o estado do bit de Zero(Z) verificado. Se Z = 1, desvia para o endereo


(label) especificado. Se Z = 0, a instruo seguinte executada.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JEQ label


JZ label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JGE label (Jump if greater or equal)

Operao: desvia se (N .XOR. V) = 0

Descrio: os estados dos bits N e V so verificados. Se os dois bits forem iguais,


ocorre o desvio para o endereo (label) especificado. Se os dois bits
forem diferentes, a instruo seguinte executada.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JGE label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JL label (Jump if less)

Operao: desvia se (N .XOR. V) = 1

Descrio: os estados dos bits N e V so verificados. Se os dois bits forem diferentes,


ocorre o desvio para o endereo (label) especificado. Se os dois bits forem
iguais, a instruo seguinte executada.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JL label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JMP label (Jump unconditionally)

Operao: desvia para label

Descrio: executado um desvio incondicional para o endereo(label) especificado.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JMP label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JN label (Jump if negative)

Operao: se N = 1, desvia para label

Descrio: se o bit N do Registrador de Estado estiver setado, realizado um desvio


para o endereo(label) especificado. Se o bit N estiver zerado, a instruo
seguinte executada.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JN label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JNC label (Jump if carry not set)
JLO label (Jump if lower)

Operao: se C = 0, desvia para label

Descrio: se o bit C do Registrador de Estado estiver zerado, realizado um desvio


para o endereo(label) especificado. Se o bit C estiver setado, a instruo
seguinte executada.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JNC label


JLO label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


JNE label (Jump if not equal)
JNZ label (Jump if not zero)

Operao: se Z = 0, desvia para label

Descrio: se o bit Z do Registrador de Estado estiver zerado, realizado um desvio


para o endereo(label) especificado. Se o bit Z estiver setado, a instruo
seguinte executada.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: JNE label


JNZ label

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


PUSH[.W/.B] src (Push word/byte onto stack)

Operao: src

Descrio: o Stack Pointer(SP) decrementado por 2 e, aps isso, o operando


movido para o endereo de memria RAM apontado pelo SP (TOS
Topo da Pilha)

Bits do Registrador de Estado afetados:


nenhum

Exemplo: PUSH.B #0x55


PUSH.B @R8
PUSH.W 30(R15)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


RETI (Return from Interrupt)

Operao: TOS SR
SP + 2 SP
TOS PC
SP + 2 SP

Descrio: o Registrador de Estado(SR) que foi colocado na pilha no incio da inter-


rupo restaurado e o Stack Pointer incrementado por 2. O endereo
de retorno colocado no PC e o Stack Pointer incrementado por 2.

Bits do Registrador de Estado afetados:


O Registrador de Estado restaurado, com o valor do incio da
interrupo

Exemplo: RETI

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


RRA[.W/.B] dst (Rotate right arithmetically)

Operao: MSBMSB, MSB MSB-1, ... LSB+1 LSB, LSB C

Descrio: o operando de destino deslocado um bit para a direita. O bit mais sig-
nificativo(MSB) mantido. O bit menos significativo vai para o Carry.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: RRA.B R10


RRA.W @R5
RRA.W 70(R13)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


RRC[.W/.B] dst (Rotate right through carry)

Operao: CMSB, MSB MSB-1, ... LSB+1 LSB, LSB C

Descrio: o operando de destino deslocado um bit para a direita. O Carry vai


para o bit mais significativo(MSB) mantido. O bit menos significativo
vai para o Carry.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: RRC.B R10


RRC.W @R5
RRC.W 70(R13)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


SUB[.W/.B] src, dst (Subtract source from destination)

Operao: dst src dst

Descrio: o operando de origem subtrado do operando de destino e o resultado


armazenado no operando de destino. . O operando de origem no
modificado.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: SUB.B #23, R5


SUB.W R8, R12
SUB.W @R7, 20(R10)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


SUBC[.W/.B] src, dst (Subtract source and borrow/.NOT. carry from destination)
SBB[.W/.B] src, dst

Operao: dst + .NOT. src + C dst

Descrio: o operando de origem subtrado do operando de destino somando o


complemento de 1 do operando de origem e o Carry. O resultado
armazenado no operando de destino.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: SUBC.B R9, R5


SUBC.W 0(R8), R12
SUBC.W @R7, 20(R10)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


SWPB dst (Swap bytes)

Operao: bits 15 a 8 bits 7 a 0

Descrio: os bytes mais significativo e menos significativo do operando de destino


so trocados.

Bits do Registrador de Estado afetados:


nenhum

Exemplo: SWPB R5
SWPB @R8
SWPB 60(R10)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


SXT dst (Extend Sign)

Operao: bit 7 bit 8 bit 15

Descrio: o bit de sinal (bit 7) replicado para os bits 8 a 15.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: SXT R7
SXT @R12
SXT 30(R5)

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues nativas do MSP430


XOR[.W/.B] src, dst (Exclusive OR of source with destination)

Operao: src .XOR. dst dst

Descrio: realizada uma operao lgica XOR entre os operandos e o resultado


fica armazenado no operando de destino. O operando de origem no
modificado.

Bits do Registrador de Estado afetados:


N, Z, C, V

Exemplo: XOR.B #5A, R5


XOR.W R8, 20(R12)
XOR.B @R7, &P1OUT

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


ADC[.W/.B] dst (Add carry to destination)

Operao: dst + C dst

Emulao: ADDC.W #0, dst


0 + C + dst dst
Descrio: o Carry somado ao operando de destino.

BR/BRANCH dst (Branch to destination)

Operao: dst PC

Emulao: MOV.W dst, PC

Descrio: realizado um desvio incondicional para o endereo especificado.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


CLR[.W/.B] dst (Clear destination)

Operao: 0 dst

Emulao: MOV[.W/.B] #0, dst


0 dst
Descrio: o operando de destino zerado.

CLRC (Clear Carry bit)

Operao: 0C

Emulao: BIC.W #0x0001, SR

Descrio: o bit de Carry no Registrador de Estado zerado.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


CLRN (Clear negative bit)

Operao: 0N

Emulao: BIC.W #0x0004, SR

Descrio: o bit de negativo no Registrador de Estado(N) zerado.

CLRZ (Clear Zero bit)

Operao: 0Z

Emulao: BIC.W #0x0002, SR

Descrio: o bit de Zero no Registrador de Estado zerado.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


DADC[.W/.B] dst (Add carry decimally to destination)

Operao: C + dst dest (BCD)

Emulao: DADD[.W/,B] #0, dst

Descrio: o bit de Carry somado ao operando de destino, em BCD.

DEC[.W/.B] dst (Decrement destination)

Operao: dst - 1 dst

Emulao: SUB[.W/.B] #1, dst

Descrio: o operando de destino decrementado em 1.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


DECD[.W/.B] dst (Double-decrement destination)

Operao: dst 2 dest

Emulao: SUB[.W/.B] #2, dst

Descrio: o operando de destino decrementado em 2.

DINT (Disable general interrupts)

Operao: 0 GIE

Emulao: BIC.W #0x0008, SR

Descrio: o bit de Habilitao Geral de Interrupes(GIE), no Registrador de


Estado zerado.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


EINT (Enable general interrupts)

Operao: 1 GIE

Emulao: BIS.W #0x0008, SR

Descrio: o bit de Habilitao Geral de Interrupes(GIE), no Registrador de


Estado setado.

INC[.W/.B] dst (Increment destination)

Operao: dst + 1 dst

Emulao: ADD[.W/.B] #1, dst

Descrio: o operando de destino incrementado em 1.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


INCD[.W/.B] dst (Double-increment destination)

Operao: dst + 2 dest

Emulao: ADD[.W/.B] #2, dst

Descrio: o operando de destino incrementado em 2.

INV[.W/.B] dst (Invert destination)

Operao: .NOT. dst dst

Emulao: XOR.W #0xFFFF, dst


XOR.B #0xFF, dst

Descrio: os bits do operando de destino so complementados.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


NOP (No operation)

Operao: nenhuma

Emulao: MOV.W R3, R3

Descrio: nenhuma operao executada, porm utilizado um ciclo de mquina.

POP[.W/.B] dst (Pop word/byte from stack to destination)

Operao: @SP dst


SP + 2 SP

Emulao: MOV[.W/.B] @SP+, dst

Descrio: o contedo do endereo apontado pelo Stack Pointer(TOS) movido


para o operando de destino.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


RET (Return from subroutine)

Operao: @SP PC
SP + 2 SP

Emulao: MOV.W @SP+, PC

Descrio: o endereo de retorno, colocado na pilha pela instruo CALL movi-


do para o PC. O programa continua a execuo na instruo seguinte
instruo CALL.

RLA[.W/.B] dst (Rotate left arithmetically)

Operao: C MSB MSB-1 LSB+1 LSB 0

Emulao: ADD[.W/.B] dst, dst

Descrio: o operando de destino deslocado um bit para a esquerda. O MSB vai


para o Carry e o LSB preenchido com zero.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


RLC[.W/.B] dst (Rotate left through carry)

Operao: C MSB MSB-1 LSB+1 LSB C

Emulao: ADDC[.W/.B] dst, dst

Descrio: o operando de destino deslocado um bit para a esquerda. O Carry vai


para o LSB e o MSB vai para o Carry.

SBC[.W/.B] dst (Subtract borrow from destination)

Operao: dst + 0FFFFh + C dst

Emulao: SUBC[.W/.B] #0, dst

Descrio: o operando de destino somado ao Carry menos 1.

Prof. Pastro
TE124-Microcontroladores: Assembly MSP430

Instrues emuladas do MSP430


SETC[.W/.B] (Set Carry bit)

Operao: 1C

Emulao: BIS #1, SR

Descrio: O bit de Carry setado.

SETN (Set Negative bit)

Operao: 1N

Emulao: BIS #4, SR

Descrio: o bit de Negativo setado.

Prof. Pastro

Você também pode gostar