Buscar

Conjunto de instruções MSP430

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 1 
 
 
Conjunto de Instruções 
 
Introdução 
 
 
A CPU do microcontrolador MSP430 tem um reduzido conjunto de instruções (RISC). São apenas 27 
instruções executadas pelo hardware, contudo o gerador de constante auxilia ao programa montador (assembly) do 
MSP emular mais 24 instruções. A seção seguinte descreve todas as instruções do núcleo do MSP e instruções 
emuladas de forma detalhada. 
• As instruções aparecerão em ordem alfabética. 
• O sufixo .W ou a ausência de sufixo no mnemônico da instrução indica operação de 16 bits ou operação 
de word e o sufixo .B indica operação de 8 bits ou operação de byte. 
• As letras src ( source ) e dst ( destiny ) significam operando fonte e operando destino respectivamente. 
• A cerquilha (#) é utilizada para carregar valores numéricos nos locais indicados. 
• O comercial (&) é um ponteiro para um destino. 
• O asterisco (*) na frente da instrução indica que a mesma é emulada. 
• Nas instruções emuladas, os bits de status são afetados conforme a instrução original. 
 
Descrição das instruções 
 
 
1) *ADC[.W] Adiciona o bit de carry ao destino 
 *ADC.B adiciona o bit de carry ao destino 
 
Sintaxe ADC dst ou ADC.W dst 
 ADC.B dst 
 
Operação dst + C � dst 
 
Emulação ADDC #0,dst 
 ADDC.B #0,dst 
 
Descrição O bit de carry (C) é somado ao operando destino. O conteúdo anterior do operando 
destino é perdido. 
 
Bits de status N: Setado se o resultado for negativo, resetado se positivo 
 Z: Setado se resultado for zero, caso contrário resetado 
C: Setado se dst foi incrementado de 0FFFF para 0000, resetado em caso 
contrário. 
 Setado se dst foi incrementado de 0FFh para 00, resetado em caso 
contrário. 
V: Setado se ocorrer um overflow aritmético, resetado em caso contrário. 
 
Exemplo 1 Um contador de 16 bits apontado por R13 é adicionado a um contador de 32 bits 
apontado por R12. 
 ADD @R13, 0(R12) ;Adiciona a word menos significativa 
 ADC 2(R12) ;adiciona o carry a word mais signif. 
 
Exemplo 2 Um contador de 8 bits apontado por R13 e adicionado a um contador de 16 bits 
apontado por R12. 
 ADD.B @R13, 0(R12) ;adiciona LSD 
 ADC.B 1(R12) ;adiciona o carry ao MSD 
 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 2 
 
2) ADD[.W] Adiciona a fonte ao destino 
 ADD.B Adiciona a fonte ao destino 
 
Sintaxe ADD src, dst 
 ADD.B src, dst 
 
Operação src + dst � dst 
 
Descrição O operando fonte e adicionado ao operando destino. O operando fonte não é afetado. 
O operando destino perde o conteúdo prévio para armazenar o resultado da 
operação. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo. 
Z: Setado se o resultado for zero, resetado em caso contrário. 
C: Setado se houver carry no resultado, resetado em caso contrário. 
V: Setado se ocorrer um overflow aritmético, resetado em caso contrário. 
 
Exemplo R5 é incrementado de 10. Ocorrerá o jump se houver um carry 
 ADD #10, R5 
 JC TONI ;fará o salto se carry 
 ... ;não ocorreu o carry. 
 
 
 
3) ADDC[.W] Adiciona a fonte e o carry ao destino 
 ADDC.B 
 
Sintaxe ADDC src, dst 
 ADDC.B src, dst 
 
Operação src + dst + C � dst 
 
Descrição O operando fonte e o bit de carry são adicionados ao operando destino. O operando 
fonte não é afetado. O operando destino perde o prévio conteúdo para armazenar o 
resultado da operação. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo. 
Z: Setado se o resultado for zero, resetado em caso contrário. 
C: Setado se houver carry no resultado, resetado em caso contrário. 
V: Setado se ocorrer um overflow aritmético, resetado em caso contrário. 
 
Exemplo Um contador de 32 bits apontado por R13 é adicionado a outro contador de 32 bits, 
onze palavras acima (20/2 + 2/2). 
 ADD @R13+, 20(R13) ;adiciona os LSD’s sem o carry 
ADDC @R13+, 20(R13) ;adiciona os MSD’s com o ;carry dos LSD’s. 
 
 
4) AND[.W] Fonte AND destino 
 AND.B 
 
Sintaxe AND src, dst 
 AND.B src, dst 
 
Operação src AND dst � dst 
 
Descrição Realiza a operação lógica AND entre os operandos fonte e destino. O operando fonte 
não é afetado e o operando destino conterá o resultado da operação. 
 
Bits de status N: Setado se o MSB do resultado for um, resetado se zero. 
 Z: Setado se resultado zero. Resetado em caso contrário. 
C: Setado se resultado diferente de zero, resetado em caso contrário. ( NOT 
ZERO ) 
V: Resetado. 
 
Exemplo O registro R5 é usado para mascarar (#0AA55h) a palavra endereçada por TOM. Se o 
resultado for zero saltará para o rótulo TONI. 
 MOV #0AA55h, R5 ;carrega a mascara em R5 
 AND R5, TOM ;Mascara a palavra TOM com R5 
 JZ TINI ;salta se resultado igual a zero 
 ... ;resultado diferente de zero 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 3 
 
 
5) BIC[.W] Zera os bits do destino 
 BIC.B 
 
Sintaxe BIC src, dst 
 BIC.B src,dst 
 
Operação NOT src AND dst � dst 
 
Descrição Realiza a operação lógica AND entre o operando fonte invertido e o operando destino. 
O operando fonte não é afetado e o resultado é armazenado no destino. 
 
Bits de status Não afetados 
 
Exemplo Zera os seis bits mais significativos da palavra LEO. 
 BIC #0FC00, LEO 
Exemplo Zera os bits 0 e 1 da porta P0. 
 P0OUT .equ 011h ;definição do endereço da porta. 
 P0_0 .equ 01h 
 P0_1 .equ 02h 
 BIC.B #P0_0+P0_1, &P0OUT ;zera os 2 LSB’s de P0 
 
 
6) BIS[.W] Seta os bits do destino 
 BIS.B 
 
Sintaxe BIS src,dst 
 BIS.B src,dst 
 
Operação src OR dst � dst 
 
Descrição Realiza a operação lógica OR entre os operandos fonte e destino. O operando fonte 
não é afetado e o resultado da operação é armazenado no operando destino. 
 
Bits de status Não afetados 
 
Exemplo Seta os seis bits menos significativos da word TOM. 
 BIS #003Fh, TOM 
Exemplo Seta os 2 LSB’s da porta P0. 
 P0OUT .equ 011h 
 P0 .equ 01h 
 P1 .equ 02h 
 BIS.B #P0+P1, &P0OUT 
 
 
7) BIT[.W] Testa bits no destino 
 BIT.B 
 
Sintaxe BIT src, dst 
 
Operação src AND dst 
 
Descrição Realiza a operação lógica AND entre a fonte e o destino. O resultado afeta somente os 
bits de status. Os operandos fonte e destino não são afetados. 
 
Bits de status N: Setado se o MSB do resultado estiver setado, resetado em caso contrário. 
 Z: Setado se resultado zero, resetado caso contrário. 
 C: Setado se resultado não zero, resetado caso contrário 
 V: Resetado. 
 
Exemplo Se o bit 9 de R8 estiver setado, salte para o label TOM. 
 BIT #0200h, R8 ;Bit 9 está setado? 
 JNZ TOM ;sim, vá para TOM 
 ... ;não, continua. 
Exemplo Se o bit 3 de R8 estiver setado, salta para o label TOM. 
 BIT.B #8, R8 
 JC TOM 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 4 
 
 
8) *BR, Branch Salta para o destino. 
 
Sintaxe BR dst 
 
Operação dst � PC 
 
Emulação MOV dst, PC 
 
Descrição Realiza um alto incondicional numa faixa de endereços de 64k. Todos os modos de 
endereçamento podem ser usados. Esta é uma instrução de 16 bits. 
 
Bits de status Não são afetados. 
 
Exemplos BR #EXEC ;salta para o label exec. 
 BR EXEC ;salta para o endereço contido em EXEC 
BR &EXEC ;salta p/ o endereço contido no endereço ;absoluto EXEC 
BR R5 ;salta para o endereço contido em R5. 
BR @R5 ;salta p/ o endereço contido na word 
 ;apontada por R5. 
BR @R5+ ;Idem anterior e incrementa R5 após. 
BR X(R5) ;salta p/ o endereço contido no endereço 
 ;apontado por R5 + X. 
 
 
9) CALL Chamada de sub-rotina 
 
Sintaxe CALL dst 
 
Operação SP - 2 � SP 
 PC � @SP 
 dst � PC 
 
Descrição Realiza a chamada de uma sub-rotina numa faixa de endereços de 64k. Todos osmodos de endereçamento podem ser usados. O endereço de retorno é armazenado na 
pilha. CALL é instrução de 16 bits. 
 
Bits de status Não são afetados. 
 
Exemplos CALL #EXEC ;chama o label EXEC 
 CALL EXEC ;chama o endereço contido em 
 ;EXEC. 
 CALL &EXEC ;chama o endereço contido no 
 ;endereço absoluto EXEC. 
 CALL R5 ;chama o endereço contido em R5. 
 CALL @R5 ;chama o endereço contido na word 
 ;apontada por R5. 
 CALL @R5+ ;idem anterior com pós incremento. 
 CALL X(R5) ;chama o endereço contido no 
 ;endereço apontado por R5 + X. 
 
 
10) *CLR[.W] Zera destino 
 CLR.B 
 
Sintaxe CLR dst 
 CLR.B dst 
 
Operação 0 � dst 
 
Emulação MOV #0, dst 
 MOV.B #0, dst 
 
Descrição O operando destino é zerado. 
 
Bits de status Não são afetados. 
 
Exemplos CLR TONI ;a palavra TONI é zerada 
 CLR R5 ;zera R5 
 CLR.B TONI ;o byte TONI é zerado 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 5 
 
 
11) *CLRC Zera o bit de carry 
 
Sintaxe CLRC 
 
Operação 0 � C 
 
Emulação BIC #1,SR 
 
Descrição Zera o bit de carry. Esta é uma instrução de 16 bits. 
 
Bits de status N: Não afetado 
 Z: Não afetado 
 C: Zerado 
 V: Não afetado 
 
Exemplo Um contador decimal de 16 bits apontado por R13 é somado a um contador de 32 
bits apontado por R12. 
 CLRC 
 DADD @R13, 0(R12) ;adiciona a parte baixa. 
 DADC 2(R12) ;adiciona o carry a parte alta. 
 
 
 
 
12) *CLRN Zera o bit negativo 
 
Sintaxe CLRN 
 
Operação 0 � N 
 
Emulação BIC #4, SR 
 
Descrição O bit N do registro de status é zerado. Esta é uma instrução de 16 bits. 
 
Bits de status N: Zerado 
 Z: Não afetado 
 C: Não afetado 
 V: Não afetado 
 
Exemplo CLRN 
 
 
 
 
13) *CLRZ Zera o bit de status Z 
 
Sintaxe CLRZ 
 
Operação 0 � Z 
 
Emulação BIC #2, SR 
 
Descrição O bit de zero do registro de status é zerado. Esta é uma instrução de 16 bits. 
 
Bits de status N: Não afetado 
 Z: Zerado 
 C: Não afetado 
 V: Não afetado 
 
Exemplo CLRZ 
 
 
 
 
 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 6 
 
 
14) CMP[.W] Compara fonte e destino 
 CMP.B 
 
Sintaxe CMP src, dst 
 CMP.B src, dst 
 
Operação dst - src 
 
Descrição O operando fonte é subtraído do operando destino. Isto é feito somando o operando 
destino com o segundo complemento (1º complemento + 1) do operando fonte. Os 
dois operandos não são afetados e o resultado não é armazenado. Somente os bits de 
status são afetados. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo. 
 Z: Setado se resultado zero, resetado em caso contrário. 
 C: Setado se houver ‘vai um’ do MSB, resetado caso contrário. 
V: Setado se houver um overflow aritmético, resetado caso 
 contrário. 
 
Exemplos Os registro R5 e R6 são comparados. Se forem iguais, o programa continua no rótulo 
IGUAL. 
 CMP R5, R6 ;R5 = R6 ? 
 JEQ IGUAL ;se sim, salte para IGUAL. 
 Dois blocos de RAM são comparados. Se não são iguais, vai para o rotulo ERRO. 
 MOV #NUM, R5 ;número de palavras a serem comp. 
L$1 CMP &BLOCO1, BLOCO2 ;são iguais? 
 JNZ ERRO ;se não vá para ERRO 
 DEC R5 ;todas as palavras foram comp. 
 JNZ L$1 ;se não volte para nova comp. 
 
 
 
 
15) *DADC[.W] Soma BCD o carry ao destino 
 *DADC.B 
 
Sintaxe DADC dst 
 DADC.B dst 
 
Operação dst + C � dst (decimal) 
 
Emulação DADD #0, dst 
 DADD.B #0, dst 
 
Descrição O bit de carry é somado (BCD ou decimal) com o destino. 
 
Bits de status N: Setado se o MSB é 1. 
 Z: Setado se o destino for 0, resetado em caso contrário. 
 C: Setado se o destino incrementa de 9999 para 0000, 
 Resetado em caso contrário. 
 Setado se o destino incrementa de 99 para 00, resetado 
 em caso contrário. 
 V: Indefinido. 
 
Exemplos Quatro dígitos decimais contidos em R5 são adicionados a oito dígitos decimais 
apontados por R8. 
 CLRC 
 DADD R5, 0(R8) ;soma os LSD’s 
 DADC 2(R8) ;soma o carry ao MSD. 
 
 Dois dígitos decimais contidos em R5 são somados a quatro dígitos decimais 
apontados por R8. 
 CLRC 
 DADD.B R5, 0(R8) 
 DADC.B 1(R8) 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 7 
 
 
 
16) DADD[.W] Soma fonte, carry e destino (BCD) 
 DADD.B 
 
Sintaxe DADD src, dst 
 DADD.B src, dst 
 
Operação src + dst + C � dst (decimal) 
 
Descrição O operando fonte e destino são tratados como números BCD positivos. O operando 
fonte e o carry bit são somados BCD ao operando destino. O operando fonte não é 
afetado. O conteúdo prévio do destino é perdido, para o mesmo conter o resultado da 
operação. O resultado é indefinido para números não BCD. 
 
Bits de status N: Setado se o MSB é 1, resetado se 0. 
 Z: Setado se resultado zero, resetado em caso contrário. 
 C: Setado se resultado maior que 9999 
 Setado se resultado maior que 99 
 V: Indefinido 
 
Exemplos Um número de oito dígitos BCD contido em R5 e R6 é somado a outro numero de 
oito dígitos BCD contido em R3 e R4. R6 e R4 contêm os MSD’s. 
 CLRC 
 DADD R5, R3 ;adiciona os LSD’s 
 DADD R6, R4 ;adiciona os MSD’s com carry. 
 JC OVERFLOW ;se carry, vá para rotina de erro. 
 Incrementa de 1 um contador de dois dígitos decimal (CNT). 
 CLRC 
 DADD.B #1, CNT 
 
 
 
 
17) *DEC[.W] Decrementa o destino 
 *DEC.B 
 
Sintaxe DEC dst 
 DEC.B dst 
 
Operação dst - 1 � dst 
 
Emulação SUB #1, dst 
 SUB.B #1, dst 
 
Descrição O operando destino é decrementado de 1. O conteúdo original é perdido. 
 
Bits de status N: Setado se resultado é negativo, resetado caso contrário 
 Z: Setado se resultado é zero, resetado em caso contrário 
 C: Resetado se destino vai de 0000h para FFFFh, setado 
 caso contrário. 
 V: Setado se ocorrer um overflow aritmético, resetado em 
 caso contrário. 
 Seta se o valor inicial do destino for 8000h (word) ou 
 80h (byte), reseta em caso contrário. 
 
Exemplo Move um bloco de 255 bytes de memória com endereço inicial EDE, para outro bloco 
de memória com endereço inicial TONI. 
 MOV #EDE, R6 
 MOV #TONI, R5 
 MOV #255, R4 
L$1 MOV.B @R6+, 0(R5) 
 INC R5 
 DEC R4 
 JNZ L$1 
 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 8 
 
 
18) *DECD[.W] Decremento duplo do destino 
 *DECD.B 
 
Sintaxe DECD dst 
 DECD.B dst 
 
Operação dst - 2 � dst 
 
Emulação SUB #2, dst 
 SUB.B #2, dst 
 
Descrição O operando destino é decrementado de 2. O conteúdo original é perdido. 
 
Bits de status N: Setado se resultado é negativo, resetado se positivo 
 Z: Setado se resultado é zero, resetado caso contrário 
 C: Resetado se destino vai de 0000h para FFFFh, setado 
 em caso contrário. 
 V: Setado se ocorrer um overflow aritmético, resetado 
 caso contrário. 
 Seta se o valor inicial do destino for 8001h ou 8000h 
 em operações de word, e 80h ou 81h em operações de 
byte, reseta caso contrário. 
 
Exemplo DECD R10 ;decrementa R10 de duas unidades. 
 
 
 
19) *DINT Desabilita (geral) interrupções. 
 
Sintaxe DINT 
 
Operação 0 � GIE 
 
Emulação BIC #8, SR 
 
Descrição Todas as interrupções são desabilitadas. Realiza a operação lógica AND entre a 
constante 08h e o registro de status. O resultado é armazenado em SR. 
 
Bits de status Os bits de status não são afetados 
 
Bits de modo Somente o bit GIE é resetado 
 
Exemplo O bit geral de interrupção é zerado para permitir a carga do contador de 32 bits sem 
interrupções. 
 DINT ;desabilita todas as interrupções 
 NOP 
 MOV COUNTHI, R5 ;faz a carga do contador 
 MOV COUNTLO, R6 
 EINT ;habilita todas as interrupções. 
 
 
 
20) *EINT Habilita (geral) interrupções 
 
SintaxeEINT 
 
Operação 1 � GIE 
 
Emulação BIS #8, SR 
 
Descrição Todas as interrupções são habilitadas. Realiza a operação lógica OR entre a 
constante 08h e o registro de status. O resultado é armazenado em SR. 
 
Bits de status Não afetados 
 
Bits de modo Somente o bit GIE é setado 
 
Exemplo Idem anterior. 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 9 
 
 
21) *INC[.W] Incrementa destino 
 *INC.B 
 
Sintaxe INC dst 
 INC.B dst 
 
Operação dst + 1 � dst 
 
Emulação ADD #1, dst 
 
Descrição Soma 1 ao operando destino. O conteúdo original é perdido. 
 
Bits de status N: Setado se resultado é negativo, resetado se positivo 
 Z: Setado se resultado é zero, resetado em caso contrário 
 C: Setado se destino vai de FFFFh para 0000h (word), ou 
 FFh para 00h (byte), resetado em caso contrário. 
 V: Setado se ocorrer um overflow aritmético, resetado 
 caso contrário. Seta se o valor inicial do destino for 
7FFFh (Word), e 7Fh (byte), reseta em caso contrário. 
 
Exemplo O byte STATUS é incrementado. Quando ele é igual a 11, vai para OVFL. 
 INC.B STATUS 
 CMP.B #11, STATUS 
 JEQ OVFL 
 
 
 
 
22) *INCD[.W] Incremento duplo no destino 
 *INCD.B 
 
Sintaxe INCD dst 
 INCD.B dst 
 
Operação dst + 2 � dst 
 
Emulação ADD #2, dst 
 ADD.B #2, dst 
 
Descrição Soma 2 ao operando destino. O conteúdo original é perdido. 
 
Bits de status N: Setado se resultado é negativo, resetado se positivo 
 Z: Setado se resultado é zero, resetado em caso contrário 
 C: Setado se destino vai de FFFFh para 0000h (Word), ou 
 FFh para 00h (byte), resetado em caso contrário. 
 V: Setado se ocorrer um overflow aritmético, resetado em 
caso contrário. Seta se o valor inicial do destino for 7FFEh ou 7FFFh 
(word), e 7Eh ou 7Fh (byte), reseta em caso contrário. 
 
Exemplos O dado no topo da pilha é removido sem usar registro. 
 PUSH R5 
 INCD SP ;não usar INCD.B, pois SP é word alinhado 
 
 O byte no topo da pilha é incrementado por 2. 
 INCD.B 0(SP) 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 10 
 
 
23) *INV[.W] Inverte o destino 
 *INV.B 
 
Sintaxe INV dst 
 INV.B dst 
 
Operação NOT dst � dst 
 
Emulação XOR #0FFFFh, dst 
 XOR.B #0FFh, dst 
 
Descrição Inverte o operando de destino. O conteúdo original é perdido. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado é zero, resetado em caso contrário 
 C: Resetado se resultado é zero, setado em caso contrário 
 V: Setado se conteúdo inicial do destino é negativo, 
 Resetado em caso contrário. 
 
Exemplo Encontra o segundo complemento de R5. 
 MOV #00Aeh, R5 
 INV R5 
 INC R5 
 
 
 
24) JC ou JHS Jump se o bit carry estiver setado ou Jump se maior ou igual 
 
Sintaxe JC rótulo ou JHS rótulo 
 
Operação Se C = 1: PC + 2 x offset � PC 
 Se C = 0: executa a instrução seguinte 
 
Descrição O bit C do registro de status é testado. Se estiver setado, o 
 número sinalizado de 10 bits (offset) contido nos LSB’s da 
 instrução, é somado ao PC. Se estiver resetado, a próxima 
 instrução após o jump será executada. JC é usado para 
 comparação de números não sinalizados. 
 
Bits de status Não afetados. 
 
Exemplo R5 é comparado com 15. Se for maior ou igual salta. 
 CMP #15, R5 
 JHS SALTA ;salta se R5 >= 15 
 ... ;continua se R5 < 15 
 
 
 
25) JEQ ou JZ - Jump se igual ou jump se zero. 
 
Sintaxe JEQ rótulo ou JZ rótulo 
 
Operação Se Z = 1: PC + 2 x offset � PC 
 Se Z = 0: executa a instrução seguinte 
 
Descrição O bit Z do registro de status é testado. Se estiver setado, o 
 número sinalizado de 10 bits (offset) contido nos LSB’s da 
 instrução é somado ao PC. Se Z estiver resetado a instrução 
 seguinte ao JUMP é executada. 
 
Bits de status Não afetados. 
 
Exemplo Salta para o endereço LEO se R6 é igual ao conteúdo da 
 tabela. 
 CMP R6, tabela(R5) 
 JEQ LEO 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 11 
 
 
 
26) JGE Jump maior ou igual 
 
Sintaxe JGE rótulo 
 
Operação Se (N XOR V) = 0 então salte p/ o rótulo:PC + 2xoffset � PC 
 Se (N XOR V) = 1 então execute a próxima instrução. 
 
Descrição Os bits N e V do registro de status são testados. Se os bits N e V são iguais (set ou 
reset), os 10 bits sinalizados contidos nos LSB’s da instrução são somados ao PC e o 
salto é realizado. Se apenas um dos bits é setado, a instrução seguinte ao jump é 
executada. Esta instrução é usada para comparação de números inteiros 
sinalizados. 
 
Bits de status Não afetados. 
 
Exemplo Quando o conteúdo de R6 é maior ou igual ao conteúdo da memória apontada por 
R7, o programa continua no rotulo EDE 
 CMP @R7,R6 ;R6 >= (R7) ?, números sinalizados. 
 JGE EDE ;se sim, vá para EDE 
 ..... ;se não, continue. 
 
 
 
 
27) JL Jump se menor (less) 
 
Sintaxe JL rótulo 
 
Operação Se (N XOR V) = 1 então salte p/ o rótulo:PC + 2xoffset � PC 
 Se (N XOR V) = 0 então execute a próxima instrução. 
 
Descrição Os bits N e V do registro de status são testados. Se apenas um dos bits é setado, os 
10 bits sinalizados contidos nos LSB’s da instrução são somados ao PC e o salto é 
realizado. Se os bits N e V são iguais (set ou reset), a instrução seguinte ao jump é 
executada. Esta instrução é usada para comparação de números inteiros 
sinalizados. 
 
Bits de status Não afetados. 
 
Exemplo Quando o conteúdo de R6 é menor que o conteúdo da memória apontada por R7, o 
programa salta para EDE. 
 CMP @R7, R6 ;R6 < (R7) ?, números sinalizados. 
 JL EDE ;se sim, vá p/ EDE 
 ..... ;se não, continue. 
 
 
 
 
28) JMP Jump incondicional 
 
Sintaxe JMP rótulo 
 
Operação PC + 2 x offset � PC 
 
Descrição O número sinalizado de 10 bits contidos nos LSB’s da instrução é somado ao PC. 
 
Bits de status Não afetados. 
 
Sugestão Esta instrução de uma word, substitui a instrução BRANCH na faixa de –511 a 
+512 words relativos ao corrente PC. 
 
 
 
 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 12 
 
 
29) JN Jump se negativo 
 
Sintaxe JN rótulo 
 
Operação Se N = 1, então salta p/ o rótulo: PC + 2 x offset � PC 
 Se N = 0, execute a próxima instrução. 
 
Descrição O bit N do registro de status é testado. Se estiver setado, o número sinalizado de 10 
bits contido nos LSB’s da instrução é adicionado ao PC. Se N estiver resetado, então 
executa a próxima instrução após o jump. 
 
Bits de status Não afetados. 
 
Exemplo O resultado de um processamento em R5 é subtraído de COUNT. Se o resultado for 
negativo, COUNT é zerado e o programa continua a execução em outro caminho. 
 SUB R5, COUNT ;COUNT – R5 � COUNT 
 JN L$1 ;se negativo COUNT=0 em PC=L$1 
 ..... ;se positivo, continue com COUNT>=0 
L$1 CLR COUNT 
 
 
 
 
30) JNC, JLO Jump se não carry ou jump se menor (lower) 
 
Sintaxe JNC rótulo ou JLO rótulo 
 
Operação Se C = 0, então salta p/ rótulo: PC + 2 x offset � PC 
 Se C = 1, execute a próxima instrução. 
 
Descrição O bit C do registro de status é testado. Se ele estiver resetado, o número sinalizado 
de 10 bits contido nos LSB’s da instrução é somado ao PC. Se C estiver setado então 
a próxima instrução após o jump é executada. Esta instrução é usada para 
comparar números sem sinal (0 a 65.535) 
 
Bits de status Não afetados 
 
Exemplo O resultado de um processamento em R6 é somado a BUFFER. Se ocorrer ‘vai um’ 
uma rotina de erro é usada no endereço ERRO. 
 ADD R6, BUFFER 
 JNC CONT ;se não carry vá p/ CONT 
ERRO ...... ;inicioda rotina de erro 
 ...... 
CONT ...... ;Continua com o fluxo normal 
 
 
 
 
31) JNE, JNZ Jump se não igual ou jump se não zero 
 
Sintaxe JNE rótulo ou JNZ rótulo 
 
Operação Se Z = 0, então salta p/ o rótulo: PC + 2 x offset � PC 
 Se Z = 1, então executa a próxima instrução 
 
Descrição O bit Z do registro de status é testado. Se ele estiver resetado, o número sinalizado 
de 10 bits contido nos LSB’s da instrução é somado ao PC. Se Z estiver setado, então 
executa a próxima instrução após o jump. 
 
Bits de status Não afetados. 
 
Exemplo Salta para TONI se R7 e R8 tiverem conteúdos diferentes. 
 CMP R7, R8 ;compara R7 com R8 
 JNE TONI ;salta para TONI se diferente 
 ..... ;continua se igual. 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 13 
 
 
32) MOV[.W] Move fonte para destino 
 MOV.B 
 
Sintaxe MOV src, dst 
 MOV.B src, dst 
 
Operação src � dst 
 
Descrição O conteúdo do operando fonte é movido para o operando destino. O operando fonte 
não é afetado. O conteúdo prévio de operando destino é perdido. 
 
Bits de status Não afetado 
 
Exemplo Os conteúdos da tabela endereçada por EDE são copiados para a tabela endereçada 
por TOM. O tamanho das tabelas deve ser de 20h localizações. 
 MOV #EDE, R10 ;prepara o ponteiro 
 MOV #TOM, R11 ;prepara o segundo ponteiro 
 MOV #20, R9 ;prepara o contador 
 MOV @R10+, 0(R11) 
 ADD #2, R11 ;atualiza ponteiro 
 DEC R9 ;atualiza contador 
 JNZ refaz ;se contador dif. 0 continue cópia. 
 .... ;se contador = 0, termina cópia. 
 
 
 
33) *NOP Não operação 
 
Sintaxe NOP 
 
Operação Nenhuma 
 
Emulação MOV #0, #0 
 
Descrição A instrução é usada para eliminação de instrução no programa ou para definição de 
tempos de espera. 
 
Bits de status Não afetados 
Nota Outras instruções podem emular a não operação usando diferentes números de 
ciclos de clock e tamanhos de códigos: 
 MOV 0(R4), 0(R4) ;6 ciclos, 3 words 
 MOV @R4, 0(R4) ;5 ciclos, 2 words 
 BIC #0, EDE(R4) ;4 ciclos, 2 words 
 JMP $+2 ;2 ciclos, 1 word 
 BIC #0, R5 ;1 ciclo , 1 word 
 
 
 
34) *POP[.W] Retira word da pilha para o destino 
 *POP.B 
 
Sintaxe POP dst ou POP.B dst 
 
Operação @SP � dst 
 SP + 2 � SP 
 
Emulação MOV @SP+, dst 
 MOV.B @SP+, dst 
 
Descrição O conteúdo da localização de memória apontada pelo Pinteiro de pilha (SP) é movida 
para o destino. Após o ponteiro de pilha é incrementado por 2. 
 
Bits de status Não afetados. 
 
Exemplo POP R7 ;restaura R7 
 POP SR ;restaura o registro de status 
 
Nota O ponteiro de pilha é sempre incrementado por 2 independente do sufixo .B 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 14 
 
 
35) PUSH[.W] Coloca a word na pilha 
 PUSH.B 
 
Sintaxe PUSH src ou PUSH.B src 
 
Operação SP – 2 � SP 
 Src � @SP 
 
Descrição O registro SP é decrementado por 2, e então o operando destino é movido para a 
RAM word endereçada por SP. 
 
Bits de status Não afetados 
 
Exemplo PUSH SR ;salva SR na pilha 
 PUSH R7 ;salva R7 na pilha 
 
Nota O ponteiro de pilha é sempre decrementado por 2 independente do sufixo .B 
 
 
 
 
36) *RET Retorno de sub-rotina 
 
Sintaxe RET 
 
Operação @SP � PC 
 SP + 2 � PC 
 
Emulação MOV @SP+, PC 
 
Descrição O endereço de retorno salvo na pilha pela instrução CALL, é movido para o PC. O 
programa continua no endereço seguinte ao da instrução CALL. 
 
Bits de status Não afetado. 
 
 
 
 
37) RETI Retorno de interrupção 
 
Sintaxe RETI 
 
Operação @SP � SR 
 SP + 2 � SP 
 @SP � PC 
 SP + 2 � SP 
 
Descrição O registro de status e o PC são restaurados da pilha. O registro SP é incrementado 
por 4. Os conteúdos restaurados da pilha foram salvos no momento da interrupção. 
 
Bits de status Todos restaurados da pilha 
 
Bits de modo Todos restaurados da pilha 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 15 
 
 
38) *RLA[.W] Rotação aritmética a esquerda 
 *RLA.B 
 
Sintaxe RLA dst ou RLA.B dst 
 
Operação C � MSB � MSB – 1 .... LSB +1 � LSB � 0 
 
Emulação ADD dst, dst ou ADD.B dst, dst 
 
Descrição O operando destino é deslocado a esquerda de uma posição, como mostrado na 
Figura B.1. O MSB é deslocado para o carry bit e o LSB é preenchido com 0. A 
instrução RLA funciona como uma multiplicação por 2 sinalizada. Um overflow 
ocorrerá se o destino >= 4000h ou dst < C000h antes da operação. O resultado 
mudará de sinal. 
 
Figura B.1 - RLA 
 Um overflow ocorrerá se dst >= 40h ou dst < C0h antes da operação. O resultado 
mudará de sinal. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Carregado do MSB 
 V: Setado se ocorrer um overfow, resetado caso contrário 
 
Exemplo Multiplica R7 por 4 
 RLA R7 
 RLA R7 
 
Nota O assembler não reconhece a instrução RLA @R5+, que deve ser substituída por 
ADD @R5+, -2(R5). 
 
 
 
 
39) *RLC[.W] Rotação circular a esquerda através do carry 
 *RLC.B 
 
Sintaxe RLC dst ou RLC.B dst 
 
Operação C � MSB � MSB-1 .... LSB+1 � LSB � C 
 
Emulação ADDC dst, dst 
 
Descrição O operando destino é deslocado de uma posição a esquerda como mostrado na 
Figura B.2. O bit de carry é deslocado para o LSB e o MSB é deslocado para o bit de 
carry. 
 
Figura B.2 - RLC 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Carregado do MSB 
 V: Setado se ocorrer um overfow, resetado caso contrário 
Setado se 03FFFh < dstinicial < 0C000h ou se 03Fh < dstinicial < 0C0h, 
resetado em caso contrário. 
 
Exemplo O bit de entrada P0.1 é colocado no LSB de R5 
 BIT.B #2, &P0IN ;informação � carry 
 RLC.B R5 ;carry = P0in.1 � LSB R5 
 ;o byte alto de R5 é resetado. 
 
Nota O assembler não reconhece a instrução RLC @R5+, que deve ser substituída por 
ADDC @R5+, -2(R5) 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 16 
 
 
 
40) RRA[.W] Rotação aritmética a direita 
 RRA.B 
 
Sintaxe RRA dst ou RRA.B dst 
 
Operação O operando destino é deslocado de uma posição a direita, como mostrado na Figura 
B.3. O MSB permanece inalterado e é copiado para MSB – 1, o LSB + 1 é deslocado 
para LSB e o LSB é deslocado para o carry. 
 
Figura B.3 - RRA 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Carregado do LSB 
 V: Resetado 
 
Exemplo O conteúdo de R5 é multiplicado por 0,75. 
 PUSH R5 ;armazena temporariamente R5 na pilha 
 RRA R5 ;R5 x 0,5 
 ADD @SP+, R5 ;R5 x 0,5 + R5 = 1,5 x R5 = R5 
 RRA R5 ;(1,5 x R5) x 0,5 = 0,75 x R5 = R5 
 
 
 
 
41) RRC[.W] Rotação circular a direita através do carry 
 RRC.B 
 
Sintaxe RRC dst ou RRC.B dst 
 
Operação C � MSB � MSB – 1 .... LSB + 1 � LSB � C 
 
Descrição O operando destino é deslocado de um bit a direita como mostrado na Figura B.4. O 
bit de carry é deslocado para o MSB, e o LSB é deslocado para o bit de carry. 
 
Figura B.4 - RRC 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Carregado do LSB 
V: Setado se valor inicial do destino for positivo e valor inicial do carry for 1, 
resetado em caso contrário. 
 
Exemplo R5 é deslocado de 1 bit à direita. O MSB é carregado com 1. 
 SETC ;prepara o carry para MSB 
 RRC R5 ;R5 / 2 + 8000h = R5 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 17 
 
 
42) *SBC[.W] Subtrai o ‘borrow’do destino 
 *SBC.B 
 
Sintaxe SBC dst ou SBC.B dst 
 
Operação dst + 0FFFFh + C � dst 
 dst + 0FFh + C � dst 
 
Emulação SUBC #0, dst 
 SUBC.B #0, dst 
 
Descrição O bit de carry menos 1 é somado ao destino. O conteúdo prévio do destino é 
perdido. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Resetado se dst foi decrementado de 0000h p/ 0FFFFh 
 ou de 00h para 0FFh, setado em caso contrário 
V: Setado se inicialmente C = 0 e dst = 08000h 
 Setado se inicialmente C = 0 e dst = 080h 
Exemplo Um contador de 16 bits apontado por R13 é subtraído de outro contador de 32 bits 
apontado por R12. 
 SUB @R13, 0(R12) ;subtrai os LSD’s 
 SBC 2(R12) ;subtrai o carry do MSD 
 
Nota O borrow é tratado como um não carry: Borrow Carry bit 
 Sim 0 
 Não 1 
 
 
43) *SETC Seta o bit de carry 
 
Sintaxe SETC 
 
Operação 1 � C 
 
Emulação BIS #1, SR 
 
Descrição O bit de carry é setado 
 
Bits de status N: Não afetado 
 Z: Não afetado 
 C: Setado 
 V: Não afetado 
 
Exemplo Emula uma subtração decimal. Subtrai R5 de R6 decimalmente. Suponha que R5 = 
3987 e R6 = 4137. 
 ADD #6666h, R5;Move o conteúdo de R5 de 0-9 p/ 6-F 
 ;R5 = 3987 + 6666 = 9FEDh 
 INV R5 ;R5 = não R5 = 6012h 
 SETC ;prepara o carry = 1 
 DADD R5, R6 ;emula a subtração pela soma de: 
 ;(10000 – R5 – 1) 
 ; R6 = R6 + R5 + 1 
 ;R6=4137 + 6012 + 1=10150 = 0150 
 
 
44) *SETN Seta o bit negativo 
 
Sintaxe SETN 
 
Operação 1 � N 
 
Emulação BIS #4, SR 
 
Descrição O bit N do registro de status é setado 
 
Bits de status N: Setado 
 Z: Não afetado 
 C: Não afetado 
 V: Não afetado 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 18 
 
45) *SETZ Seta o bit de zero 
 
Sintaxe SETZ 
 
Operação 1 � Z 
 
Emulação BIS #2, SR 
Descrição O bit de zero do registro de status é setado 
 
Bits de status N: Não afetado 
 Z: Setado 
 C: Não afetado 
 V: Não afetado 
 
 
46) SUB[.W] Subtrai fonte do destino 
 SUB.B 
 
Sintaxe SUB src, dst ou SUB.B src, dst 
 
Operação dst + (não src + 1) � dst ou 
 dst – src � dst 
 
Descrição O operando fonte é subtraído do operando destino, pela adição do primeiro 
complemento do operando fonte com a constante 1. O operando fonte não é afetado. 
O conteúdo prévio do operando destino é perdido. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Setado se há um carry do MSB do resultado, resetado 
 caso contrário. 
 Setado se não borrow, resetado se borrow 
V: Setado se ocorrer um overflow aritmético, resetado em 
 caso contrário. 
 
Exemplo Veja exemplo na instrução SBC 
 
Nota O borrow é tratado como um não carry: Borrow Carry 
 Sim 0 
 Não 1 
 
 
47) SUBC, SBB[.W] Subtrai a fonte e o borrow (not carry) do destino 
 SUBC.B, SBB.B 
 
Sintaxe SUBC src, dst ou SBB src, dst 
 SUBC.B src, dst ou SBB.B src, dst 
 
Operação dst + não src + C � dst ou 
 dst – src – 1 + C � dst 
 
Descrição O operando fonte é subtraído do operando destino, pela adição do primeiro 
complemento do operando fonte e o bit de carry. O operando fonte não é afetado. O 
prévio conteúdo do operando destino é perdido. 
 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Setado se há um carry do MSB do resultado, resetado 
 caso contrário. 
 Setado se não borrow, resetado se borrow 
V: Setado se ocorrer um overflow aritmético, resetado em 
 caso contrário. 
 
Exemplo Um numero de 16 bits apontado por R13 é subtraído de outro numero de 16 bits em 
R10 e R11 (MSD) 
 SUB.B @R13+, R10 ;subtrai os LSD’s sem o carry 
 SUBC.B @R13, R11 ;subtrai os MSD’s com carry 
 
Nota O borrow é tratado como um não carry: Borrow Carry 
 Sim 0 
 Não 1 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 19 
 
 
48) SWPB Troca bytes (swap bytes) 
 
Sintaxe SWPB dst 
 
Operação Bits 15 a 8 � � bits 7 a 0 
 
Descrição Os bytes alto e baixo do operando destino são trocados como mostra a Figura B.5. 
 
 
Figura B.5 - SWPB 
Bits de status N: Não afetado 
 Z: Não afetado 
 C: Não afetado 
 V: Não afetado 
 
Exemplo MOV #040BFh, R7 ;0100 0000 1011 1111 � R7 
 SWPB R7 ;1011 1111 0100 0000 � R7 
 
 
 
 
49) SXT Estende sinal 
 
Sintaxe SXT dst 
 
Operação Bit 7 � bit 8 a 15 
 
Descrição O sinal do byte baixo é estendido para o byte alto como mostrado na Figura B.6. 
 
Figura B.6 - SXT 
 
Bits de status N: Setado se resultado negativo, resetado se positivo 
 Z: Setado se resultado zero, resetado em caso contrário 
 C: Setado se resultado não é zero, resetado caso contrário 
V: Resetado 
 
Exemplo MOV.B &TCDAT, R7 ;TCDAT = 085h: ...... 1000 0101 
 SXT R7 ;R7 = 0FF85h:1111 1111 1000 0101 
 ADD R7, R6 ;soma numero de 16 bits. 
 
 
 
 
 
 
 
 
Microcontroladores MSP 430 Conjunto de Instruções 
 
CEFET 20 
 
 
50) *TST[.W] Testa destino 
 *TST.B 
 
Sintaxe TST dst ou TST.B dst 
 
Operação dst + 0FFFFh + 1 ou dst + 0FFh + 1 
 
Emulação CMP #0,dst ou CMP.B #0,dst 
 
Descrição O operando destino é comparado com zero. Os bits de status são atualizados 
conforme o resultado. O operando destino não é afetado. 
 
Bits de status N: Setado se destino é negativo, resetado se positivo 
 Z: Setado se destino é zero, resetado em caso contrário 
 C: Setado 
V: Resetado 
 
Exemplo R7 é testado. Se ele é negativo, continua em R7NEG; se é positivo mas não zero 
continua em R7POS e se zero continua em R7ZERO. 
 TST R7 ;testa R7 
 JN R7NEG ;salta se negativo 
 JZ R7ZERO ;salta se zero 
R7POS ..... ;R7 é positivo mas não zero 
R7NEG ..... ;R7 é negativo 
R7ZERO ..... ;R7 é zero 
 
 
 
 
51) XOR[.W] Ou exclusivo da fonte com o destino 
 XOR.B 
 
Sintaxe XOR src,dst ou XOR.B src,dst 
 
Operação src XOR dst � dst 
 
Descrição Realiza a operação lógica ou exclusivo entre o operando fonte e o operando destino. 
O operando fonte não é alterado e o resultado é armazenado no destino. 
 
Bits de status N: Setado se MSB estiver setado, resetado caso contrário 
 Z: Setado se resultado for zero, caso contrário resetado 
 C: Setado se resultado ≠ 0, do contrário resetado 
V: Setado se ambos os operandos forem negativos. 
 
Exemplo Os bits setados em R6 invertem os correspondentes bits da word TONI. 
 XOR R6, TONI

Continue navegando