assembly msp430 v00 - eletrica.ufpr.breletrica.ufpr.br/~pastro/te124/msp430/assembly_msp430.pdf ·...
TRANSCRIPT
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Microcontrolador da Texas Instruments
Microcontrolador MSP430G2xxx:
Arquitetura von-Neumanncom barramento de dados e barramento de endereços:
• MDB - Memory Data Bus• MAB - Memory Address Bus
CPU de 16 bits com arquitetura RISC
Sistema de Clock flexível – Aplicações de baixo consumo
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Arquitetura do MSP430G2xxx
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Arquitetura do MSP430G2x53
Encapsulamentode 28 Pinos
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Mapeamento de Memória (Address Space) do MSP430
512 bytes03FFh
0C000h
MSP430G2553Information Memory256 bytes
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Direçãodo Pino
Pull-upPull-down
Saída
Entrada
Funçãodo Pino
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registrador de Direção dos pinos: PxDIR
Cada bit dos registradoresPxDIR (P1DIR ou P2DIR) define a direção do pino correspondente da Porta de Entrada/Saída
• Bit = 0, o pino é configurado como entrada
• Bit = 1, o pino é configurado como saída
Exemplo:
10010010P1DIR
P1.7, P1.5, P1.4, P1.2 e P1.1: Entrada
P1.6, P1.3 e P1.0 : Saída
01234567
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registrador para habilitar Pull-up/Pull-down: PxREN
Cada bit dos registradoresPxREN (P1RENou P2REN) habilita ou desabilita o resistor de pull-up/pull-down no pinocorrespondente da Porta de Entrada/Saída
• Bit = 0, resistor de pull-up/pull-down habilitado
• Bit = 1, resistor de pull-up/pull-down desabilitado
Exemplo:
00010000P2REN
Resistor de pull-up/pull-down do pinoP2.3habilitado
01234567
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registrador de entrada: PxIN
Cada bit dos registradoresPxIN reflete o estado do pinocorrespondente da Porta de Entrada/Saída, quando o mesmofor configurado como entrada.
• Bit = 0, o pino está no nível baixo
• Bit = 1, o pino está no nível alto
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registrador de saída: PxOUT
Cada bit dos registradoresPxOUT define o valor a ser colocado no pino correspondente da Porta de Entrada/Saída, quando o mesmo for configurado como saída e o resistor de pull-up / pull-down estiver desabilitado.
• Bit = 0, o pino é colocado no nível baixo
• Bit = 1, o pino é colocado no nível alto
Se o resistor de pull-up / pull-downestiver habilitado cada bit do registrador PxOUT seleciona se o resistor é colocado empull-up ou pull-down.
• Bit = 0, coloca o resistor empull-down
• Bit = 1, coloca o resistor empull-up
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Watchdog Timer- WDT
• O Watchdog timer+ counter(WDTCNT ) é um contador de 16 bits que não é acessível diretamente através de software.
• O WDTCNT é controlado através do registradorWDTCTL .
• A fonte de clock para o WDTCNT pode ser o ACLK ou o SMCLK, selecionável através do bit WDTSSEL.
• Após a condição de Reset, o móduloWDT é automaticamenteconfigurado no modoWatchdog, com clock de 32768Hz.
• O usuário deve alterar o registradorWDTCTL para desabilitar, configurar ou zerar o WDT para evitar um novo resetno sistema.
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Watchdog Timer- WDT
Registrador WDTCTL
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
CPU do MSP430:
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registrador R0: Program Counter(PC)
O Program Counter(PC) é o ponteiro para a próxima instruçãoa ser executada.
Cada instrução do MSP430 utiliza um número par de bytes (2, 4 ou 6 bytes), e o PC é incrementado de acordo com o número de bytes da instrução.
O alinhamento das instruções é feito emwords, assimo Program Counter(PC) é alinhado emendereços pares.
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registrador R1: Stack Pointer(SP)
O Stack Pointer(SP) é utilizado pela CPU para armazenar o endereço de retorno de uma sub-rotina ou de uma interrupção.
O Stack Pointeré pré-decrementado e pós-incrementado:Armazenar um endereço na pilha: o SPé inicialmente decrementado e
após o endereço é colocado na pilha.
Retirar um endereço da pilha: o endereço é retirado da pilha e o SPé incrementado.
O Stack Pointerpode ser utilizado como operando emqualquerinstrução.
O Stack Pointerdeve ser inicializado pelo usuário, emum en-dereço daRAM (normalmente o endereço mais alto daRAM).
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registrador R2: Registrador de Estado(Status Register-SR)
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Registradores de Propósito Geral: R4a R15
Os 12 Registradores, R4a R15, são de Propósito Geral. Todos elespodemser utilizados como registradores de dados, como ponteirosde endereços ou indexadores, podendo ser acessados através de instruções do tipowordou byte.
Transferência Registrador-Byte Transferência Byte-Registrador
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Resete inicialização do microcontrolador
O Power On Reset(POR) é gerado por um dos seguintes eventos:
•Energização do dispositivo;
•Nível baixo no sinal RST/NMI, quando configurado comoRESET;
•Uma condição de nível baixo no SVS.
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Condições iniciais após o Power On Reset
Após o Power On Resetas condições iniciais do MSP430 são:
• O pino RST/NMI é configurado no modoRESET;
• Os pinos de I/O são configurados como entrada;
• Os periféricos e registradores são configurados no mododefault;
• O Registrador de Estado(SR) é resetado;
• O Watchdog Timer é ativado no modoWatchdog
• O PCé carregado com o valor armazenado no endereço0xFFFE(Vetor de reset)
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Após o Reseto usuário deve inicializar o MSP430 de acordocom os requisitos da aplicação:
• Inicializar o Stack Pointer(SP), usualmente no final daRAM;
• Configurar ou desativar o Watchdog;
• Configurar os periféricos de acordo com os requisitos da aplicação;
• Configurar as portas de I/O
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
#include "msp430g2553.h" org 0xfffebc16 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
Anatomia de uma listagemde programa assembly
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
/*-------------------------------------------------------------------------------------------------Programa para inverter o estado do LED vermelho da placaMSP-EXP430G2 com delay entre as mudanças de estado do led.
-------------------------------------------------------------------------------------------------*/#include "msp430.h" // Definicões do MSP430
org 0xFFFEbc16 main
RSEG CODE
main: mov.w #0x0400,SP ; Inicializar stack pointer
mov.w #WDTPW+WDTHOLD,&WDTCTL ; Desativar WDTbis.b #00000001b,&P1DIR ; Pino P1.0 como saídabic.b #00000001b,&P1OUT ; Pino P1.0 = 0
loop: xor.b #0x01,&P1OUT ; Inverter o pino P1.0mov.w #50000,R15 ; Carregar registrador R15
delay: dec.w R15 ; Decrementar R15jnz delay ; Desvia para delay se R15 # 0jmp loop ; Desvia para loop
END
ComentárioComentáriosDiretivado Assembly
ComentáriosLabel(Rótulo)
Anatomia de uma listagemde programa assembly
Mnemônicoda Instruçãode Máquina
Operandos
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Conjunto de Instruções do MSP430
O MSP430 possui um Conjunto de Instruções contendo 27 instruções nativas e 24 instruções emuladas.
Cada uma das 27 instruções nativas possui um Código de Operação que podeser decodificado pela CPU.
As instruções emuladas são instruções que facilitam a codificação e a leitura do programa, porém não possuem um Código de Operação específico. Essas ins-truções são automaticamente substituidas pelo montador (Assembler), por ins-truções nativas equivalentes.
O Conjunto de Instruções nativas do MSP430 está dividido em 3 grupos:
Instruções com dois operandosInstruções com um operando
Instruções de desvio
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Conjunto de Instruçõesnativas do MSP430
Instruções com 2 operandos:
Mnemônico Operandos Operação
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
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Instruções com 1 operando:
Mnemônico Operando Operação
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 interrupção
SXT dst propagar bit de sinal
Conjunto de Instruçõesnativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Instruções de desvio:
Mnemônico Operando Operação
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
Conjunto de Instruçõesnativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Modos de Endereçamento
O MSP430 possui 7 modos de endereçamento para o operando de origem e 4 modos de endereçamento para o operando de destino.
Modos de Endereçamento:
� Registrador
� Indexado
� Simbólico
� Absoluto
� Indireto
� Indireto com auto-incremento
� Imediato
Operando de Origeme de Destino
Operando de Origem
Código da operação Operando de Origem Operando de Destino
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Modo de Endereçamentoa Registrador
MOV.W R10, R11
Operação: mover o conteúdo do RegistradorR10para o RegistradorR11
0x1234R10:
0x80A5R11:
Antes
MOV.B R10, R11
0x1234R10:
0x80A5R11:
Antes
0x1234R10:
0x1234R11:
Depois
0x1234R10:
0x0034R11:
Depois
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
0xC01AR10:
0x0200R11:
Modo de Endereçamento Indexado
MOV.W 6(R10), 10(R11)
Operação: mover o conteúdo do endereço de memória“6 + (R10)” para o endereço de memória“10 + (R11)”
Antes
0x4567C0200x1B0AC01E0xxxxxC01C0xxxxxC01A
. . .C0220xA002C021
. . .. . .
. . .. . .
0x013502060x123402040xxxxx02020xxxxx0200
0x1BC00208
. . .. . .
0x025C020A
Depois
0x4567C0200x1B0AC01E0xxxxxC01C0xxxxxC01A
. . .C0220xA002C021
. . .. . .
. . .. . .
0x013502060x123402040xxxxx02020xxxxx0200
0x1BC00208
. . .. . .
0x4567020A
+6
+10
6(R10)
10(R11)
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Modo de Endereçamento Simbólico
MOV.W origem, destino
Operação: mover o conteúdo do endereço simbólico de memóriaorigempara o endereço simbólico de memóriadestino.
Antes
0x456702060x123402040xxxxx02020xxxxx0200
0x1BC002080x025C020A
0xFFC702120x020102100xxxxx020E0xxxxx020C
0x1B5002140x15060216
. . .. . .
origem
destino
Depois
0x456702060x123402040xxxxx02020xxxxx0200
0x1BC002080x025C020A
0xFFC702120x456702100xxxxx020E0xxxxx020C
0x1B5002140x15060216
. . .. . .
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Modo de Endereçamento Absoluto
MOV.W & 0x0206, &0x0210
Operação: mover o conteúdo do endereço de memória0x0206(origem) para o endereço de memória0x0210(destino).
Antes
0x456702060x123402040xxxxx02020xxxxx0200
0x1BC002080x025C020A
0xFFC702120x020102100xxxxx020E0xxxxx020C
0x1B5002140x15060216
. . .. . .
origem
destino
Depois
0x456702060x123402040xxxxx02020xxxxx0200
0x1BC002080x025C020A
0xFFC702120x456702100xxxxx020E0xxxxx020C
0x1B5002140x15060216
. . .. . .
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
0xC01ER10:
0x0208R11:
Modo de Endereçamento Indireto
MOV.W @R10, 0(R11)
Operação: mover o conteúdo do endereço de memória apontado peloregistrador R10, para o endereço de memória “0 + (R11)”
Antes
0x4567C0200x1234C01E0x0C05C01C0xxxxxC01A
. . .C0240xA002C022
. . .. . .
. . .. . .
0x300102060x015A02040xxxxx02020xxxxx0200
0x1BC00208
. . .. . .
0x025C020A
Depois
0x4567C0200x1234C01E0x0C05C01C0xxxxxC01A
. . .C0240xA002C022
. . .. . .
. . .. . .
0x300102060x015A02040xxxxx02020xxxxx0200
0x12340208
. . .. . .
0x025C020A
0xC01ER10:
0x0208R11:
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
0xC01ER10:
0x0208R11:
Modo de Endereçamento Indireto com auto-incrementoMOV.W @R10+, 0(R11)
Operação: mover o conteúdo do endereço de memória apontado pelo registrador R10, para o endereço de memória “0 + (R11)”.
Após a operação, o registradorR10é acrescido de 1 ou 2 conforme a operaçãoseja tipo .B/.W
Antes
0x4567C0200x1234C01E0x0C05C01C0xxxxxC01A
. . .C0240xA002C022
. . .. . .
. . .. . .
0x300102060x015A02040xxxxx02020xxxxx0200
0x1BC00208
. . .. . .
0x025C020A
Depois
0x4567C0200x1234C01E0x0C05C01C0xxxxxC01A
. . .C0240xA002C022
. . .. . .
. . .. . .
0x300102060x015A02040xxxxx02020xxxxx0200
0x12340208
. . .. . .
0x025C020A
0xC020R10:
0x0208R11:
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Modo de Endereçamento Imediato
MOV.W #0x6789, &0x0210
Operação: mover o valor 0x6789para o endereço de memória0x0210.
Antes
0x456702060x123402040xxxxx02020xxxxx0200
0x1BC002080x025C020A
0xFFC702120x020102100xxxxx020E0xxxxx020C
0x1B5002140x15060216
. . .. . .
Depois
0x456702060x123402040xxxxx02020xxxxx0200
0x1BC002080x025C020A
0xFFC702120x678902100xxxxx020E0xxxxx020C
0x1B5002140x15060216
. . .. . .
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Instruções nativas do MSP430
MOV[.W/.B] src, dst (move source to destination)
Operação: src → dst
Descrição: o operando de origem é movido para o operando de destino. O operando de origem não é modificado.
Bits do Registrador de Estado afetados:nenhum
Exemplo: MOV.B #0x47, &P2OUT
MOV .B &P1IN, R12
MOV .W @R7, 0(R15)
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JMP label (Jump unconditionally)
Operação: desvia para label
Descrição: é executado um desvio incondicional para o endereço(label) especificado.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JMP label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
ADD[.W/.B] src, dst (Add source to destination)
Operação: src+ dst→ dst
Descrição: o operando de origem é somado ao operando de destino e o resultadofica armazenado no operando de destino. O operando de origem nãoé modificado.
Bits do Registrador de Estado afetados:N = 1 se o resultado for negativoN = 0 se o resultado for positivoZ = 1 se o resultado for zeroZ = 0 se o resultado for diferente de zeroC = 1 se houve a ocorrência de carry na operaçãoC = 0 se não houve a ocorrência de carry na operaçãoV = 1 se ocorreu um estouro(overflow)V = 0 se não ocorreu estouro
Exemplo: ADD.W #1234, R6
ADD.W R6, R13
ADD.W R13, soma
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
ADDC[.W/.B] src, dst (Add source and carry to destination)
Operação: src+ dst+ C→ dst
Descrição: o operando de origem mais o bit de Carry são somados ao operandode destino e o resultado fica armazenado no operando de destino. O ope-rando de origem não é modificado.
Bits do Registrador de Estado afetados:N, Z, C, V
Exemplo: ADDC.B #45, R6
ADDC.W R5, R10
ADDC.W @R7, soma
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
DADD[.W/.B] src, dst (Source and carry added decimally to destination)
Operação: src + dst + C → dest
Descrição: o operando de origem mais o bit de Carry são somados ao operandode destino e o resultado fica armazenado no operando de destino. A opera-ção é feita em BCD. O operando de origem não é modificado.
Bits do Registrador de Estado afetados:N, Z, C
Exemplo: DADD.W #0x1234, R5
DADD.W @R10, 20(R8)
DADD.B #0x08, R7
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
BIC[.W/.B] src, dst (Clear bits in destination)
Operação: .NOT.src .AND. dst→ dst
Descrição: é realizada uma operação lógicaAND entre o complemento do operan-do de origem e o operando de destino e o resultado ficaarmazenadono operando de destino. O operando de origem não é modificado.
Bits do Registrador de Estado afetados:nenhum
Exemplo: BIC.W #0x040F, R5
BIC .W R8, 20(R12)
BIC .B @R7, &P1OUT
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Instruções nativas do MSP430AND[.W/.B] src, dst (source AND destination)
Operação: src .AND. dst→ dst
Descrição: é realizada uma operação lógicaAND entre os operandos e o resultadofica armazenado no operando de destino. O operando de origem não é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
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
BIS[.W/.B] src, dst (Set bits in destination)
Operação: src .OR.dst→ dst
Descrição: é realizada uma operação lógicaORentre o operando de origem e o operando de destino e o resultado fica armazenado no operando de destino. O operando de origem não é modificado.
Bits do Registrador de Estado afetados:nenhum
Exemplo: BIS.W #0x0F15, R5
BIS.W R10, 40(R15)
BIS.B #0x20, &P1OUT
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
BIT[.W/.B] src, dst (Test bits in destination)
Operação: src .AND. dst
Descrição: é realizada uma operação lógicaAND entre o operando de origeme o operando de destino. O resultado afeta somente osflagsdo Registradorde 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
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
CALL dst (Call subroutine)
Operação: dst→ tmpSP– 2 → SPPC → @SPtmp→ PC
Descrição: uma chamada a sub-rotina pode ser feita para qualquer endereço dentrodos 64kB do address space. Qualquer modo de endereçamento podeser utilizado.
Bits do Registrador de Estado afetados:nenhum
Exemplo: CALL # calcular
CALL @R10
CALL 40(R5)
Empilha o endereço de retorno
Coloca no PC o endereço de desvio
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
CMP[.W/.B] src, dst (Compare source and destination)
Operação: dst – src
Descrição: o operando de origem é subtraído do operando de destino. O resultadoafeta somente osflagsdo 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
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JC label (Jump if carry set)JHS label (Jump if higher or same)
Operação: desvia se Carry = 1
Descrição: o estado do bit de Carry verificado. Se C = 1, desvia para o endereço(label) especificado. Se C = 0, a instrução seguinte aoJC é executada.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JC label
JHS label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JEQ labelJZ label
Operação: desvia se Z = 1
Descrição: o estado do bit de Zero(Z) éverificado. Se Z = 1, desvia para o endereço(label) especificado. Se Z = 0, a instrução seguinte é executada.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JEQ label
JZ label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JGE label (Jump if greater or equal)
Operação: desvia se (N .XOR.V) = 0
Descrição: os estados dos bits N e V são verificados. Se os dois bits forem iguais, ocorre o desvio para o endereço (label) especificado. Se os dois bits forem diferentes, a instrução seguinte é executada.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JGE label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JL label (Jump if less)
Operação: desvia se (N .XOR.V) = 1
Descrição: os estados dos bits N e V são verificados. Se os dois bits forem diferentes, ocorre o desvio para o endereço (label) especificado. Se os dois bits foremiguais, a instrução seguinte é executada.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JL label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JN label (Jump if negative)
Operação: se N = 1, desvia para label
Descrição: se o bit N do Registrador de Estado estiver setado, é realizado um desviopara o endereço(label) especificado. Se o bit N estiver zerado, a instruçãoseguinte é executada.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JN label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JNC label (Jump if carry not set)JLO label (Jump if lower)
Operação: se C = 0, desvia para label
Descrição: se o bit C do Registrador de Estado estiver zerado, é realizado um desviopara o endereço(label) especificado. Se o bit C estiver setado, a instruçãoseguinte é executada.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JNC label
JLO label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
JNE label (Jump if not equal)JNZ label (Jump if not zero)
Operação: se Z = 0, desvia para label
Descrição: se o bit Z do Registrador de Estado estiver zerado, é realizado um desviopara o endereço(label) especificado. Se o bit Z estiver setado, a instruçãoseguinte é executada.
Bits do Registrador de Estado afetados:nenhum
Exemplo: JNE label
JNZ label
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
PUSH[.W/.B] src (Push word/byte onto stack)
Operação: src
Descrição: o Stack Pointer(SP) é decrementado por 2 e, após isso, o operando émovido para o endereço de memória RAM apontado peloSP(TOS –Topo da Pilha)
Bits do Registrador de Estado afetados:nenhum
Exemplo: PUSH.B #0x55
PUSH.B @R8
PUSH.W 30(R15)
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
RETI (Return from Interrupt)
Operação: TOS → SRSP+ 2 → SPTOS → PCSP + 2 → SP
Descrição: o Registrador de Estado(SR) que foi colocado na pilha no início da inter-rupção é restaurado e o Stack Pointeré incrementado por 2. O endereçode retorno é colocado no PCe o Stack Pointeré incrementado por 2.
Bits do Registrador de Estado afetados:O Registrador de Estado é restaurado, com o valor do início dainterrupção
Exemplo: RETI
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
RRA[.W/.B] dst (Rotate right arithmetically)
Operação: MSB→MSB, MSB →MSB-1, ... LSB+1 → LSB, LSB →C
Descrição: 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)
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
RRC[.W/.B] dst (Rotate right through carry)
Operação: C→MSB, MSB →MSB-1, ... LSB+1 → LSB, LSB →C
Descrição: o operando de destino é deslocado um bit para a direita. O Carry vaipara o bit mais significativo(MSB) é mantido. O bit menos significativovai para o Carry.
Bits do Registrador de Estado afetados:N, Z, C, V
Exemplo: RRC.B R10
RRC.W @R5
RRC.W 70(R13)
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
SUB[.W/.B] src, dst (Subtract source from destination)
Operação: dst – src→ dst
Descrição: o operando de origem é subtraído do operando de destino e o resultadoé armazenado no operando de destino. . O operando de origem não é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)
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
SUBC[.W/.B] src, dst (Subtract source and borrow/.NOT. carry from destination)SBB[.W/.B] src, dst
Operação: dst + .NOT. src + C → dst
Descrição: o operando de origem é subtraído 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)
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
SWPB dst (Swap bytes)
Operação: bits 15 a 8 ↔ bits 7 a 0
Descrição: os bytes mais significativo e menos significativo do operando de destinosão trocados.
Bits do Registrador de Estado afetados:nenhum
Exemplo: SWPB R5
SWPB @R8
SWPB 60(R10)
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
SXT dst (Extend Sign)
Operação: bit 7 → bit 8 … bit 15
Descrição: 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)
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
XOR[.W/.B] src, dst (Exclusive OR of source with destination)
Operação: src .XOR. dst→ dst
Descrição: é realizada uma operação lógicaXORentre os operandos e o resultadofica armazenado no operando de destino. O operando de origem não é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
Instruções nativas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
Instruções emuladas do MSP430
ADC[.W/.B] dst (Add carry to destination)
Operação: dst + C → dst
Emulação: ADDC.W #0, dst
0 + C + dst→ dst
Descrição: o Carry é somado ao operando de destino.
BR/BRANCH dst (Branch to destination)
Operação: dst→ PC
Emulação: MOV.W dst, PC
Descrição: é realizado um desvio incondicional para o endereço especificado.
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
CLR[.W/.B] dst (Clear destination)
Operação: 0→ dst
Emulação: MOV[.W/.B] #0, dst
0 → dst
Descrição: o operando de destino é zerado.
CLRC (Clear Carry bit)
Operação: 0→ C
Emulação: BIC.W #0x0001, SR
Descrição: o bit de Carry no Registrador de Estado é zerado.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
CLRN (Clear negative bit)
Operação: 0→ N
Emulação: BIC.W #0x0004, SR
Descrição: o bit de negativo no Registrador de Estado(N) é zerado.
CLRZ (Clear Zero bit)
Operação: 0→ Z
Emulação: BIC.W #0x0002, SR
Descrição: o bit de Zero no Registrador de Estado é zerado.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
DADC[.W/.B] dst (Add carry decimally to destination)
Operação: C + dst→ dest (BCD)
Emulação: DADD[.W/,B] #0, dst
Descrição: o bit de Carry é somado ao operando de destino, em BCD.
DEC[.W/.B] dst (Decrement destination)
Operação: dst- 1→ dst
Emulação: SUB[.W/.B] #1, dst
Descrição: o operando de destino é decrementado em 1.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
DECD[.W/.B] dst (Double-decrement destination)
Operação: dst –2→ dest
Emulação: SUB[.W/.B] #2, dst
Descrição: o operando de destino é decrementado em 2.
DINT (Disable general interrupts)
Operação: 0→ GIE
Emulação: BIC.W #0x0008, SR
Descrição: o bit de Habilitação Geral de Interrupções(GIE), no Registrador de Estado é zerado.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
INC[.W/.B] dst (Increment destination)
Operação: dst+ 1→ dst
Emulação: ADD[.W/.B] #1, dst
Descrição: o operando de destino é incrementado em 1.
EINT (Enable general interrupts)
Operação: 1→ GIE
Emulação: BIS.W #0x0008, SR
Descrição: o bit de Habilitação Geral de Interrupções(GIE), no Registrador de Estado é setado.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
INCD[.W/.B] dst (Double-increment destination)
Operação: dst + 2→ dest
Emulação: ADD[.W/.B] #2, dst
Descrição: o operando de destino é incrementado em 2.
INV[.W/.B] dst (Invert destination)
Operação: .NOT. dst→ dst
Emulação: XOR.W #0xFFFF, dstXOR.B #0xFF, dst
Descrição: os bits do operando de destino são complementados.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
POP[.W/.B] dst (Pop word/byte from stack to destination)
Operação: @SP→ dstSP + 2→ SP
Emulação: MOV[.W/.B] @SP+, dst
Descrição: o conteúdo do endereço apontado peloStack Pointer(TOS) é movidopara o operando de destino.
NOP (No operation)
Operação: nenhuma
Emulação: MOV.W R3, R3
Descrição: nenhuma operação é executada, porém é utilizado um ciclo de máquina.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
RLA[.W/.B] dst (Rotate left arithmetically)
Operação: C← MSB ← MSB-1 … LSB+1 ← LSB← 0
Emulação: ADD[.W/.B] dst, dst
Descrição: o operando de destino é deslocado um bit para a esquerda. O MSB vaipara o Carry e oLSB é preenchido com zero.
RET (Return from subroutine)
Operação: @SP→ PCSP + 2→ SP
Emulação: MOV.W @SP+, PC
Descrição: o endereço de retorno, colocado na pilha pela instrução CALL é movi-do para o PC. O programa continua a execução na instrução seguinteà instrução CALL.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
SBC[.W/.B] dst (Subtract borrow from destination)
Operação: dst + 0FFFFh + C → dst
Emulação: SUBC[.W/.B] #0, dst
Descrição: o operando de destino é somado aoCarry menos 1.
RLC[.W/.B] dst (Rotate left through carry)
Operação: C← MSB ← MSB-1 … LSB+1 ← LSB← C
Emulação: ADDC[.W/.B] dst, dst
Descrição: o operando de destino é deslocado um bit para a esquerda. O Carry vaipara o LSB e o MSB vai para o Carry.
Instruções emuladas do MSP430
TE124-Microcontroladores:
Prof. Pastro
AssemblyMSP430
SETN (Set Negative bit)
Operação: 1→ N
Emulação: BIS #4, SR
Descrição: o bit de Negativoé setado.
SETC[.W/.B] (Set Carry bit)
Operação: 1→ C
Emulação: BIS #1, SR
Descrição: O bit de Carry é setado.
Instruções emuladas do MSP430