guia de laboratório de microprocessadores i

Upload: ramon-h-souza

Post on 08-Jul-2015

208 views

Category:

Documents


0 download

TRANSCRIPT

- CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS

LABORATRIO DE SISTEMAS MICROPROCESSADOS I

Esta apostila um esforo integrado de diversos professores da coordenao de eletrnica, que lecionam a matria de Sistemas Microprocessados. Existe a cooperao de alunos no desenvolvimento desta com sugestes e comentrios. Coube a mim em 2009, o processo de sistematizao e padronizao inicial, visando os cursos modulados noturnos.Prof. Carlos A. RennBelo Horizonte MG Brasil 21 de Junho de 2009

Laboratrio de Sistemas Microprocessados I

2

NDICEPrtica 01 - MEMRIA APENAS DE LEITURA ROM ...... 3 1.1 Introduo ...... 3 1.2 Preparao e Montagem ..... 3 1.3 Implementao de uma ROM 16 x 1 ..... 4 Prtica 02 - OPERAES COM MEMRIA ROM ......... 5 2.1 Introduo .......... 5 Prtica 03 - OPERAES COM MEMRIAS RAM . 7 3.1 Introduo ....... 7 3.2 Preparao e Montagem ...... 7 3.3 Operao WRITE .... 8 3.4 Operao READ .. 8 3.5 Operao STAND BY . 8 Prtica 04 OPERAES E PROGRAMAO COM O p DIDTICO DE 1 BIT ..... 9 4.1 Operao do Hardware do microprocessador didtico ............................ 9 4.2 Operao de Software ( programao Assembly ) ................................... 11 PRIMEIRO EXERCCIO BIMESTRAL ............................................................................ 12 Prtica 5 O AMBIENTE DE SIMULAO IAR ......... 13 5.1 Carregando o Simulador ... 13 5.2 Funcionamento Bsico ...13 5.3 Carregando um programa manualmente . 14 5.4 Executando um programa aps seu carregamento ..14 5.5 Carregando um programa aps a montagem ....15 Prtica 6 - INSTRUES DE CARGA E TRANSFERNCIA DE 8 BITS .....27 6.1 Introduo .... 27 6.2 Procedimento .. 27 Prtica 7 - INSTRUES DE CARGA E TRANSFERNCIA DE 16 BITS ...... 28 7.1 Introduo 28 7.2 Procedimento I .... 28 7.3 Procedimento II ... 28 Prtica 8 - OPERAES LGICAS E ARITMTICAS . 31 8.1 Introduo 31 8.2 Procedimento I 31 8.3 Procedimento II 31 8.4 Procedimento III 31 8.5 Procedimento IV 31 Prtica 09 - COMPARAO DE BLOCOS ....... 33 09.1 Introduo .. 33 09.2 Procedimento .... 33 Prtica 10 SUBROTINAS ..... 36 10.1 Introduo ........ 37 10.2 Procedimento ....... 38 SEGUNDO EXERCCIO BIMESTRAL .......................................................................... 39 ANEXOS ........................................................................................................................ 40 A.1 - TABELA ASCII ......... 40 A.2 INSTRUES DO MSP430 ........ 41

CEFET-MG

Laboratrio de Sistemas Microprocessados I

3

PRTICA 1 - Operaes com memria ROMAssuntos: Estudo dos circuitos de memria; Expanso da palavra; Expanso do endereamento; Memrias do tipo ROM a diodos. Circuito integrado TTL 74LS138; Circuito integrado TTL 74125; Diodos retificadores

Componentes:

Introduo: A memria apenas de leitura - ROM, utilizada em sistemas de computao para armazenar instrues de programas, subrotinas. tabelas de converso, dados, etc. chamada "apenas de leitura" porque uma vez estabelecido o seu contedo, o computador no consegue alter-lo. Esta caracterstica fundamental para muitas aplicaes, pois as informaes ficam permanentemente armazenadas mesmo que a alimentao seja desligada. Modelo de memria - 8x2 O modelo um objeto abstrato que serve para explicar um objeto real, portanto, vamos desenvolver um circuito capaz de permitir a compreenso exata da arquitetura bsica dos circuitos de memria.

1.1

Figura 1.1 - Diagrama em bloco genrico

Figura 1.2 Circuito lgico genrico

1.2 Preparao e montagem: A) Considere o circuito abaixo como referncia e realize sua montagem observando corretamente o anodo e catodo dos diodos envolvidos:

ATENO: CONSULTE O DATA SHEET DO 74LS138 DEFININDO TODAS AS LIGAES NECESSRIAS PARA QUE O MESMO FUNCIONE ADEQUADAMENTE.CEFET-MG

Laboratrio de Sistemas Microprocessados I

4

B)

Construir em seu relatrio uma tabela verdade, aplicando nas linhas de endereamento (A2 - AO), todas as combinaes de nveis lgicos possveis, anotando para cada endereamento aplicado, a word presente nas linhas de dados (Dl - DO). Agora rearranje os diodos da matriz, o que equivaler a uma nova gravao de dados na ROM a fim de armazenar as seguintes words a partir do endereo 000(2). ADDRESS ( Endereo ) 0002 . . . 1112 DATA ( Dado ) 1 0 ; 11 ; 00 ; 01 ; 11 ; 01 ;1 1 ; 11

C)

D) Responda em seu relatrio: 1. O que determina o numero de endereos de uma memria ? 2. O que determina o nmero de bits da word armazenada em cada posio (endereo) de memria ? 3. Justifique; porqu esse tipo de memria pode ser considerada apenas de leitura - ROM ? 1.3 Implementao de uma ROM 1 6 x 1 A) A partir da montagem anterior, acrescente o seguinte circuito na sada de dados da memria j construda:

Figura 1.3 Diagrama em Blocos

Figura 1.4 Circuito Mux

B) Armazene agora a partir do endereo 0000(2) a seguinte seqncia de dados: ADDRESS (Endereo) DATA (Dado) 00002 . . . 11112 0;1;1;0;1;1;1;1;0;1;1;0;0;1;1;1C) Baseado nessa ltima montagem, como voc construiria uma memria 16 x 4 ?

Faa o circuito lgico completo e explique detalhadamente seu funcionamento (use blocos de 16 x 1 a fim de facilitar seu circuito).

CEFET-MG

Laboratrio de Sistemas Microprocessados I

5

PRTICA 2 - Operaes com memria FlashEEPROMAssuntos: Introduo s memrias EPROM; Gravao de memrias FLASHEEPROM; Utilizao da base hexadecimal: Tabela ASCII. Pen Drivers diversos. Programa de anlise Flash Memory ToolKit

Componentes:

2.1 Introduo As memrias EPROM (Eraseable Programable Read Only Memory} permitem o armazenamento de dados e sua posterior leitura. So identificadas como memrias NO VOLTEIS por apresentarem a caracterstica de, na falta da tenso de alimentao, no perderem os dados. Alm de utilizadas para guardar programas responsveis pela inicializao dos sistemas microprocessados estas memrias tambm podem ser utilizadas gerando seqncias de dados para diversas aplicaes. possvel tambm implementar uma funo matemtica com uma EPROM. Suponha a seguinte funo Y=X2+3, basta associar as linhas de endereos a X e as linhas de dados a Y. Nesta situao poderamos gerar esta funo atravs da seguinte tabela verdade:A2 0 0 0 0 1 1 1 1 A1 0 0 1 1 0 0 1 1 A0 0 1 0 1 0 1 0 1 D5 0 0 0 0 0 0 1 1 D4 0 0 0 0 1 1 0 1 D3 0 0 0 1 0 1 0 0 D2 0 1 1 1 0 1 1 1 D1 1 0 1 0 1 0 1 0 D0 1 0 1 0 1 0 1 0

2.2 Procedimento I Gravao e Leitura de uma EPROM Preparao e montagem Orientado pelo circuito abaixo e pela pinagem da EPROM monte um circuito capaz de gerar uma seqncia de dados.

A0-A11 CE OE O0-07

ADDRESSES CHIP ENABLE OUTPUT ENABLE OUTPUTS

A) Utilizando o gravador de EPROM grave uma seqncia desejada. B) Ligue as linhas de dados da EPROM aos LEDs do painel. C) Para iniciar os te stes aps a montagem d um pulso de resete no gerador de endereos garantido que suas sadas fiquem em nvel lgico baixo (end. 0000) D) A t ra v s d a c h a ve d e c lo c k ge re p u lso p a ra o co n t ad o r e o b s e rve a s e q n c ia gra va d a atravs dos LEDs.CEFET-MG

Laboratrio de Sistemas Microprocessados I

6

2.3 - Procedimento II Gravao e Leitura de uma FlashEEprom

CEFET-MG

Laboratrio de Sistemas Microprocessados I

7

PRTICA 3 - Operaes com memria RAMAssuntos: Estudo dos circuitos de memria; Ciclos de operao; Sinais de controle e temporizao; Memrias do tipo RAM esttica. Circuitos integrados 2116- 1024 x 8 Circuitos integrados TTL 74125

Componentes:

3.1. Introduo: As memrias RAMs estticas so aquelas que,uma vez gravado dados em suas clulas,nenhum outro processo adicional ser necessrio para a manuteno desses dados. Ao contrrio das RAMs dinmicas,elas retm as informaes enquanto durar a alimentao do circuito. As memrias estticas so relativamente rpidas quando comparadas com as dinmicas embora possuam um consumo maior por bit armazenado.

3.2. Preparao e montagem Oriente-se pelo diagrama de blocos para realizar sua montagem.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

8

3.3. Operao - "WRITE" A) Alimente o circuito com 5 Vdc e prepare o Cl para escrita (write) programando os sinais WE e CS em nveis adequados. B) Escreva agora os dados de acordo com a. Tabela Verdade.A2 0 0 0 0 1 1 1 1 ADDRESS A1 A0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 D3 0 1 0 1 0 0 1 1 DATA D2 D1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 D0 0 0 1 0 1 0 1 1

DICA

Lembre-se de aps gravar um dado no seu respectivo endereo, desativar o sinal WE antes de alterar o endereo para a prxima posio a ser gravada.

3.4. Operao - "READ" A) ATENO: no desligue o circuito. B) Programe agora os sinais WE e CS para uma operao de leitura (read). C) Verifique se os dados armazenados correspondem aos dados gravados durante o procedimento B do item 2. 3.5. Operao - "STAND BY" A) Com o circuito ainda preparado para leitura, diminua lentamente a tenso de alimentao em passos de 0,2V at atingir o ponto em que os dados se percam e anote esse valor. ATENO: Para a realizao desta tarefa observe que: - Ao atingir valores bem abaixo do nominal da tenso de alimentao, os buffers de sada de dados internos ao Cl, passam tambm a fornecer nveis lgicos indefinidos para o padro TTL. - Isto entretanto no significa que o Cl de memria j tenha perdido os dados. Para obter esta certeza, suba novamente a tenso de alimentao para o valor nominal e observe nos LED's, se os dados ainda esto presentes. B) Responda em seu relatrio: - Qual a funo do sinal CS ? - Explique a necessidade do Cl 74125 neste circuito. D) Projetar um banco de memria de 2K x 8 a partir de CI's 2114.Durante a coleta de dados para o seu relatrio, anote tudo que voc considerar importante e interessante. No se lim ite a seg u ir rig o ro samen te ap en as o q u e est send o p ed id o , mas personalize a sua pesquisa. A sua experincia pessoal intransfervel. CEFET-MG

Laboratrio de Sistemas Microprocessados I

9

PRTICA 4 O Microprocessador Didtico de 1 bitAssuntos: Componentes: Estudo do microprocessador didtico de 1 bit Carga e execuo de programa Placa do Microprocessador didtico Portas lgicas e memrias

4.1 Introduo: Este microprocessador foi projetado no laboratrio de sistemas microprocessados para que o aluno siga, aprendendo o funcionamento de um microprocessador, no caso de 1 bit, baseado na aula terica sobre a parte fsica do micro (hardware) e aulas prticas sobre a sua parte de programao (software). Neste guia o aluno deve registrar o que foi feito no laboratrio nestas ltimas aulas. 4.2 Desenvolvimento: Hardware do microprocessador de 1 bit:

Figura 4.2 Circuito do Mp1bit naTela do simulador

O aluno deve ser capaz de identificar no circuito acima os componentes e sua funo: CEFET-MG

Laboratrio de Sistemas Microprocessados I

10

* contador de programa * buffer * memria de programa * decodificador de instruo 4.3 Carregando um programa manualmente: A programao de um microprocessador feita da seguinte forma: Atravs de um conjunto de chaves, podemos gravar dados na memria que mais tarde sero utilizados como instrues pelo microprocessador, realizando assim, a programao desejada. Esse microprocessador trabalha com a seguinte tabela de instrues: Mnemnico NOOP SET CLR CPL JP, addr JZ, addr RST INP OUT HLT OPcode (Hexa) 00 01 02 03 04 05 06 07 08 09 Instruo No altera o contedo interno do processador Leva o contedo interno do processador para o nvel 1 Leva o contedo interno do processador para o nvel 0 Inverte o estado lgico do contedo do processador Desvia a execuo do programa para o endereo especificado Desvia a execuo do programa se o contedo dos dados for 0 Reinicia o programa no endereo 0h Copia o valor da entrada de dados para dentro do processador Copia o contedo do processador para a sada de dados Para a execuo do programa

Para program-lo, devemos, primeiramente, verificar se a chave de seleo se encontra no modo de leitura (read), para evitar que sejam gravados dados indesejados. Selecionamos, ento, a instruo desejada atravs de outras chaves e s ento mudamos a chave de seleo para o modo escrita (write) para gravarmos a informao desejada, voltando depois a chave de seleo para o modo leitura. Isso deve ser repetido com todas as instrues. Com a chave no modo leitura, podemos ver o funcionamento da programao. Realizar duas programaes: 1) Elaborar um programa que transforme o sistema PD-01 em um gerador de freqncia sendo que o perodo da freqncia de sada dever ter uma durao em torno de 3 ciclos de clock.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

11

Endereo 0h 1h 2h 3h 4h 5h

OPCODE 01h 08h 00h 02h 08h 04h

Label Incio

Instruo set out noop clr out jp incio

2) Em um sistema de alarme, gerar um tom na sada (freqncia de udio), toda vez a chave sensora de entrada for aberta. 0 tom dever permanecer mesmo se a chave for novamente fechada. Endereo 0h 1h 2h 3h 4h 5h OPCODE 02h 08h 07h 25h 01h 08h Label Instruo clr out inp jz - loop set out

loop

4.4 Concluso: Atravs dessa prtica o que foi possvel compreender o funcionamento e o mtodo de programao do microprocessador de um bit com xito? Baseado nisto e, utilizando-se desses conhecimentos, somos capazes de usar esse microprocessador com diversas finalidades?Ele se mostrou eficiente, verstil e muito til para a construo e programao de muitos equipamentos?

CEFET-MG

Laboratrio de Sistemas Microprocessados I

12

1. Exerccio bimestral (HARDWARE) - A UNIDADE ARITMTICA DO MICROPROCESSADOR DIDTICO DE 1 bitOBJETIVO: Projetar uma unidade aritmtica simples que faa as operaes de soma e subtrao como opo unidade lgica existente no projeto original.1.1.A UNIDADE ARIT MT ICA

A unidade aritmtica, que um meio-somador/subtrator, dever ser adicionada ao circuito original do microprocessador de 1 bit.

Figura 1.1 - Circuito do meio-somador/subtrator, onde A e B so as entradas (nmeros binrios a serem somados), o Modo quando igual a 1 feita a subtrao e quando igual a 0 feita a soma. Sada e Carry so as sada dos valores operados. Na tabela de instrues devero ser includas tambm as operaes ADD e SUB, adio e subtrao, respectivamente, como a seguir: Instruo Mnem. Bin Hexa ADD 1010 0A SUB 1011 0B INP 0 0 SET 1 0 CLR 1 1 Palavra de Comando JZ JP OUT 0 1 1 0 1 1 HLT 1 1 RXT 1 1 Hexa 6F 2F

Com a introduo da unidade aritmtica, o nosso microprocessador de 1 bit fica completo, embora mantendo a sua simplicidade. Isto permite trechos de programas do tipo: : INP ADD OUT : Naturalmente, o decodificador de instrues da nossa unidade de controle dever ser reprogramado ( microprogramao ) para atender estas duas novas instrues e toda uma ligao com portas lgicas dever ser acrescida ao circuito. CEFET-MG

Laboratrio de Sistemas Microprocessados I

13

PRTICA 5 O Ambiente de Simulao IARAssuntos: Componentes: Estudo do ambiente de simulao IAR Carga e execuo de programa Microcomputador PC Software de simulao

5.1 Carregando o simulador IAR pelo Windows

Para trabalhar com o ambiente de simulao IAR basta Clickar no cone correspondente do Desktop ou digitar a seguinte linha de comando C:\>IARSer ento apresentada a seguinte tela:

Caso contrrio, se no for possvel iniciar das formas anteriores, faa :

Na barra de ferramentas na opo iniciar.

Selecionar todos os programas

CEFET-MG

Laboratrio de Sistemas Microprocessados I

14

Na opo IAR Systems, selecione IARidePm_v4

Na sua tela inicial, escolhemos a opo Create new Project in current work depois a opo new Project onde aparecer create new project com a seleo de tipo de linguagem que podemos escolher; vamos selecionar a asm ( assembly )

Depois de estabelecida a linguagem basta criar a pasta onde seus programas sero salvos.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

15

Com o programa aberto: A seguir, com os arquivos salvos podemos visualizar um programa default e tambm os arquivos presente no workspace esquerda.

Agora temos que fazer a configurao das opes dos projeto, que feita no menu options ou no atalho ALT F7.Que abrir a janela Options for node .

na opo general Options, selecionamos as opes gerais do programa

CEFET-MG

Laboratrio de Sistemas Microprocessados I

16

Selecionando os tipos de arquivos, que sero gerados. importante que o generate debug information esteja acionado , para ser gerada a informao de depurao que vai ser utilizada pelo simulador ou depurador.

Voc poder configurar selecionando algumas opes do montador de programa.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

17

na pagina diagnostics permite gerar mensagens de aviso pelo montador.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

18

CEFET-MG

Laboratrio de Sistemas Microprocessados I

19

Terminado de ajustar todas as configuraes podemos digitar o programa que estamos querendo simular

Terminado a composio do programa, temos que ordenar ao embedded workbench que monte ( Assembler ) o programa e o agrupe ( Linker ).

Conceitos sobre Edio, Montagem e Linkedio Edio, Montagem e LinkedioAssunto: Componentes: Conceitos bsicos de programao. Microcomputador PC Software de Simulao

Introduo Nas prticas executadas at o momento foi utilizada uma das formas mais rudimentares no desenvolvimento de programas. Isto foi possvel pelo baixo grau de complexidade dos programas. Para programas que apresentam maior complexidade algumas ferramentas de suporte so utilizadas, entre elas podemos citar a elaborao de fluxogramas e os processos de edio, montagem e linkedio Os fluxograma, que um algoritmo na forma de diagrama, indica atravs de uma linguagem mais simples o que deve ser feito pelo programa. Alm de funcionar como um guia durante o processo de desenvolvimento de programas (sistemas) o fluxograma tambm ser extremamente til nas possveis manutenes futuras do programa. Um fluxograma para transferncia de bloco entre duas regies de memria pode ser visto no diagrama abaixo Incio

CEFET-MG

- Definir endereo do bloco de origem - Definir endereo do bloco de destino - Definir tamanho do bloco

Laboratrio de Sistemas Microprocessados I

20

-

Transfere dado Atualiza endereo de origem Atualiza endereo de destino Atualiza nmero de bytes restante

F

Todos os Bytes foram transferidos

Fim

Como possvel observar o fluxograma independe da linguagem de programao e se caso fosse utilizado o Assembly tambm no existiria nenhum vnculo a uma determinada CPU. No fluxograma s estamos interessados no procedimento, no que ser feito e no como ser feito. Alm do fluxograma utilizamos outra ferramenta que extremamente til para a correo dos programas durante a fase de desenvolvimento. Todos os programas escritos nas prticas anteriores eram carregados diretamente no simulador atravs do mnemnico correspondente. Caso um erro fosse cometido durante o processo de carga do programa era necessrio corrigir a linha errada e recarregar todo o cdigo restante. Este processo extremamente lento e desgastante quando estamos trabalhando com programas maiores. Para estes casos utilizamos os seguintes procedimentos:

EDIO

MONTAGEM

LINKEDIO

A edio um procedimento bem simples que consiste na digitao de todo o mnemnico pertencente ao programa, utilizando um editor de texto (ASCII). Aps digitar o programa ele deve ser salvo com um nome de at oito letras seguido da extenso .asm, como exemplo: teste.asm. Esta extenso indica que o programa est em linguagem Assembly. O programa na forma de texto reconhecido como cdigo fonte. O segundo procedimento conhecido como montagem a traduo do texto digitado V (mnemnico) para o respectivo cdigo de mquina (hexadecimal) da CPU. Caso seja obtido sucesso neste procedimento ser gerado um arquivo com extenso obj. Esta extenso significa cdigo objeto. O ltimo processo insere informaes relativas ao sistema operacional que est sendo utilizado ao cdigo objeto. Entretanto, o papel mais relevante da linkedio a ligao de

CEFET-MG

Laboratrio de Sistemas Microprocessados I

21

vrios cdigos objetos. Isto ocorre quando construmos programas muito grandes que por questes de projeto importante que o programa seja construdo com partes separadas. Um exemplo tpico seria o desenvolvimento de um programa de uma calculadora cientfica, onde para cada uma de suas funes fosse desenvolvido um programa isolado. Ao final de todo o desenvolvimento, o que poderia ser feito por mais de um programador, todas as funes seriam integradas atravs da linkedio. Ao final da linkedio ser gerado um arquivo com extenso .exe que corresponde ao arquivo executvel do programa. Como o prprio nome indica, este o arquivo que a CPU executar. Na prtica a seguir apresentado o programa relativo ao fluxograma anterior. Uma observao importante no cdigo deste programa a instruo JP NZ 0108h. Esta instruo denominada desvio condicional pois o fluxo do programa s ser desviado caso a condio testada seja verdadeira. No caso especfico desta instruo o PC (contador de programa) assumir o endereo 0108h caso o flag de zero no esteja ativo. Existe tambm a instruo responsvel pelo desvio incondicional, neste caso nenhum teste ser feito e a instruo JP ser seguida apenas do endereo desejado. - Procedimento 1 - O Programa s seguir efetua a transferncia do bloco de memria com incio em 1000H e tamanho 0FH para o bloco de memria com incio em 1100H. Endereo Instruo Operandos Cdigo 100 LD HL,1000h 21 0010 LD B, 0Fh 06 0F LD DE,1100h 11 00 11 LD A,(HL) 7E LD (DE),A 12 INC HL 23 INC DE 13 DEC B 05 JP NZ,0108h C2 08 01

2 - Com editor de texto Edit digite o programa acima. S sero digitadas as informaes das colunas Instruo e Operandos. Antes do cdigo devem ser digitadas algumas informaes adicionais utilizadas pelo montador que so denominadas diretivas de montagem. Estas diretivas iro definir as reas de cdigo, dados e pilha evitando assim a necessidade de definio destas mesmas reas no simulador. Com estas diretivas, ao carregarmos um programa, estas reas j sero automaticamente definidas no simulador.DEFSEG SEG DS DEFSEG SEG DEFSEG SEG INICIO: DADOS, DADOS 3FFh STSEG, STSEG START=1000h

START=1300h

MAINCODE, START=100h MAINCODE

Aps digitar todo o cdigo insira esta linha END 3- Aps digitar o programa salve o mesmo lembrando sempre que a extenso do programa tem que ser .asm

CEFET-MG

Laboratrio de Sistemas Microprocessados I

22

4- Faa a montagem do programa para gerao do arquivo objeto. Para executar esta etapa ser utilizado o montador (tradutor) AVMACZ80. Digite a seguinte linha de comando: avmacz80 , onde no lugar de prog deve ser colocado o nome que voc deu para o programa. No necessrio colocar a extenso .asm; 5- Para a linkedio ser utilizado o programa AVLINK. Digite a seguinte linha: avlink prog=prog Sy, onde novamente prog deve ser substitudo pelo nome que voc deu ao programa; 6- Execute o simulador do Z80 e, consultando a prtica 4 (item 4.5), carregue o programa no simulador; 7- Coloque os dados A0, A1, A2, ... at AF nos endereos 1000h a 100Fh 8- Execute o programa 9- Observe as posies de memria e veja se o programa foi executado 10- Coloque o PC=100h e execute passo a passo o programa at o endereo 010Dh; 11- Justifique os valores encontrados no registro B e no Flag Z 12- Troque no prprio simulador a instruo LD B,FFh por LD B,01h; 13- Repita os itens 10 e 11; 14- Explique a funo das instrues DEC B e JP NZ,0108h neste programa 15- Troque no simulador a instruo LD B,01h por LD B, FFh 16- Troque no simulador a instruo JP NZ, 0108h por JP Z,0108h 17- Carregue os dados 10h,11h, 12h, ... at 1Fh nos endereos 1000h a 100Fh; 18- Execute o programa 19- Verifique os blocos de memria e veja se o programa foi executado; 20- Justifique o resultado observado 21- Explique a diferena entre as instrues JP NZ,0108h e JP Z,0108h Introduo Nas prticas executadas at o momento foi utilizada uma das formas mais rudimentares no desenvolvimento de programas. Isto foi possvel pelo baixo grau de complexidade dos programas. Para programas que apresentam maior complexidade algumas ferramentas de suporte so utilizadas, entre elas podemos citar a elaborao de fluxogramas e os processos de edio, montagem e linkedio Os fluxograma, que um algoritmo na forma de diagrama, indica atravs de uma linguagem mais simples o que deve ser feito pelo programa. Alm de funcionar como um guia durante o processo de desenvolvimento de programas (sistemas) o fluxograma tambm ser extremamente til nas possveis manutenes futuras do programa.Como possvel observar o fluxograma independe da linguagem de programao e se caso fosse utilizado o Assembly tambm no existiria nenhum vnculo a uma determinada CPU. No fluxograma s estamos interessados no procedimento, no que ser feito e no como ser feito. Alm do fluxograma utilizamos outra ferramenta que extremamente til para a correo dos programas durante a fase de desenvolvimento. Todos os programas escritos nas prticas anteriores eram carregados diretamente no simulador atravs do mnemnico correspondente. Caso um erro fosse cometido durante o processo de carga do programa era necessrio corrigir a linha errada e recarregar todo o cdigo restante. Este processo extremamente lento e desgastante quando estamos trabalhando com programas maiores. Para estes casos utilizamos os seguintes procedimentos:

EDIO

MONTAGEM

LINKEDIO

A edio um procedimento bem simples que consiste na digitao de todo o mnemnico pertencente ao programa, utilizando um editor de texto (ASCII). Aps digitar o

CEFET-MG

Laboratrio de Sistemas Microprocessados I

23

programa ele deve ser salvo com um nome de at oito letras seguido da extenso .asm, como exemplo: teste.asm. Esta extenso indica que o programa est em linguagem Assembly. O programa na forma de texto reconhecido como cdigo fonte. O segundo procedimento conhecido como montagem a traduo do texto digitado (mnemnico) para o respectivo cdigo de mquina (hexadecimal) da CPU. Caso seja obtido sucesso neste procedimento ser gerado um arquivo com extenso obj. Esta extenso significa cdigo objeto. O ltimo processo insere informaes relativas ao sistema operacional que est sendo utilizado ao cdigo objeto. Entretanto, o papel mais relevante da linkedio a ligao de vrios cdigos objetos. Isto ocorre quando construmos programas muito grandes que por questes de projeto importante que o programa seja construdo com partes separadas. Um exemplo tpico seria o desenvolvimento de um programa de uma calculadora cientfica, onde para cada uma de suas funes fosse desenvolvido um programa isolado. Ao final de todo o desenvolvimento, o que poderia ser feito por mais de um programador, todas as funes seriam integradas atravs da linkedio. Ao final da linkedio ser gerado um arquivo com extenso .exe que corresponde ao arquivo executvel do programa. Como o prprio nome indica, este o arquivo que a CPU executar.

Com a utilizao da funo make que realiza as etapas da montagem e Linkagem e est no Project , aparece essa tela e ir aparecer na parte de baixo da tela uma janela que ir mostrar os erros contidos no programa:

CEFET-MG

Laboratrio de Sistemas Microprocessados I

24

Depois de detectar os erros e corrigi-los devemos ento fazer o DEBUG. Dentro da opo PROJECT marca-se a opo DEBUG ou ento aperta-se as teclas CTRL+D ou at mesmo clica-se no boto circulado na barra de ferramentas direita:

Aproveita-se agora atravs do menu VIEW para criarmos duas janelas importantes que so os REGISTROS e a MEMRIA respectivamente no menu do IAR, registers e memory. Dessa forma podemos agora rodar o programa passo a - passo no computador e simul-lo no microcomputador PC utilizado para fazer o experimento desejado concluindo com sucesso a prtica realizada.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

25

CEFET-MG

Laboratrio de Sistemas Microprocessados I

26

CEFET-MG

Laboratrio de Sistemas Microprocessados I

27

PRTICA 6 - Instrues de carga e transferncia de 8 bits Assunto: Grupo de instrues MOV.B do MSP430 Componentes: Microcomputador PC; software de simulao IAR6.1 Introduo: O carregamento e a transferncia de 8 bits podem ser subdivididos de acordo com a origem e o destino dos dados em 4 subgrupos, a saber: 1 - REG 2 REG 3 - MEMO 4 - REG/MEMO REG MEMO REG CONSTANTE

Os registros bsicos do MSP430 se dividem em: APONTADORES PC Contad. Programa SP Ponteiro de Pilha SR Ponteiro de Segm. Mais Sign. HighR4 HighR5 HighR6 Menos Sign. LowR4 LowR5 LowR6 Mais Sign. Menos Sign. HighR7 LowR7 ... ... HighR15 LowR15

6.2 Procedimento: Transferncia de 8 bits 1 - Dado o PGM abaixo: Endereo Instruo Operandos 01000h MOV.B R6,R7 MOV.B R5,R6 MOV.B R4,R5 MOV.B R7,R4 a) Carregue os registradores R4=44h; R5=55h; R6=66h b) Digite, execute e explique o que o programa faz 2 - Dado o PGM abaixo: Endereo Instruo Operandos 01000h MOV.B R6,&1100h MOV.B R5,R6 MOV.B R4,R5 MOV.B &1100h,R4 a) Carregue os registradores R4=AAh; R5=BBh; R6=CCh b) Digite, execute e explique o que o programa faz 3 - Problemas propostos: a) Troque os contedos entre os registros R7 e R8. b) Troque entre s o contedo das posies de memria 1100h e 1101h. c) Transfira o contedo da posio de memria, endereado pelo registro R5 para a posio de memria endereada pelo par R6.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

28

PRTICA 7 - Instrues de carga e transferncia de 16 bits Assunto: Grupo de instrues MOV[.W], PUSH e POP do MSP430 Componentes: Microcomputador PC; software de simulao IAR7.1.Introduo: O carregamento e a transferncia de 16 bits pode ser subdividido de acordo com a origem e o destino dos dados em 4 grupos, a saber: 1- REG 2- REG 3- REG/MEMO 4- PILHA REG MEMO CONSTANTE REG

O grupo de instrues de permuta dividido em 3 grupos: 1- REGs ativos 2- REGs passivos 3- PILHA 7.2 .Procedimento I - Transferncia de 16 bits 1- Dado o PGM abaixo: Endereo Instruo Operandos 01000h MOV.W Ox13FF, SP PUSH R4 PUSH R5 PUSH R6 PUSH R7 a) Carregue os registradores R4= FAFAh; R5=BEBEh; R6=CACAh; R7=7788h e reset os flags b) Digite, execute e explique o que o programa faz 2- Dado o PGM abaixo: Endereo Instruo Operandos 01000h MOV.W Ox13FFh, SP PUSH R4 PUSH R5 POP R6 POP R7 a) Carregue os registradores R4=BBCCh; R5=DDEEh e reset os flags b) Digite, execute e explique o que o programa faz 3-Problemas propostos: Escreva um PGM que troque os contedos das posies de memria endereadas pelos registradores R8 e R9 REGs passivos REGs ativos REGs

CEFET-MG

Laboratrio de Sistemas Microprocessados I

29

7.3 .Procedimento II - Permuta de 16 bits 1 - Dado o PGM abaixo: Endereo Instruo Operandos 01000h SWPB R4 SWPB R5 a) Carregue os registradores R4=DEDEh; R5=BABAh e SP=13FFh b) Digite, execute e explique o que o programa faz 2 - Problema proposto: Faa um PGM que transfira o topo da pilha para o par de registrador R6 e coloque no topo da pilha o valor 1100h

CEFET-MG

Laboratrio de Sistemas Microprocessados I

30

CEFET-MG

Laboratrio de Sistemas Microprocessados I

31

PRTICA 8 - Operaes lgicas e aritmticasAssunto: Grupo de instrues do MSP430 Estudo dos flags Operao BCD Microcomputador PC Software de simulao IAR

Componentes:

8.1 Introduo Nesta prtica sero estudadas as operaes lgicas e aritmticas 8.2 Procedimento I 1 - Realize manualmente as seguintes operaes 1. 50d-50d 2. 189d+73d 3. 55h+48h 4. 16h or45h 5. 123d and 35d 6. 45h-56h 2- Aps realizar as operaes, preencha a tabela com o estado de cada flag Operao Resultado C Z P/V S N H 50d-50d 189d+73d 55h+48h 16h or 45h 123d and 35d 45h-56h 8.3 Procedimento II - Operaes bsicas 1 - Carregue execute os seguintes PGMs com os valores necessrios para se efetuar as operaes do item 1 da introduo. Depois compare os resultados com os obtidos no item 2 1. Programa para subtrair X eY MOV #X,R4 MOV #Y,R5 SUB R5,R4 2. Programa para somar X eY MOV #X,R4 MOV #Y,R5 ADD R5,R4 3. Programa de OU lgico MOV #X,R4 MOV #Y,R5 OR R5,R4 4. Programa de AND lgico MOV #X,R4 MOV #Y,R5 AND R5,R4

2 - Faa um PGM para realizar as seguintes operaes a) 123d NOR 45d b) 153d NAND 35d c) 77h + 245d CEFET-MG

Laboratrio de Sistemas Microprocessados I

32

8.4 Procedimento III - Operaes em BCD 1- Recorde nmeros BCD e aritmtica BCD. Realize manualmente as operaes:a) 24d0 + 19d b) 57h + 21d

2- Carregue o PGM abaixo:1100 MOV MOV INC ADD INC MOV #1000h,R4 (R4),R5 R4 (R4),R5 R4 R5,(R4) 21 00 10 7E 23 86 23 77

3) Carregue 27h na posio de memria 1000h e 47h na posio de memria 1001h e Execute o programa e anote o contedo das posies de memria de 1000h a 1002h 4) Execute o PGM passo-a-passo at o end. 1106h 5) Qual o resultado do acumulador? Por que? 6) Execute o PGM passo-a-passo at o end. 1107h 7) Qual o resultado do acumulador? Por que? 8) Repita os itens de 3 a 8, agora com os valores 47h e 59h 9) Substitua a instruo ADD (R4),R5 por SUB (R4),R5 10) Carregue 47h na posio 1000h e 29h em 1001h 11) Execute o programa e anote o contedo das posies de memria de 1000h a 1002h 8.5 procedimento IV - Simulao de circuitos lgicos 1. Carregue o programa abaixo0100 MOV MOV INC MOV INC MOV MOV AND INV XOR OR INC MOV 1000h, R4 (R4),R5 R4 (R4),R6 R4 (R4),R7 R5,R4 R6 R6 R7 R5 R4 R8, (R4)

2) Carregue FFh em 1000h, 00h em 1001h e FFh em 1002h 3) Execute o programa 4) Anote o contedo das posies de memria de 1000h a 1003h 5) Execute o programa passo-a-passo 6) Analise os resultados obtidos a partir do end. 0108h at 010Ch 7) Desenhe o circuito lgico equivalente ao programa 8) Faa um programa que simule o seguinte diagrama. Simule o programa

CEFET-MG

Laboratrio de Sistemas Microprocessados I

33

Prtica 09 Comparao de BlocosAssunto: Grupo de instrues de comparao. Teste de Flags Jumps (absoluto e relativo) Microcomputador PC Software de Simulao

Componentes:

09.1 Introduo A instruo de jump relativo deve ser utilizada em situaes onde o tamanho do programa fator relevante no seu desenvolvimento, entretanto, seu uso cria limitaes ao programa. 09.2 Procedimento Um fluxograma para transferncia de bloco entre duas regies de memria pode ser visto no diagrama abaixoIncio

- Definir endereo do bloco de origem - Definir endereo do bloco de destino - Definir tamanho do bloco

-

Transfere dado Atualiza endereo de origem Atualiza endereo de destino Atualiza nmero de bytes restante

F

Todos os Bytes foram transferidos

V Fim

CEFET-MG

Laboratrio de Sistemas Microprocessados I

34

1) Utilizando o Edit digite o programa abaixo e gere o cdigo para simulao. Este programa deve ser montado a partir do endereo 200h DEFSEG SEG DS DEFSEG SEG DADOS, DADOS 3FFh STSEG, STSEG START=1000h

START=1300h

DEFSEG MAINCODE, START=200h SEG MAINCODE INICIO: LD HL,1000h 21 00 10 LD BC,1100h 01 00 11 LD DE,1200h 11 0012 LD A,(BC) 0A CP (HL) BE JP Z,021Bh CA 1B 02 JP C,0220h DA 20 02 LD A,00 3E 00 LD (DE),A 12 INC HL 23 INC BC 03 INC E 1C JP NZ,0209h C2 09 02 HALT 76 LD A,02 3E 02 JP 0213h C3 13 02 LD A,01 3E 01 JP 0213h C3 13 02 END 2) Carregue a seqncia: B0, B1, B2, B3, B4, ..., B9h a partir de 1000h e a seqncia B0,B2,B1,B3,B5,B6,B9,B7,B8,B4h a partir de 1100h. Execute o programa passo a passo acompanhando o mesmo. 3) Verifique as 10 primeiras posies dos blocos de memria 1000h, 1100h e 1200h. 4) O que faz este programa? Explique 5) Coloque no PC o endereo 0200h e execute o programa passo a passo at o endereo 020Bh 6) Observe o contedo das posies de memria endereadas por HL e DE. Anote e justifique os contedos de A e dos Flags Z e C 7) Justifique o resultado observado nos Flags Z e C 8) Explique o que ocorre nas instrues JP Z, XX; JP C, XX e JP NZ, XX para os valores encontrados nos flags Z e C da questo anterior. 9) Entre no editor de programa e altere a linha DEFSEG MAINCODE START=200h para o endereo 250h 10) Refaa o item 3 11) Verifique os blocos de memria e veja se o programa foi executado 12) Justifique 13) O programa pode ser carregado em outra posio de memria sem sofrer alterao? CEFET-MG

Laboratrio de Sistemas Microprocessados I

35

14) Entre no editor de programa e altere TODOS os endereos que esto logo aps os jumps condicionais e incondicionais por um rtulo (label). Siga o exemplo a seguir: INICIO . . . JP JP . . . LD JP LD JP INICIO . . . JP JP . . . LD JP LD JP

Z,021Bh C,0220h

Z,IGUAL C,MAIOR

021Bh 0220h

A, 02 0213h A,01 0213h

IGUAL MAIOR

A, 02 0213h A,01 CONT

END

END

15) Uma vez que todos os rtulos foram mudados, execute o programa e observe o que aconteceu com os mesmos. 16) Entre no editor de programa e altere a linha DEFSEG MAINCODE START=250h para o endereo 200h 17) Execute o programa e justifique a importncia dos rtulos na programao 18) Observe e anote o cdigo da instruo JP Z,IGUAL na memria (Memory Space). 19) Entre no editor de programa e troque todas as instrues JP por JR 20) Execute o programa e verifique o funcionamento 21) Repita o tem 18 e justifique a diferena existente entre as instrues JP e JR 22) Faa um fluxograma seguido do programa que compare 2 blocos de memria (1000h e 1100h) byte a byte colocando no bloco do resultado (1200h) o byte maior.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

36

Prtica 10 SubrotinasAssunto: Conceito de subrotina Processo de chamada e retorno de subrotinas Conceito de pilha Passagem de parmetro Microcomputador PC Software de Simulao

Componentes:

10.1 Introduo Considere uma operao como a multiplicao, para a qual o MSP430 no possui uma nica instruo capaz de implement-la. Torna-se portanto necessrio um grupo de instrues para realizar a operao de multiplicao. Um grupo de instrues que realiza uma tarefa especfica chamado de rotina. Portanto, um grupo de instrues que realiza a operao de multiplicao chamado de rotina de multiplicao. Programa Principal INCIO Subrotina Dentro de um programa maior pode ser necessrio executar a operao de multiplicao diversas vezes. O que nos obriga a copiar a rotina de multiplicao diversas vezes dentro desse programa, provocando um gasto excessivo de memria. Uma forma mais eficiente de resolver este problema fazer uma nica cpia desta rotina e encontrar uma forma de acess-la. A figura ao lado ilustra este mecanismo. Uma rotina, implementada desta forma chamada de subrotina. O programa que chama a subrotina chamado de programa principal

INCIO

FIM FIM

- Chamada e retorno de Subrotina Sempre que for necessria a execuo da subrotina, usa-se a instruo CALL. O que esta instruo faz mudar a seqncia de execuo do programa, desviando-o para o endereo inicial da subrotina e, para poder retornar da subrotina, guardando o valor do PC. O valor de PC armazenado na pilha. Esta operao denominada de Chamada de subrotina. Assim a subrotina executada at a sua ltima instruo, que deve ser obrigatoriamente a instruo retorno de subrotina RET. Esta instruo realiza exatamente o processo inverso da instruo CALL. Isto , coloca em PC o valor armazenado na pilha pela instruo CALL.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

37

10.2 Procedimento 1) Edite, monte, linkedite e programa abaixo. Aps a gerao do cdigo executvel carregue no simulador e teste.DEFSEG SEG DS DEFSEG SEG DEFSEG SEG INICIO: LD LD LD LD LD VOLTA3: LD CALL LD INC INC INC LD CP JR HALT SUB_ROT: PUSH LD LD LD CP JR VOLTA2: ADD DEC JR JR VOLTA 1: POP RET END DADOS, DADOS 3FFh STSEG, STSEG START=1000h

START=1300h

MAINCODE, START=100h MAINCODE HL,13FFh SP,HL HL,1000h BC,1100h DE,1200h A,(BC) SUB_ROT (DE),A DE BC HL A,00 L NZ,VOLTA3 BC B(HL) C,S A,00 B Z,VOLTA1 A,C B Z,VOLTA1 VOLTA2 BC

2) Observe o programa no simulador e responda: Qual o endereo inicial do programa principal? Qual o endereo final do programa principal? Qual o endereo inicial da subrotina? Qual o endereo final da subrotina? Em que endereo a subrotina chamada? 3) Carregue a seqncia 00, 01, 02, 03, ..., 09 a partir do endereo 1000h e 02 de 1100h a 110Ah. Execute o programa 4) Compare os contedos dos blocos 1000/100Fh, 1100/110Fh e 1200/120Fh. O que voc observou?

CEFET-MG

Laboratrio de Sistemas Microprocessados I

38

5) Execute o programa passo a passo parando nos endereos relacionados a seguir (no execute as instrues contidas nestes endereos). Anote, ento, o contedo dos registradores PC e SP e os 8 primeiros bytes da rea de pilha Instruo CALL SUB ROT PUSH BC LD B,(HL) RET LD (DE),A PC SP Pilha

6) Explique passo a passo, com suas palavras, o que aconteceu com PC, SP e a Pilha

CEFET-MG

Laboratrio de Sistemas Microprocessados I

39

2. Exerccio bimestral (SOFTWARE) A MULTIPLICAO E A DIVISO ARITMTICA NO MICROCONTROLADOR MSP4301 Faa um fluxograma seguido do seu programa que multiplique uma palavra de oito bits presente a partir da posio de memria 1000h, com outra na posio de memria 1001h e coloque este resultado na posio de memria 1010h, segundo o algoritmo de somas e deslocamentos abaixo. Situao inicial Aps a primeira rotao

2 - Faa um fluxograma seguido do seu programa que divida uma palavra de oito bits presente a partir da posio de memria 1000h, com outra na posio de memria 1001h e coloque este resultado na posio de memria 1010h, segundo o algoritmo de somas e deslocamentos abaixo. Situao inicial Aps a primeira rotao

3 Faa o fluxograma seguido do seu programa que apresente na memria um relgio digital. Este relgio dever utilizar dois bytes para horas, dois bytes para minutos e dois bytes para segundos separados por dois pontos. Ele dever ser carregado a partir da posio de memria 1000h. 1000 H H : M M : S S Observe que cada posio de memria dever conter o cdigo ASCII do dgito corrente.

CEFET-MG

Laboratrio de Sistemas Microprocessados I

40

ANEXOS

A1 - TABELA ASCII

A tabela ASCII (American Standard Code for Information Interchange) usada pela maior parte da industria de computadores para a troca de informaes. Cada caracter representado por um cdigo de 8 bits (um byte). Abaixo mostramos a tabela ASCII de 7 bits. Existe uma tabela extendida para 8 bits que inclui os caracteres acentuados.Caracter Decimal Hexadecimal Binrio NUL 00 00 0000 0000 SOH 01 01 0000 0001 STX 02 02 0000 0010 ETX 03 03 0000 0011 EOT 04 04 0000 0100 ENQ 05 05 0000 0101 ACK 06 06 0000 0110 BEL 07 07 0000 0111 BS 08 08 0000 0100 HT 09 09 0000 1001 LF 10 0A 0000 1010 VT 11 0B 0000 1011 FF 12 0C 0000 1100 CR 13 0D 0000 1101 SO 14 0E 0000 1110 SI 15 0F 0000 1111 DLE 16 10 0001 0000 D1 17 11 0001 0001 D2 18 12 0001 0010 D3 19 13 0001 0011 D4 20 14 0001 0100 NAK 21 15 0001 0101 SYN 22 16 0001 0110 ETB 23 17 0001 0111 CAN 24 18 0001 1000 EM 25 19 0001 1001 SUB 26 1A 0001 1010 ESC 27 1B 0001 1011 FS 28 1C 0001 1100 GS 29 1D 0001 1101 RS 30 1E 0001 1110 Caracter Decimal Hexadecimal Binrio US 31 1F 0001 1111 Espao 32 20 0010 0000 ! 33 21 0010 0001 " 34 22 0010 0010 # 35 23 0010 0011 $ 36 24 0010 0100 % 37 25 0010 0101 & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 0010 0110 0010 0111 0010 1000 0010 1001 0010 1010 0010 1011 0010 1100 0010 1101 0010 1110 0010 FFFF 0011 0000 0011 0001 0011 0010 0011 0011 0011 0100 0011 0101 0011 0110 0011 0111 0011 1000 0011 1001

: 58 3A 0011 1010 ; 59 3B 0011 1011 < 60 3C 0011 1100 = 61 3D 0011 1101 Caracter Decimal Hexadecimal Binrio > 62 3E 0011 1110 ? 63 3F 0011 1111 @ 64 40 0100 0000 A 65 41 0100 0001 B 66 42 0100 0010 C 67 43 0100 0011 D 68 44 0100 0100 E 69 45 0100 0101 F 70 46 0100 0110 G 71 47 0100 0111 H 72 48 0100 1000 I 73 49 0100 1001 J 74 4A 0100 1010 K 75 4B 0100 1011

CEFET-MG

Laboratrio de Sistemas Microprocessados I

41

L 76 4C 0100 1100 M 77 4D 0100 1101 N 78 4E 0100 1110 O 79 4F 0100 1111 P 80 50 0101 0000 Q 81 51 0101 0001 R 82 52 0101 0010 S 83 53 0101 0011 T 84 54 0101 0100 U 85 55 0101 0101 V 86 56 0101 0110 W 87 57 0101 0111 X 88 58 0101 1000 Y 89 59 0101 1001 Z 90 5A 0101 1010 [ 91 5B 0101 1011 \ 92 5C 0101 1100 ] 93 5D 0101 1101 ^ 94 5E 0101 1110 _ 95 5F 0101 1111 ` 96 60 0110 0000 a 97 61 0110 0001 b 98 62 0110 0010 Caracter Decimal Hexadecimal Binrio c 99 63 0110 0011 d 100 64 0110 0100 e 101 65 0110 0101 f 102 66 0110 0110 g 103 67 0110 0111 h 104 68 0110 1000 i 105 69 0110 1001 j 106 6A 0110 1010 k 107 6B 0110 1011 l 108 6C 0110 1100 m 109 6D 0110 1101 n 110 6E 0110 1110

o p q r s t u v w x y z { | } ~ DELETE

111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F

0110 1111 0111 0000 0111 0001 0111 0010 0111 0011 0111 0100 0111 0101 0111 0110 0111 0111 0111 1000 0111 1001 0111 1010 0111 1011 0111 1100 0111 1101 0111 1110 0111 1111

CEFET-MG

Microcontroladores MSP 430

Conjunto de Instrues

A2 - Conjunto de InstruesIntroduoA 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 instrues1) *ADC[.W] *ADC.B Sintaxe Adiciona o bit de carry ao destino adiciona o bit de carry ao destino ADC ADC.B dst dst + C ADDC ADDC.B dst #0,dst #0,dst dst ou ADC.W dst

Operao Emulao

Descrio

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.

Bits de status

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

42

Microcontroladores MSP 430

Conjunto de Instrues

2) ADD[.W] ADD.B Sintaxe

Adiciona a fonte ao destino Adiciona a fonte ao destino ADD src, dst ADD.B src, dst src + dst dst

Operao Descrio

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 se resultado negativo, resetado se positivo. Setado se o resultado for zero, resetado em caso contrrio. Setado se houver carry no resultado, resetado em caso contrrio. Setado se 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] Adiciona a fonte e o carry ao destino ADDC.B Sintaxe ADDC ADDC.B src + dst + C src, dst ser,dst dst

Operao Descrio

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 se resultado negativo, resetado se positivo. Setado se o resultado for zero, resetado em caso contrrio. Setado se houver carry no resultado, resetado em caso contrrio. Setado se 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.

CEFET

43

Microcontroladores MSP 430

Conjunto de Instrues

4) AND[.W] AND.B Sintaxe

Fonte AND destino

AND src, dst AND.B src, dst src AND dst dst

Operao Descrio

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.

Bits de status

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 Zera os bits do destino

5) BIC[.W] BIC.B Sintaxe

BIC BIC.B

src, dst src,dst dst

Operao Descrio

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 seis bits mais significativos da palavra LEO. BIC #0FC00, LEO Zera os bits 0 e 1 da porta P0. P0OUT .equ 011h ;definio do endereo da porta. P0_0 .equ 01h P0_1 .equ 02h BIC.B #P0_0+P0_1, &P0OUT ;zera os 2 LSBs de P0

Bits de status Exemplo Exemplo

CEFET

44

Microcontroladores MSP 430

Conjunto de Instrues

6) BIS[.W] BIS.B Sintaxe

Seta os bits do destino

BIS BIS.B src OR dst

src,dst src,dst dst

Operao Descrio

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 seis bits menos significativos da word TOM. BIS #003Fh, TOM Seta os 2 LSBs da porta P0. P0OUT .equ 011h P0 .equ 01h P1 .equ 02h BIS.B #P0+P1, &P0OUT Testa bits no destino

Bits de status Exemplo Exemplo

7) BIT[.W] BIT.B Sintaxe Operao Descrio

BIT src AND dst

src, 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: Setado se o MSB do resultado estiver setado, resetado em caso contrrio. Z: Setado se resultado zero, resetado caso contrrio. C: Setado se resultado no zero, resetado caso contrrio V: Resetado. 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 ... ;no, continua. Se o bit 3 de R8 estiver setado, salta para o label TOM. BIT.B #8, R8 JC TOM

Bits de status

Exemplo

Exemplo

CEFET

45

Microcontroladores MSP 430

Conjunto de Instrues

8) *BR, Branch Sintaxe Operao Emulao Descrio

Salta para o destino. BR dst MOV dst PC dst, PC

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.

Bits de status Exemplos

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

CEFET

46

Microcontroladores MSP 430

Conjunto de Instrues

10) *CLR[.W] CLR.B Sintaxe

Zera destino

CLR CLR.B 0 dst

dst dst

Operao Emulao

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

Descrio Bits de status Exemplos

11) *CLRC Sintaxe Operao Emulao Descrio Bits de status

Zera o bit de carry CLRC 0 BIC C #1,SR

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. Zera o bit negativo CLRN 0 BIC N #4, SR

12) *CLRN Sintaxe Operao Emulao Descrio

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

Bits de status

CEFET

Microcontroladores MSP 430

Conjunto de Instrues

Exemplo 13) *CLRZ Sintaxe Operao Emulao Descrio

CLRN 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 Compara fonte e destino No afetado Zerado No afetado No afetado

Bits de status

Exemplo 14) CMP[.W] CMP.B Sintaxe

CMP src, dst CMP.B src, dst dst - src 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 contrrio. Setado se houver um overflow aritmtico, resetado caso contrrio.

Operao Descrio

Bits de status

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.

CEFET

48

Microcontroladores MSP 430

Conjunto de Instrues

15) *DADC[.W] *DADC.B Sintaxe

Soma BCD o carry ao destino

DADC DADC.B dst + C DADD DADD.B

dst dst dst (decimal) #0, dst #0, dst

Operao Emulao

Descrio Bits de status

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)

16) DADD[.W] DADD.B Sintaxe

Soma fonte, carry e destino (BCD)

DADD DADD.B

src, dst src, dst dst (decimal)

Operao Descrio

src + dst + C

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

CEFET

49

Microcontroladores MSP 430

Conjunto de Instrues

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 Decrementa o destino

17) *DEC[.W] *DEC.B Sintaxe

DEC DEC.B dst dst - 1

dst

Operao Emulao

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.

Descrio

Bits de status

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 Decremento duplo do destino

18) *DECD[.W] *DECD.B Sintaxe

DECD DECD.B dst - 2

dst dst dst

Operao Emulao

SUB #2, dst SUB.B #2, dst50

CEFET

Microcontroladores MSP 430

Conjunto de Instrues

Descrio

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.

Bits de status

Exemplo 19) *DINT Sintaxe Operao Emulao Descrio

DECD

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. Habilita (geral) interrupes EINT 1 BIS GIE #8, SR

Bits de status Bits de modo Exemplo

20) *EINT Sintaxe Operao Emulao Descrio

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 setado51

Bits de status Bits de modoCEFET

Microcontroladores MSP 430

Conjunto de Instrues

Exemplo

Idem anterior.

CEFET

52

Microcontroladores MSP 430

Conjunto de Instrues

21) *INC[.W] *INC.B Sintaxe

Incrementa destino

INC INC.B dst + 1 ADD

dst dst dst #1, dst

Operao Emulao Descrio Bits de status

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 Incremento duplo no destino

22) *INCD[.W] *INCD.B Sintaxe

INCD INCD.B dst + 2

dst dst dst

Operao Emulao

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.

Descrio Bits de status

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

53

Microcontroladores MSP 430

Conjunto de Instrues

23) *INV[.W] *INV.B Sintaxe

Inverte o destino

INV INV.B NOT dst

dst dst dst

Operao Emulao

XOR #0FFFFh, dst XOR.B #0FFh, dst Inverte o operando de destino. O contedo original perdido. Setado se resultado negativo, resetado se positivo Z: Setado se resultado zero, resetado em caso contrrio C: Resetado se resultado zero, setado em caso contrrio V: Setado se contedo inicial do destino negativo, Resetado em caso contrrio. Encontra o segundo complemento de R5. MOV #00Aeh, R5 INV R5 INC R5 Jump se o bit carry estiver setado ou Jump se maior ou igual JC rtulo ou JHS rtulo

Descrio Bits de status N:

Exemplo

24) JC ou JHS Sintaxe Operao

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.

Descrio

Bits de status No 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 Jump se igual ou jump se zero. JEQ rtulo ou JZ rtulo

25) JEQ ou JZ Sintaxe Operao

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.54

Descrio

CEFET

Microcontroladores MSP 430

Conjunto de Instrues

Bits de status No afetados. Exemplo Salta para o endereo LEO se R6 igual ao contedo da tabela. CMP R6, tabela(R5) JEQ LEO Jump maior ou igual JGE rtulo PC

26) JGE Sintaxe Operao

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

Descrio

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. Jump se menor (less) JL rtulo PC

Bits de status Exemplo

27) JL Sintaxe Operao

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

Descrio

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. Jump incondicional JMP rtulo PC55

Bits de status Exemplo

28) JMP Sintaxe OperaoCEFET

PC + 2 x offset

Microcontroladores MSP 430

Conjunto de Instrues

Descrio

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. Jump se negativo JN rtulo PC

Bits de status Sugesto

29) JN Sintaxe Operao

Se N = 1, ento salta p/ o rtulo: PC + 2 x offset Se N = 0, execute a prxima instruo.

Descrio

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 ..... Jump se no carry ou jump se menor (lower) JNC rtulo ou JLO rtulo PC

Bits de status Exemplo

L$1

30) JNC, JLO Sintaxe Operao

Se C = 0, ento salta p/ rtulo: PC + 2 x offset Se C = 1, execute a prxima instruo.

Descrio

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 normal56

Bits de status Exemplo

ERRO CONTCEFET

Microcontroladores MSP 430

Conjunto de Instrues

31) JNE, JNZ Sintaxe Operao

Jump se no igual ou jump se no zero JNE rtulo ou JNZ rtulo PC

Se Z = 0, ento salta p/ o rtulo: PC + 2 x offset Se Z = 1, ento executa a prxima instruo

Descrio

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. Move fonte para destino

Bits de status Exemplo

32) MOV[.W] MOV.B Sintaxe

MOV src, dst MOV.B src, dst src dst

Operao Descrio

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. No operao NOP Nenhuma MOV #0, #0

Bits de status Exemplo

33) *NOP Sintaxe Operao Emulao DescrioCEFET

A instruo usada para eliminao de instruo no programa ou para definio de tempos de espera.57

Microcontroladores MSP 430

Conjunto de Instrues

Bits de status Nota

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 Retira word da pilha para o destino

34) *POP[.W] *POP.B Sintaxe Operao

POP @SP SP + 2 dst SP

dst ou POP.B dst

Emulao

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

Descrio

Bits de status Exemplo

Nota

O ponteiro de pilha sempre incrementado por 2 independente do sufixo .B Coloca a word na pilha

35) PUSH[.W] PUSH.B Sintaxe Operao

PUSH SP 2 SP Src @SP

src ou PUSH.B

src

Descrio

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

Bits de status Exemplo

Nota

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

CEFET

58

Microcontroladores MSP 430

Conjunto de Instrues

36) *RET Sintaxe Operao

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

Emulao Descrio

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. Retorno de interrupo RETI @SP SP + 2 @SP SP + 2 SR SP PC SP

Bits de status 37) RETI Sintaxe Operao

Descrio

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 Rotao aritmtica a esquerda

Bits de status Bits de modo 38) *RLA[.W] *RLA.B Sintaxe Operao Emulao Descrio

RLA

dst ou RLA.B dst

C MSB MSB 1 .... LSB +1 LSB 0 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.

Figura B.1 - RLAUm overflow ocorrer se dst >= 40h ou dst < C0h antes da operao. O resultado mudar de sinal. Bits de statusCEFET

N: Z:

Setado se resultado negativo, resetado se positivo Setado se resultado zero, resetado em caso contrrio59

Microcontroladores MSP 430

Conjunto de Instrues

C: V: Exemplo

Carregado do MSB Setado se ocorrer um overfow, resetado caso contrrio

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). Rotao circular a esquerda atravs do carry

Nota

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

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.

Figura B.2 - RLCBits 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.

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) Rotao aritmtica a direita

Nota

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

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.

CEFET

60

Microcontroladores MSP 430

Conjunto de Instrues

Figura B.3 - RRABits 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

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 Rotao circular a direita atravs do carry

41) RRC[.W] RRC.B Sintaxe Operao Descrio

RRC C MSB

dst ou RRC.B dst MSB 1 .... LSB + 1 LSB C

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 - RRCBits 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.

Exemplo

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

42) *SBC[.W] Subtrai o borrow do destino *SBC.B Sintaxe Operao SBC dst ou SBC.B dst

dst + 0FFFFh + C dst dst + 0FFh + C dst SUBC SUBC.B #0, dst #0, dst

Emulao

DescrioCEFET

O bit de carry menos 1 somado ao destino. O contedo prvio do destino perdido.61

Microcontroladores MSP 430

Conjunto de Instrues

Bits de status

Exemplo

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 carry bit Sim 0 No 1 Seta o bit de carry SETC 1 BIS C #1, SR

N: Z: C:

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 BIS N #4, SR

44) *SETN Sintaxe Operao Emulao Descrio Bits de status

O bit N do registro de status setado N: Z: C: Setado No afetado No afetado62

CEFET

Microcontroladores MSP 430

Conjunto de Instrues

V: 45) *SETZ Sintaxe Operao Emulao Descrio Bits de status

No afetado

Seta o bit de zero SETZ 1 Z

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

Subtrai fonte do destino

SUB

src, dst ou SUB.B dst ou

src, dst

dst + (no src + 1) dst src dst

Descrio

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

V:

Exemplo Nota

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

0 1

47) SUBC, SBB[.W]Subtrai a fonte e o borrow (not carry) do destino SUBC.B, SBB.B Sintaxe SUBC SUBC.B src, dst ou SBB src, dst src, dst ou SBB.B src, dst dst ou dst

Operao

dst + no src + C dst src 1 + C

Descrio

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.63

CEFET

Microcontroladores MSP 430

Conjunto de Instrues

Bits de status

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.

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 Carry Sim No Troca bytes (swap bytes) SWPB dst bits 7 a 0

Nota

0 1

48) SWPB Sintaxe Operao Descrio

Bits 15 a 8

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

Figura B.5 - SWPBBits de status N: Z: C: V: MOV SWPB Estende sinal SXT Bit 7 dst bit 8 a 15 No No No No afetado afetado afetado afetado #040BFh, R7 R7 ;0100 0000 1011 1111 ;1011 1111 0100 0000 R7 R7

Exemplo

49) SXT Sintaxe Operao DescrioCEFET

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

Microcontroladores MSP 430

Conjunto de Instrues

Figura B.6 - SXTBits 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. Testa destino

50) *TST[.W] *TST.B Sintaxe Operao Emulao Descrio

TST

dst ou TST.B dst

dst + 0FFFFh + 1 ou dst + 0FFh + 1 CMP #0,dst ou CMP.B #0,dst

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

Bits de status

Exemplo

R7POS R7NEG R7ZERO 51) XOR[.W] XOR.B Sintaxe Operao

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 Ou exclusivo da fonte com o destino

XOR src XOR dst

src,dst ou XOR.B dst

src,dst

CEFET

65

Microcontroladores MSP 430

Conjunto de Instrues

Descrio

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.

Bits de status

Exemplo

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

CEFET

66