You are on page 1of 20

Microcontroladores MSP 430

Conjunto de Instrues

Conjunto de Instrues
Introduo
A CPU do microcontrolador MSP430 tem um reduzido conjunto de instrues (RISC). So apenas 27 instrues executadas pelo hardware, contudo o gerador de constante auxilia ao programa montador (assembly) do MSP emular mais 24 instrues. A seo seguinte descreve todas as instrues do ncleo do MSP e instrues emuladas de forma detalhada.

As instrues aparecero em ordem alfabtica. O sufixo .W ou a ausncia de sufixo no mnemnico da instruo indica operao de 16 bits ou operao de word e o sufixo .B indica operao de 8 bits ou operao de byte. As letras src ( source ) e dst ( destiny ) significam operando fonte e operando destino respectivamente. A cerquilha (#) utilizada para carregar valores numricos nos locais indicados. O comercial (&) um ponteiro para um destino. O asterisco (*) na frente da instruo indica que a mesma emulada. Nas instrues emuladas, os bits de status so afetados conforme a instruo original.

Descrio das instrues


1) *ADC[.W] *ADC.B Sintaxe Operao Emulao Descrio Bits de status Adiciona o bit de carry ao destino adiciona o bit de carry ao destino ADC dst ADC.B dst dst + C ADDC ADDC.B dst #0,dst #0,dst ou ADC.W dst

O bit de carry (C) somado ao operando destino. O contedo anterior do operando destino perdido. N: Z: C: Setado se o resultado for negativo, resetado se positivo Setado se resultado for zero, caso contrrio resetado Setado se dst foi incrementado de 0FFFF para 0000, resetado em caso contrrio. Setado se dst foi incrementado de 0FFh para 00, resetado em caso contrrio. Setado se ocorrer um overflow aritmtico, resetado em caso contrrio.

V: 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. 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

Exemplo 2

CEFET

Microcontroladores MSP 430 2) ADD[.W] ADD.B Sintaxe Operao Descrio Adiciona a fonte ao destino Adiciona a fonte ao destino ADD src, dst ADD.B src, dst src + dst dst

Conjunto de Instrues

O operando fonte e adicionado ao operando destino. O operando fonte no afetado. O operando destino perde o contedo prvio para armazenar o resultado da operao. N: Z: C: V: Setado Setado Setado Setado se se se se resultado negativo, resetado se positivo. o resultado for zero, resetado em caso contrrio. houver carry no resultado, resetado em caso contrrio. ocorrer um overflow aritmtico, resetado em caso contrrio.

Bits de status

Exemplo

R5 incrementado de 10. Ocorrer o jump se houver um carry ADD #10, R5 JC TONI ;far o salto se carry ... ;no ocorreu o carry.

3) ADDC[.W] ADDC.B Sintaxe Operao Descrio

Adiciona a fonte e o carry ao destino ADDC ADDC.B src, dst src, dst dst

src + dst + C

O operando fonte e o bit de carry so adicionados ao operando destino. O operando fonte no afetado. O operando destino perde o prvio contedo para armazenar o resultado da operao. N: Z: C: V: Setado Setado Setado Setado se se se se resultado negativo, resetado se positivo. o resultado for zero, resetado em caso contrrio. houver carry no resultado, resetado em caso contrrio. ocorrer um overflow aritmtico, resetado em caso contrrio.

Bits de status

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 LSDs sem o carry ADDC @R13+, 20(R13) ;adiciona os MSDs com o ;carry dos LSDs. Fonte AND destino AND src, dst AND.B src, dst src AND dst dst

4) AND[.W] AND.B Sintaxe Operao Descrio Bits de status

Realiza a operao lgica AND entre os operandos fonte e destino. O operando fonte no afetado e o operando destino conter o resultado da operao. N: Z: C: V: Setado se o MSB do resultado for um, resetado se zero. Setado se resultado zero. Resetado em caso contrrio. Setado se resultado diferente de zero, resetado em caso contrrio. ( NOT ZERO ) Resetado.

Exemplo

O registro R5 usado para mascarar (#0AA55h) a palavra endereada por TOM. Se o resultado for zero saltar para o rtulo 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 2

CEFET

Microcontroladores MSP 430 5) BIC[.W] BIC.B Sintaxe Operao Descrio Bits de status Exemplo Exemplo Zera os bits do destino BIC BIC.B src, dst src,dst dst

Conjunto de Instrues

NOT src AND dst

Realiza a operao lgica AND entre o operando fonte invertido e o operando destino. O operando fonte no afetado e o resultado armazenado no destino. No afetados Zera os BIC Zera os P0OUT P0_0 P0_1 BIC.B seis bits mais significativos da palavra LEO. #0FC00, LEO bits 0 e 1 da porta P0. .equ 011h ;definio do endereo da porta. .equ 01h .equ 02h #P0_0+P0_1, &P0OUT ;zera os 2 LSBs de P0

6) BIS[.W] BIS.B Sintaxe Operao Descrio Bits de status Exemplo Exemplo

Seta os bits do destino BIS BIS.B src,dst src,dst dst

src OR dst

Realiza a operao lgica OR entre os operandos fonte e destino. O operando fonte no afetado e o resultado da operao armazenado no operando destino. No afetados Seta os BIS Seta os P0OUT P0 P1 BIS.B seis bits menos significativos da word TOM. #003Fh, TOM 2 LSBs da porta P0. .equ 011h .equ 01h .equ 02h #P0+P1, &P0OUT

7) BIT[.W] BIT.B Sintaxe Operao Descrio Bits de status

Testa bits no destino BIT src, dst

src AND dst Realiza a operao lgica AND entre a fonte e o destino. O resultado afeta somente os bits de status. Os operandos fonte e destino no so afetados. N: Z: C: V: Setado se o MSB do resultado estiver setado, resetado em caso contrrio. Setado se resultado zero, resetado caso contrrio. Setado se resultado no zero, resetado caso contrrio Resetado. setado, salte para o label TOM. ;Bit 9 est setado? ;sim, v para TOM ;no, continua. setado, salta para o label TOM.

Exemplo

Exemplo

Se o bit 9 de R8 estiver BIT #0200h, R8 JNZ TOM ... Se o bit 3 de R8 estiver BIT.B #8, R8 JC TOM

CEFET

Microcontroladores MSP 430 8) *BR, Branch Sintaxe Operao Emulao Descrio Bits de status Exemplos Salta para o destino. BR dst MOV dst PC dst, PC

Conjunto de Instrues

Realiza um alto incondicional numa faixa de endereos de 64k. Todos os modos de endereamento podem ser usados. Esta uma instruo de 16 bits. No so afetados. BR BR BR BR BR BR BR #EXEC ;salta para o label exec. EXEC ;salta para o endereo contido em EXEC &EXEC ;salta p/ o endereo contido no endereo ;absoluto EXEC R5 ;salta para o endereo contido em R5. @R5 ;salta p/ o endereo contido na word ;apontada por R5. @R5+ ;Idem anterior e incrementa R5 aps. X(R5) ;salta p/ o endereo contido no endereo ;apontado por R5 + X.

9) CALL Sintaxe Operao

Chamada de sub-rotina CALL SP - 2 PC dst dst SP @SP PC

Descrio

Realiza a chamada de uma sub-rotina numa faixa de endereos de 64k. Todos os modos de endereamento podem ser usados. O endereo de retorno armazenado na pilha. CALL instruo de 16 bits. No so afetados. CALL CALL CALL CALL CALL CALL CALL #EXEC ;chama o label EXEC EXEC ;chama o endereo contido em ;EXEC. &EXEC ;chama o endereo contido no ;endereo absoluto EXEC. R5 ;chama o endereo contido em R5. @R5 ;chama o endereo contido na word ;apontada por R5. @R5+ ;idem anterior com ps incremento. X(R5) ;chama o endereo contido no ;endereo apontado por R5 + X.

Bits de status Exemplos

10) *CLR[.W] CLR.B Sintaxe Operao Emulao Descrio Bits de status Exemplos

Zera destino CLR dst CLR.B dst 0 dst

MOV #0, dst MOV.B #0, dst O operando destino zerado. No so afetados. CLR CLR CLR.B TONI R5 TONI ;a palavra TONI zerada ;zera R5 ;o byte TONI zerado 4

CEFET

Microcontroladores MSP 430 11) *CLRC Sintaxe Operao Emulao Descrio Bits de status Zera o bit de carry CLRC 0 BIC C #1,SR

Conjunto de Instrues

Zera o bit de carry. Esta uma instruo de 16 bits. N: Z: C: V: No afetado No afetado Zerado No 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 Sintaxe Operao Emulao Descrio Bits de status

Zera o bit negativo CLRN 0 BIC N #4, SR

O bit N do registro de status zerado. Esta uma instruo de 16 bits. N: Z: C: V: CLRN Zerado No afetado No afetado No afetado

Exemplo

13) *CLRZ Sintaxe Operao Emulao Descrio Bits de status

Zera o bit de status Z CLRZ 0 BIC Z #2, SR

O bit de zero do registro de status zerado. Esta uma instruo de 16 bits. N: Z: C: V: CLRZ No afetado Zerado No afetado No afetado

Exemplo

CEFET

Microcontroladores MSP 430 14) CMP[.W] CMP.B Sintaxe Operao Descrio Compara fonte e destino CMP src, dst CMP.B src, dst dst - src

Conjunto de Instrues

O operando fonte subtrado do operando destino. Isto feito somando o operando destino com o segundo complemento (1 complemento + 1) do operando fonte. Os dois operandos no so afetados e o resultado no armazenado. Somente os bits de status so afetados. N: Z: C: V: Setado se resultado negativo, resetado se positivo. Setado se resultado zero, resetado em caso contrrio. Setado se houver vai um do MSB, resetado caso Setado se houver um overflow aritmtico, resetado caso contrrio.

Bits de status

contrrio.

Exemplos

L$1

Os registro R5 e R6 so comparados. Se forem iguais, o programa continua no rtulo IGUAL. CMP R5, R6 ;R5 = R6 ? JEQ IGUAL ;se sim, salte para IGUAL. Dois blocos de RAM so comparados. Se no so iguais, vai para o rotulo ERRO. MOV #NUM, R5 ;nmero de palavras a serem comp. CMP &BLOCO1, BLOCO2 ;so iguais? JNZ ERRO ;se no v para ERRO DEC R5 ;todas as palavras foram comp. JNZ L$1 ;se no volte para nova comp.

15) *DADC[.W] *DADC.B Sintaxe Operao Emulao Descrio Bits de status

Soma BCD o carry ao destino DADC dst DADC.B dst dst + C DADD DADD.B dst (decimal) #0, dst #0, dst

O bit de carry somado (BCD ou decimal) com o destino. N: Z: C: Setado se o MSB 1. Setado se o destino for 0, resetado em caso contrrio. Setado se o destino incrementa de 9999 para 0000, Resetado em caso contrrio. Setado se o destino incrementa de 99 para 00, resetado em caso contrrio. Indefinido.

V: Exemplos

Quatro dgitos decimais contidos em R5 so adicionados a oito dgitos decimais apontados por R8. CLRC DADD R5, 0(R8) ;soma os LSDs DADC 2(R8) ;soma o carry ao MSD. Dois dgitos decimais contidos em R5 so somados a quatro dgitos decimais apontados por R8. CLRC DADD.B R5, 0(R8) DADC.B 1(R8)

CEFET

Microcontroladores MSP 430

Conjunto de Instrues

16) DADD[.W] DADD.B Sintaxe Operao Descrio

Soma fonte, carry e destino (BCD) DADD DADD.B src + dst + C src, dst src, dst dst (decimal)

O operando fonte e destino so tratados como nmeros BCD positivos. O operando fonte e o carry bit so somados BCD ao operando destino. O operando fonte no afetado. O contedo prvio do destino perdido, para o mesmo conter o resultado da operao. O resultado indefinido para nmeros no BCD. N: Z: C: V: Setado se o MSB 1, resetado se 0. Setado se resultado zero, resetado em caso contrrio. Setado se resultado maior que 9999 Setado se resultado maior que 99 Indefinido

Bits de status

Exemplos

Um nmero de oito dgitos BCD contido em R5 e R6 somado a outro numero de oito dgitos BCD contido em R3 e R4. R6 e R4 contm os MSDs. CLRC DADD R5, R3 ;adiciona os LSDs DADD R6, R4 ;adiciona os MSDs com carry. JC OVERFLOW ;se carry, v para rotina de erro. Incrementa de 1 um contador de dois dgitos decimal (CNT). CLRC DADD.B #1, CNT

17) *DEC[.W] *DEC.B Sintaxe Operao Emulao Descrio Bits de status

Decrementa o destino DEC dst DEC.B dst dst - 1 dst

SUB #1, dst SUB.B #1, dst O operando destino decrementado de 1. O contedo original perdido. N: Z: C: V: Setado se resultado negativo, resetado caso contrrio Setado se resultado zero, resetado em caso contrrio Resetado se destino vai de 0000h para FFFFh, setado caso contrrio. Setado se ocorrer um overflow aritmtico, resetado em caso contrrio. Seta se o valor inicial do destino for 8000h (word) ou 80h (byte), reseta em caso contrrio.

Exemplo

L$1

Move um bloco de 255 bytes de memria com endereo inicial EDE, para outro bloco de memria com endereo inicial TONI. MOV #EDE, R6 MOV #TONI, R5 MOV #255, R4 MOV.B @R6+, 0(R5) INC R5 DEC R4 JNZ L$1

CEFET

Microcontroladores MSP 430 18) *DECD[.W] *DECD.B Sintaxe Operao Emulao Descrio Bits de status Decremento duplo do destino DECD DECD.B dst - 2 dst dst dst

Conjunto de Instrues

SUB #2, dst SUB.B #2, dst O operando destino decrementado de 2. O contedo original perdido. N: Z: C: V: Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado caso contrrio Resetado se destino vai de 0000h para FFFFh, setado em caso contrrio. Setado se ocorrer um overflow aritmtico, resetado caso contrrio. Seta se o valor inicial do destino for 8001h ou 8000h em operaes de word, e 80h ou 81h em operaes de byte, reseta caso contrrio. R10 ;decrementa R10 de duas unidades.

Exemplo

DECD

19) *DINT Sintaxe Operao Emulao Descrio Bits de status Bits de modo Exemplo

Desabilita (geral) interrupes. DINT 0 BIC GIE #8, SR

Todas as interrupes so desabilitadas. Realiza a operao lgica AND entre a constante 08h e o registro de status. O resultado armazenado em SR. Os bits de status no so afetados Somente o bit GIE resetado O bit geral de interrupo zerado para permitir a carga do contador de 32 bits sem interrupes. DINT ;desabilita todas as interrupes NOP MOV COUNTHI, R5 ;faz a carga do contador MOV COUNTLO, R6 EINT ;habilita todas as interrupes.

20) *EINT Sintaxe Operao Emulao Descrio Bits de status Bits de modo Exemplo CEFET

Habilita (geral) interrupes EINT 1 BIS GIE #8, SR

Todas as interrupes so habilitadas. Realiza a operao lgica OR entre a constante 08h e o registro de status. O resultado armazenado em SR. No afetados Somente o bit GIE setado Idem anterior. 8

Microcontroladores MSP 430 21) *INC[.W] *INC.B Sintaxe Operao Emulao Descrio Bits de status Incrementa destino INC INC.B dst dst dst #1, dst

Conjunto de Instrues

dst + 1 ADD

Soma 1 ao operando destino. O contedo original perdido. N: Z: C: V: Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Setado se destino vai de FFFFh para 0000h (word), ou FFh para 00h (byte), resetado em caso contrrio. Setado se ocorrer um overflow aritmtico, resetado caso contrrio. Seta se o valor inicial do destino for 7FFFh (Word), e 7Fh (byte), reseta em caso contrrio.

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] *INCD.B Sintaxe Operao Emulao Descrio Bits de status

Incremento duplo no destino INCD dst INCD.B dst dst + 2 dst

ADD #2, dst ADD.B #2, dst Soma 2 ao operando destino. O contedo original perdido. N: Z: C: V: Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Setado se destino vai de FFFFh para 0000h (Word), ou FFh para 00h (byte), resetado em caso contrrio. Setado se ocorrer um overflow aritmtico, resetado em caso contrrio. Seta se o valor inicial do destino for 7FFEh ou 7FFFh (word), e 7Eh ou 7Fh (byte), reseta em caso contrrio.

Exemplos

O dado no topo da pilha removido sem usar registro. PUSH R5 INCD SP ;no usar INCD.B, pois SP word alinhado O byte no topo da pilha incrementado por 2. INCD.B 0(SP)

CEFET

Microcontroladores MSP 430 23) *INV[.W] *INV.B Sintaxe Operao Emulao Descrio Bits de status N: Inverte o destino INV INV.B dst dst dst

Conjunto de Instrues

NOT dst

XOR #0FFFFh, dst XOR.B #0FFh, dst Inverte o operando de destino. O contedo original perdido. Setado Z: C: V: se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Resetado se resultado zero, setado em caso contrrio Setado se contedo inicial do destino negativo, Resetado em caso contrrio.

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 Operao Descrio JC rtulo ou JHS rtulo Se C = 1: PC + 2 x offset PC Se C = 0: executa a instruo seguinte O bit C do registro de status testado. Se estiver setado, o nmero sinalizado de 10 bits (offset) contido nos LSBs da instruo, somado ao PC. Se estiver resetado, a prxima instruo aps o jump ser executada. JC usado para comparao de nmeros no sinalizados. No afetados. R5 comparado com 15. Se for maior ou igual salta. CMP #15, R5 JHS SALTA ;salta se R5 >= 15 ... ;continua se R5 < 15

Bits de status Exemplo

25) JEQ ou JZ - Jump se igual ou jump se zero. Sintaxe Operao Descrio JEQ rtulo ou JZ rtulo Se Z = 1: PC + 2 x offset PC Se Z = 0: executa a instruo seguinte O bit Z do registro de status testado. Se estiver setado, o nmero sinalizado de 10 bits (offset) contido nos LSBs da instruo somado ao PC. Se Z estiver resetado a instruo seguinte ao JUMP executada. No afetados. Salta para o endereo LEO se R6 igual ao contedo da tabela. CMP R6, tabela(R5) JEQ LEO

Bits de status Exemplo

CEFET

10

Microcontroladores MSP 430

Conjunto de Instrues

26) JGE Sintaxe Operao Descrio

Jump maior ou igual JGE rtulo Se (N XOR V) = 0 ento salte p/ o rtulo:PC + 2xoffset Se (N XOR V) = 1 ento execute a prxima instruo. PC

Os bits N e V do registro de status so testados. Se os bits N e V so iguais (set ou reset), os 10 bits sinalizados contidos nos LSBs da instruo so somados ao PC e o salto realizado. Se apenas um dos bits setado, a instruo seguinte ao jump executada. Esta instruo usada para comparao de nmeros inteiros sinalizados. No afetados. Quando o contedo de R6 maior ou igual ao contedo da memria apontada por R7, o programa continua no rotulo EDE CMP @R7,R6 ;R6 >= (R7) ?, nmeros sinalizados. JGE EDE ;se sim, v para EDE ..... ;se no, continue.

Bits de status Exemplo

27) JL Sintaxe Operao Descrio

Jump se menor (less) JL rtulo Se (N XOR V) = 1 ento salte p/ o rtulo:PC + 2xoffset Se (N XOR V) = 0 ento execute a prxima instruo. PC

Os bits N e V do registro de status so testados. Se apenas um dos bits setado, os 10 bits sinalizados contidos nos LSBs da instruo so somados ao PC e o salto realizado. Se os bits N e V so iguais (set ou reset), a instruo seguinte ao jump executada. Esta instruo usada para comparao de nmeros inteiros sinalizados. No afetados. Quando o contedo de R6 menor que o contedo da memria apontada por R7, o programa salta para EDE. CMP @R7, R6 ;R6 < (R7) ?, nmeros sinalizados. JL EDE ;se sim, v p/ EDE ..... ;se no, continue.

Bits de status Exemplo

28) JMP Sintaxe Operao Descrio Bits de status Sugesto

Jump incondicional JMP rtulo PC + 2 x offset PC

O nmero sinalizado de 10 bits contidos nos LSBs da instruo somado ao PC. No afetados. Esta instruo de uma word, substitui a instruo BRANCH na faixa de 511 a +512 words relativos ao corrente PC.

CEFET

11

Microcontroladores MSP 430 29) JN Sintaxe Operao Descrio Jump se negativo JN rtulo Se N = 1, ento salta p/ o rtulo: PC + 2 x offset Se N = 0, execute a prxima instruo. PC

Conjunto de Instrues

O bit N do registro de status testado. Se estiver setado, o nmero sinalizado de 10 bits contido nos LSBs da instruo adicionado ao PC. Se N estiver resetado, ento executa a prxima instruo aps o jump. No afetados. O resultado de um processamento em R5 subtrado de COUNT. Se o resultado for negativo, COUNT zerado e o programa continua a execuo 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 CLR COUNT

Bits de status Exemplo

L$1

30) JNC, JLO Sintaxe Operao Descrio

Jump se no carry ou jump se menor (lower) JNC rtulo ou JLO rtulo Se C = 0, ento salta p/ rtulo: PC + 2 x offset Se C = 1, execute a prxima instruo. PC

O bit C do registro de status testado. Se ele estiver resetado, o nmero sinalizado de 10 bits contido nos LSBs da instruo somado ao PC. Se C estiver setado ento a prxima instruo aps o jump executada. Esta instruo usada para comparar nmeros sem sinal (0 a 65.535) No afetados O resultado de um processamento em R6 somado a BUFFER. Se ocorrer vai um uma rotina de erro usada no endereo ERRO. ADD R6, BUFFER JNC CONT ;se no carry v p/ CONT ...... ;inicio da rotina de erro ...... ...... ;Continua com o fluxo normal

Bits de status Exemplo

ERRO CONT

31) JNE, JNZ Sintaxe Operao Descrio

Jump se no igual ou jump se no zero JNE rtulo ou JNZ rtulo Se Z = 0, ento salta p/ o rtulo: PC + 2 x offset Se Z = 1, ento executa a prxima instruo PC

O bit Z do registro de status testado. Se ele estiver resetado, o nmero sinalizado de 10 bits contido nos LSBs da instruo somado ao PC. Se Z estiver setado, ento executa a prxima instruo aps o jump. No afetados. Salta para TONI se R7 e R8 tiverem contedos diferentes. CMP R7, R8 ;compara R7 com R8 JNE TONI ;salta para TONI se diferente ..... ;continua se igual.

Bits de status Exemplo

CEFET

12

Microcontroladores MSP 430 32) MOV[.W] MOV.B Sintaxe Operao Descrio Bits de status Exemplo Move fonte para destino MOV src, dst MOV.B src, dst src dst

Conjunto de Instrues

O contedo do operando fonte movido para o operando destino. O operando fonte no afetado. O contedo prvio de operando destino perdido. No afetado Os contedos da tabela endereada por EDE so copiados para a tabela endereada por TOM. O tamanho das tabelas deve ser de 20h localizaes. 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 cpia. .... ;se contador = 0, termina cpia.

33) *NOP Sintaxe Operao Emulao Descrio Bits de status Nota

No operao NOP Nenhuma MOV #0, #0

A instruo usada para eliminao de instruo no programa ou para definio de tempos de espera. No afetados Outras instrues podem emular a no operao usando diferentes nmeros de ciclos de clock e tamanhos de cdigos: 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] *POP.B Sintaxe Operao Emulao Descrio Bits de status Exemplo Nota CEFET

Retira word da pilha para o destino POP dst ou POP.B dst @SP SP + 2 dst SP

MOV @SP+, dst MOV.B @SP+, dst O contedo da localizao de memria apontada pelo Pinteiro de pilha (SP) movida para o destino. Aps o ponteiro de pilha incrementado por 2. No afetados. POP POP R7 SR ;restaura R7 ;restaura o registro de status

O ponteiro de pilha sempre incrementado por 2 independente do sufixo .B 13

Microcontroladores MSP 430 35) PUSH[.W] PUSH.B Sintaxe Operao Descrio Bits de status Exemplo Nota Coloca a word na pilha PUSH src ou PUSH.B src SP 2 SP Src @SP

Conjunto de Instrues

O registro SP decrementado por 2, e ento o operando destino movido para a RAM word endereada por SP. No afetados PUSH PUSH SR R7 ;salva SR na pilha ;salva R7 na pilha

O ponteiro de pilha sempre decrementado por 2 independente do sufixo .B

36) *RET Sintaxe Operao Emulao Descrio Bits de status

Retorno de sub-rotina RET @SP SP + 2 MOV PC PC @SP+, PC

O endereo de retorno salvo na pilha pela instruo CALL, movido para o PC. O programa continua no endereo seguinte ao da instruo CALL. No afetado.

37) RETI Sintaxe Operao

Retorno de interrupo RETI @SP SP + 2 @SP SP + 2 SR SP PC SP

Descrio Bits de status Bits de modo

O registro de status e o PC so restaurados da pilha. O registro SP incrementado por 4. Os contedos restaurados da pilha foram salvos no momento da interrupo. Todos restaurados da pilha Todos restaurados da pilha

CEFET

14

Microcontroladores MSP 430 38) *RLA[.W] *RLA.B Sintaxe Operao Emulao Descrio Rotao aritmtica a esquerda RLA dst ou RLA.B dst C MSB MSB 1 .... LSB +1 LSB 0

Conjunto de Instrues

ADD dst, dst ou ADD.B dst, dst O operando destino deslocado a esquerda de uma posio, como mostrado na Figura B.1. O MSB deslocado para o carry bit e o LSB preenchido com 0. A instruo RLA funciona como uma multiplicao por 2 sinalizada. Um overflow ocorrer se o destino >= 4000h ou dst < C000h antes da operao. O resultado mudar de sinal.

Um overflow ocorrer se dst >= 40h ou dst < C0h antes da operao. O resultado mudar de sinal. Bits de status N: Z: C: V: Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Carregado do MSB Setado se ocorrer um overfow, resetado caso contrrio

Figura B.1 - RLA

Exemplo

Multiplica R7 por 4 RLA R7 RLA R7 O assembler no reconhece a instruo RLA @R5+, que deve ser substituda por ADD @R5+, -2(R5).

Nota

39) *RLC[.W] *RLC.B Sintaxe Operao Emulao Descrio

Rotao circular a esquerda atravs do carry RLC dst ou RLC.B dst C MSB MSB-1 .... LSB+1 LSB C

ADDC dst, dst O operando destino deslocado de uma posio 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.

Bits de status

N: Z: C: V:

Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Carregado do MSB Setado se ocorrer um overfow, resetado caso contrrio Setado se 03FFFh < dstinicial < 0C000h ou se 03Fh < dstinicial < 0C0h, resetado em caso contrrio.

Figura B.2 - RLC

Exemplo

O bit de entrada P0.1 colocado no LSB de R5 BIT.B #2, &P0IN ;informao carry RLC.B R5 ;carry = P0in.1 LSB R5 ;o byte alto de R5 resetado. O assembler no reconhece a instruo RLC @R5+, que deve ser substituda por ADDC @R5+, -2(R5) 15

Nota

CEFET

Microcontroladores MSP 430

Conjunto de Instrues

40) RRA[.W] RRA.B Sintaxe Operao

Rotao aritmtica a direita RRA dst ou RRA.B dst O operando destino deslocado de uma posio 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.

Bits de status

N: Z: C: V:

Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Carregado do LSB Resetado

Figura B.3 - RRA

Exemplo

O contedo 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] RRC.B Sintaxe Operao Descrio

Rotao circular a direita atravs do carry RRC dst ou RRC.B C MSB dst LSB C

MSB 1 .... LSB + 1

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.

Bits de status

N: Z: C: V:

Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Carregado do LSB Setado se valor inicial do destino for positivo e valor inicial do carry for 1, resetado em caso contrrio.

Figura B.4 - RRC

Exemplo

R5 deslocado de 1 bit direita. O MSB carregado com 1. SETC ;prepara o carry para MSB RRC R5 ;R5 / 2 + 8000h = R5

CEFET

16

Microcontroladores MSP 430 42) *SBC[.W] *SBC.B Sintaxe Operao Emulao Descrio Bits de status Subtrai o borrow do destino SBC dst ou SBC.B dst

Conjunto de Instrues

dst + 0FFFFh + C dst dst + 0FFh + C dst SUBC #0, dst SUBC.B #0, dst O bit de carry menos 1 somado ao destino. O contedo prvio do destino perdido. Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Resetado se dst foi decrementado de 0000h p/ 0FFFFh ou de 00h para 0FFh, setado em caso contrrio V: Setado se inicialmente C = 0 e dst = 08000h Setado se inicialmente C = 0 e dst = 080h Um contador de 16 bits apontado por R13 subtrado de outro contador de 32 bits apontado por R12. SUB @R13, 0(R12) ;subtrai os LSDs SBC 2(R12) ;subtrai o carry do MSD O borrow tratado como um no carry: Borrow Sim No Seta o bit de carry SETC 1 BIS C #1, SR Carry bit 0 1 N: Z: C:

Exemplo

Nota

43) *SETC Sintaxe Operao Emulao Descrio Bits de status

O bit de carry setado N: Z: C: V: No afetado No afetado Setado No afetado

Exemplo

Emula uma subtrao decimal. Subtrai R5 de R6 decimalmente. Suponha que R5 = 3987 e R6 = 4137. ADD #6666h, R5;Move o contedo de R5 de 0-9 p/ 6-F ;R5 = 3987 + 6666 = 9FEDh INV R5 ;R5 = no R5 = 6012h SETC ;prepara o carry = 1 DADD R5, R6 ;emula a subtrao pela soma de: ;(10000 R5 1) ; R6 = R6 + R5 + 1 ;R6=4137 + 6012 + 1=10150 = 0150 Seta o bit negativo SETN 1 N

44) *SETN Sintaxe Operao Emulao Descrio Bits de status

BIS #4, SR O bit N do registro de status setado N: Z: C: V: Setado No afetado No afetado No afetado

CEFET

17

Microcontroladores MSP 430 45) *SETZ Sintaxe Operao Emulao Descrio Bits de status Seta o bit de zero SETZ 1 Z

Conjunto de Instrues

BIS #2, SR O bit de zero do registro de status setado N: Z: C: V: No afetado Setado No afetado No afetado

46) SUB[.W] SUB.B Sintaxe Operao Descrio

Subtrai fonte do destino SUB src, dst ou SUB.B src, dst dst + (no src + 1) dst src dst dst ou

O operando fonte subtrado do operando destino, pela adio do primeiro complemento do operando fonte com a constante 1. O operando fonte no afetado. O contedo prvio do operando destino perdido. N: Z: C: V: Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Setado se h um carry do MSB do resultado, resetado caso contrrio. Setado se no borrow, resetado se borrow Setado se ocorrer um overflow aritmtico, resetado em caso contrrio.

Bits de status

Exemplo Nota

Veja exemplo na instruo SBC O borrow tratado como um no carry: Borrow Sim No Carry 0 1

47) SUBC, SBB[.W] SUBC.B, SBB.B Sintaxe Operao Descrio

Subtrai a fonte e o borrow (not carry) do destino SUBC src, dst ou SBB src, dst SUBC.B src, dst ou SBB.B src, dst dst + no src + C dst src 1 + C dst ou dst

O operando fonte subtrado do operando destino, pela adio do primeiro complemento do operando fonte e o bit de carry. O operando fonte no afetado. O prvio contedo do operando destino perdido. N: Z: C: V: Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Setado se h um carry do MSB do resultado, resetado caso contrrio. Setado se no borrow, resetado se borrow Setado se ocorrer um overflow aritmtico, resetado em caso contrrio.

Bits de status

Exemplo

Um numero de 16 bits apontado por R13 subtrado de outro numero de 16 bits em R10 e R11 (MSD) SUB.B @R13+, R10 ;subtrai os LSDs sem o carry SUBC.B @R13, R11 ;subtrai os MSDs com carry O borrow tratado como um no carry: Borrow Sim No Carry 0 1 18

Nota

CEFET

Microcontroladores MSP 430 48) SWPB Sintaxe Operao Descrio Troca bytes (swap bytes) SWPB Bits 15 a 8 dst bits 7 a 0

Conjunto de Instrues

Os bytes alto e baixo do operando destino so trocados como mostra a Figura B.5.

Bits de status

N: Z: C: V:

No No No No

afetado afetado afetado afetado

Figura B.5 - SWPB

Exemplo

MOV #040BFh, R7 SWPB R7

;0100 0000 1011 1111 ;1011 1111 0100 0000

R7 R7

49) SXT Sintaxe Operao Descrio

Estende sinal SXT dst Bit 7 bit 8 a 15

O sinal do byte baixo estendido para o byte alto como mostrado na Figura B.6.

Figura B.6 - SXT


Bits de status N: Z: C: V: Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio Setado se resultado no zero, resetado caso contrrio 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.

CEFET

19

Microcontroladores MSP 430 50) *TST[.W] *TST.B Sintaxe Operao Emulao Descrio Bits de status Testa destino TST dst ou TST.B dst dst + 0FFFFh + 1 ou dst + 0FFh + 1 CMP #0,dst ou CMP.B #0,dst

Conjunto de Instrues

O operando destino comparado com zero. Os bits de status so atualizados conforme o resultado. O operando destino no afetado. N: Z: C: V: Setado se destino negativo, resetado se positivo Setado se destino zero, resetado em caso contrrio Setado Resetado

Exemplo

R7POS R7NEG R7ZERO

R7 testado. Se ele negativo, continua em R7NEG; se positivo mas no zero continua em R7POS e se zero continua em R7ZERO. TST R7 ;testa R7 JN R7NEG ;salta se negativo JZ R7ZERO ;salta se zero ..... ;R7 positivo mas no zero ..... ;R7 negativo ..... ;R7 zero

51) XOR[.W] XOR.B Sintaxe Operao Descrio Bits de status

Ou exclusivo da fonte com o destino XOR src,dst ou XOR.B src,dst src XOR dst dst

Realiza a operao lgica ou exclusivo entre o operando fonte e o operando destino. O operando fonte no alterado e o resultado armazenado no destino. N: Z: C: V: Setado Setado Setado Setado se MSB estiver setado, resetado caso contrrio se resultado for zero, caso contrrio resetado se resultado 0, do contrrio resetado se ambos os operandos forem negativos.

Exemplo

Os bits setados em R6 invertem os correspondentes bits da word TONI. XOR R6, TONI

CEFET

20