Guia de Laboratório de Microprocessadores I

March 20, 2018 | Author: Ramon H Souza | Category: Microprocessor, Software, Assembly Language, Computer Data Storage, Process (Computing)


Comments



Description

- CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAISLABORATÓRIO DE SISTEMAS MICROPROCESSADOS I Esta apostila é um esforço integrado de diversos professores da coordenação de eletrônica, que lecionam a matéria de Sistemas Microprocessados. Existe a cooperação de alunos no desenvolvimento desta com sugestões e comentários. Coube a mim em 2009, o processo de sistematização e padronização inicial, visando os cursos modulados noturnos. Prof. Carlos A. Rennó Belo Horizonte – MG Brasil – 21 de Junho de 2009 Laboratório de Sistemas Microprocessados I 2 ÍNDICE Prática 01 - MEMÓRIA APENAS DE LEITURA – ROM ..……………………………….... 3 1.1 – Introdução ..………………………………………………………………….... 3 1.2 – Preparação e Montagem ..…………………………………………………... 3 1.3 – Implementação de uma ROM 16 x 1 ..……………………………………... 4 Prática 02 - OPERAÇÕES COM MEMÓRIA ROM ..…………………………………....... 5 2.1 – Introdução .....………………………………………………………………..... 5 Prática 03 - OPERAÇÕES COM MEMÓRIAS RAM .……………………………………… 7 3.1 – Introdução .......………………………………………………………………… 7 3.2 – Preparação e Montagem .....…………………………………………………. 7 3.3 – Operação “WRITE” ....………………………………………………………… 8 3.4 – Operação “READ” …………………………………………………………….. 8 3.5 – Operação “STAND BY” ………………………………………………………. 8 Prática 04 – OPERAÇÕES E PROGRAMAÇÃO COM O p DIDÁTICO DE 1 BIT ..... 9 4.1 – Operação do Hardware do microprocessador didático ............................ 9 4.2 – Operação de Software ( programação Assembly ) ................................... 11 PRIMEIRO EXERCÍCIO BIMESTRAL ............................................................................ 12 Prática 5 – O AMBIENTE DE SIMULAÇÃO IAR ……………………………………......... 13 5.1 – Carregando o Simulador ..……………………………………………………. 13 5.2 – Funcionamento Básico ...………………………………………………………13 5.3 – Carregando um programa manualmente .…………………………………… 14 5.4 – Executando um programa após seu carregamento ..………………………14 5.5 – Carregando um programa após a montagem ....……………………………15 Prática 6 - INSTRUÇÕES DE CARGA E TRANSFERÊNCIA DE 8 BITS .....……………27 6.1 – Introdução ....…………………………………………………………………… 27 6.2 – Procedimento ..………………………………………………………………… 27 Prática 7 - INSTRUÇÕES DE CARGA E TRANSFERÊNCIA DE 16 BITS ......………… 28 7.1 – Introdução ……………………………………………………………………… 28 7.2 – Procedimento I ....……………………………………………………………… 28 7.3 – Procedimento II ...……………………………………………………………… 28 Prática 8 - OPERAÇÕES LÓGICAS E ARITMÉTICAS ………………………………. 31 8.1 – Introdução …………………………………………………………………… 31 8.2 – Procedimento I ………………………………………………………………… 31 8.3 – Procedimento II …………………………………………………………………31 8.4 – Procedimento III …………………………………………………………………… 31 8.5 – Procedimento IV …………………………………………………………………… 31 Prática 09 - COMPARAÇÃO DE BLOCOS .....…………………………………………….. 33 09.1 – Introdução ..…………………………………………………………………… 33 09.2 – Procedimento ....……………………………………………………………… 33 Prática 10 – SUBROTINAS ...……………………………………………………………….. 36 10.1 – Introdução .....………………………………………………………………... 37 10.2 – Procedimento ......……………………………………………………………. 38 SEGUNDO EXERCÍCIO BIMESTRAL .......................................................................... 39 ANEXOS ........................................................................................................................ 40 A.1 - TABELA ASCII .....………………………………………………………….... 40 A.2 – INSTRUÇÕES DO MSP430 .……………………………………………....... 41 µ CEFET-MG Laboratório de Sistemas Microprocessados I 3 PRÁTICA 1 - Operações com memória ROM Assuntos: Estudo dos circuitos de memória; Expansão da palavra; Expansão do endereçamento; Memórias do tipo ROM a diodos. Circuito integrado TTL 74LS138; Circuito integrado TTL 74125; Diodos retificadores Componentes: Introdução: A memória apenas de leitura - ROM, é utilizada em sistemas de computação para armazenar instruções de programas, subrotinas. tabelas de conversão, dados, etc. Ê chamada "apenas de leitura" porque uma vez estabelecido o seu conteúdo, o computador não consegue alterá-lo. Esta característica é fundamental para muitas aplicações, pois as informações ficam permanentemente armazenadas mesmo que a alimentação seja desligada. Modelo de memória - 8x2 O modelo é um objeto abstrato que serve para explicar um objeto real, portanto, vamos desenvolver um circuito capaz de permitir a compreensão exata da arquitetura básica dos circuitos de memória. 1.1 Figura 1.1 - Diagrama em bloco genérico Figura 1.2 – Circuito lógico genérico 1.2 Preparação e montagem: A) Considere o circuito abaixo como referência e realize sua montagem observando corretamente o anodo e catodo dos diodos envolvidos: ATENÇÃO: CONSULTE O DATA SHEET DO 74LS138 DEFININDO TODAS AS LIGAÇÕES NECESSÁRIAS PARA QUE O MESMO FUNCIONE ADEQUADAMENTE. CEFET-MG CEFET-MG .0.1.Laboratório de Sistemas Microprocessados I 4 B) Construir em seu relatório uma tabela verdade. 1112 DATA ( Dado ) 1 0 . acrescente o seguinte circuito na saída de dados da memória já construída: Figura 1.DO). porquê esse tipo de memória pode ser considerada apenas de leitura .1. ADDRESS ( Endereço ) 0002 .0. . O que determina o número de bits da word armazenada em cada posição (endereço) de memória ? 3. . . a word presente nas linhas de dados (Dl .4 – Circuito Mux B) Armazene agora a partir do endereço 0000(2) a seguinte seqüência de dados: ADDRESS (Endereço) DATA (Dado) 00002 .1.1.ROM ? 1. como você construiria uma memória 16 x 4 ? Faça o circuito lógico completo e explique detalhadamente seu funcionamento (use blocos de 16 x 1 a fim de facilitar seu circuito).1. todas as combinações de níveis lógicos possíveis.0.3 Implementação de uma ROM 1 6 x 1 A) A partir da montagem anterior. 01 . o que equivalerá a uma nova gravação de dados na ROM a fim de armazenar as seguintes words a partir do endereço 000(2).AO).3 – Diagrama em Blocos Figura 1. aplicando nas linhas de endereçamento (A2 . 11 . anotando para cada endereçamento aplicado. 11 .1.0. 01 .1.1.1. 00 .1 1 .1 C) Baseado nessa última montagem.1. O que determina o numero de endereços de uma memória ? 2. . 11 C) D) Responda em seu relatório: 1. Agora rearranje os diodos da matriz. 11112 0. Justifique. Utilização da base hexadecimal: Tabela ASCII. Nesta situação poderíamos gerar esta função através 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. B) Ligue as linhas de dados da EPROM aos LEDs do painel. 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 através dos LEDs. Gravação de memórias FLASHEEPROM. na falta da tensão de alimentação. A0-A11 CE OE O0-07 ADDRESSES CHIP ENABLE OUTPUT ENABLE OUTPUTS A) Utilizando o gravador de EPROM grave uma seqüência desejada.1 Introdução As memórias EPROM (Eraseable Programable Read Only Memory} permitem o armazenamento de dados e sua posterior leitura.Laboratório de Sistemas Microprocessados I 5 PRÁTICA 2 . não perderem os dados. Além de utilizadas para guardar programas responsáveis pela inicialização dos sistemas microprocessados estas memórias também podem ser utilizadas gerando seqüências de dados para diversas aplicações. É possível também implementar uma função matemática com uma EPROM. Suponha a seguinte função Y=X2+3. CEFET-MG .2 – Procedimento I – Gravação e Leitura de uma EPROM Preparação e montagem Orientado pelo circuito abaixo e pela pinagem da EPROM monte um circuito capaz de gerar uma seqüência de dados. Pen Drivers diversos. Programa de análise Flash Memory ToolKit Componentes: 2.Operações com memória FlashEEPROM Assuntos: Introdução às memórias EPROM. C) Para iniciar os te stes após a montagem dê um pulso de resete no gerador de endereços garantido que suas saídas fiquem em nível lógico baixo (end. São identificadas como memórias NÃO VOLÁTEIS por apresentarem a característica de. basta associar as linhas de endereços a X e as linhas de dados a Y. Procedimento II – Gravação e Leitura de uma FlashEEprom CEFET-MG .3 .Laboratório de Sistemas Microprocessados I 6 2. nenhum outro processo adicional será necessário para a manutenção desses dados.Laboratório de Sistemas Microprocessados I 7 PRÁTICA 3 .1024 x 8 Circuitos integrados TTL 74125 Componentes: 3.uma vez gravado dados em suas células.elas retêm as informações enquanto durar a alimentação do circuito. Preparação e montagem Oriente-se pelo diagrama de blocos para realizar sua montagem. CEFET-MG . 3.1. Sinais de controle e temporização. As memórias estáticas são relativamente rápidas quando comparadas com as dinâmicas embora possuam um consumo maior por bit armazenado. Circuitos integrados 2116. Ao contrário das RAMs dinâmicas. Memórias do tipo RAM estática.2. Ciclos de operação.Operações com memória RAM Assuntos: Estudo dos circuitos de memória. Introdução: As memórias RAMs estáticas são aquelas que. mas personalize a sua pesquisa. os buffers de saída de dados internos ao Cl."STAND BY" A) Com o circuito ainda preparado para leitura. Operação . Não 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 .Qual a função do sinal CS ? . diminua lentamente a tensão de alimentação em passos de 0.Explique a necessidade do Cl 74125 neste circuito.Isto entretanto não significa que o Cl de memória já tenha perdido os dados. D) Projetar um banco de memória de 2K x 8 a partir de CI's 2114.Ao atingir valores bem abaixo do nominal da tensão de alimentação. se os dados ainda estão presentes. B) Programe agora os sinais WE e CS para uma operação de leitura (read). suba novamente a tensão de alimentação para o valor nominal e observe nos LED's. Operação ."WRITE" A) Alimente o circuito com 5 Vdc e prepare o Cl para escrita (write) programando os sinais WE e CS em níveis adequados. anote tudo que você considerar importante e interessante. Tabela Verdade. . CEFET-MG ."READ" A) ATENÇÃO: não desligue o circuito. ATENÇÃO: Para a realização desta tarefa observe que: . Durante a coleta de dados para o seu relatório. Para obter esta certeza. 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 após gravar um dado no seu respectivo endereço. desativar o sinal WE antes de alterar o endereço para a próxima posição a ser gravada.3. passam também a fornecer níveis lógicos indefinidos para o padrão TTL.5. 3.4. B) Responda em seu relatório: . 3. C) Verifique se os dados armazenados correspondem aos dados gravados durante o procedimento B do item 2. A sua experiência pessoal é intransferível.2V até atingir o ponto em que os dados se percam e anote esse valor. Operação . B) Escreva agora os dados de acordo com a.Laboratório de Sistemas Microprocessados I 8 3. baseado na aula teórica sobre a parte física do micro (hardware) e aulas práticas sobre a sua parte de programação (software).Laboratório de Sistemas Microprocessados I 9 PRÁTICA 4 – O Microprocessador Didático de 1 bit Assuntos: Componentes: Estudo do microprocessador didático de 1 bit Carga e execução de programa Placa do Microprocessador didático Portas lógicas e memórias 4.1 Introdução: Este microprocessador foi projetado no laboratório de sistemas microprocessados para que o aluno siga.2 – Circuito do Mp1bit naTela do simulador O aluno deve ser capaz de identificar no circuito acima os componentes e sua função: CEFET-MG . Neste guia o aluno deve registrar o que foi feito no laboratório nestas últimas aulas. no caso de 1 bit.2 Desenvolvimento: Hardware do microprocessador de 1 bit: Figura 4. 4. aprendendo o funcionamento de um microprocessador. podemos ver o funcionamento da programação. a instrução desejada através de outras chaves e só então mudamos a chave de seleção para o modo escrita (write) para gravarmos a informação desejada. Isso deve ser repetido com todas as instruções. a programação desejada. addr RST INP OUT HLT OPcode (Hexa) 00 01 02 03 04 05 06 07 08 09 Instrução Não altera o conteúdo interno do processador Leva o conteúdo interno do processador para o nível 1 Leva o conteúdo interno do processador para o nível 0 Inverte o estado lógico do conteúdo do processador Desvia a execução do programa para o endereço especificado Desvia a execução do programa se o conteúdo dos dados for 0 Reinicia o programa no endereço 0h Copia o valor da entrada de dados para dentro do processador Copia o conteúdo do processador para a saída de dados Para a execução do programa Para programá-lo. voltando depois a chave de seleção para o modo leitura.Laboratório de Sistemas Microprocessados I 10 * contador de programa * buffer * memória de programa * decodificador de instrução 4. CEFET-MG . Realizar duas programações: 1) Elaborar um programa que transforme o sistema PD-01 em um gerador de freqüência sendo que o período da freqüência de saída deverá ter uma duração em torno de 3 ciclos de clock. verificar se a chave de seleção se encontra no modo de leitura (read). addr JZ. podemos gravar dados na memória que mais tarde serão utilizados como instruções pelo microprocessador. para evitar que sejam gravados dados indesejados. então.3 Carregando um programa manualmente: A programação de um microprocessador é feita da seguinte forma: Através de um conjunto de chaves. Com a chave no modo leitura. devemos. primeiramente. realizando assim. Selecionamos. Esse microprocessador trabalha com a seguinte tabela de instruções: Mnemônico NOOP SET CLR CPL JP. 4 Conclusão: Através dessa prática o que foi possível compreender o funcionamento e o método de programação do microprocessador de um bit com êxito? Baseado nisto e.Laboratório de Sistemas Microprocessados I 11 Endereço 0h 1h 2h 3h 4h 5h OPCODE 01h 08h 00h 02h 08h 04h Label Início Instrução set out noop clr out jp – início 2) Em um sistema de alarme. versátil e muito útil para a construção e programação de muitos equipamentos? CEFET-MG . gerar um tom na saída (freqüência de áudio). Endereço 0h 1h 2h 3h 4h 5h OPCODE 02h 08h 07h 25h 01h 08h Label Instrução clr out inp jz .loop set out loop 4. toda vez a chave sensora de entrada for aberta. somos capazes de usar esse microprocessador com diversas finalidades?Ele se mostrou eficiente. 0 tom deverá permanecer mesmo se a chave for novamente fechada. utilizando-se desses conhecimentos. Circuito do meio-somador/subtrator.Laboratório de Sistemas Microprocessados I 12 1º. Figura 1. respectivamente. 1. adição e subtração. onde A e B são as entradas (números binários a serem somados). que é um meio-somador/subtrator. o nosso microprocessador de 1 bit fica completo.1 .A UNIDADE ARIT MÉT ICA A unidade aritmética. o decodificador de instruções da nossa unidade de controle deverá ser reprogramado ( microprogramação ) para atender estas duas novas instruções e toda uma ligação com portas lógicas deverá ser acrescida ao circuito. o Modo quando é igual a 1 é feita a subtração e quando igual a 0 é feita a soma. embora mantendo a sua simplicidade.A UNIDADE ARITMÉTICA DO MICROPROCESSADOR DIDÁTICO DE 1 bit OBJETIVO: Projetar uma unidade aritmética simples que faça as operações de soma e subtração como opção à unidade lógica existente no projeto original. como a seguir: Instrução Mnem. Saída e Carry são as saída dos valores operados.1. Na tabela de instruções deverão ser incluídas também as operações ADD e SUB. Exercício bimestral (HARDWARE) . CEFET-MG . Isto permite trechos de programas do tipo: : INP ADD OUT : Naturalmente. deverá ser adicionada ao circuito original do microprocessador de 1 bit. 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 introdução da unidade aritmética. 1 Carregando o simulador IAR pelo Windows Para trabalhar com o ambiente de simulação IAR basta “Clickar” no ícone correspondente do “Desktop” ou digitar a seguinte linha de comando C:\>IAR Será então apresentada a seguinte tela: Caso contrário. Selecionar todos os programas CEFET-MG . faça : Na barra de ferramentas na opção iniciar.Laboratório de Sistemas Microprocessados I 13 PRÁTICA 5 – O Ambiente de Simulação IAR Assuntos: Componentes: Estudo do ambiente de simulação IAR Carga e execução de programa Microcomputador PC Software de simulação 5. se não for possível iniciar das formas anteriores. Laboratório de Sistemas Microprocessados I 14 Na opção IAR Systems. selecione IARidePm_v4 Na sua tela inicial. vamos selecionar a “asm” ( assembly ) Depois de estabelecida a linguagem basta criar a pasta onde seus programas serão salvos. CEFET-MG . escolhemos a opção “Create new Project in current work” depois a opção “new Project” onde aparecerá “create new project” com a seleção de tipo de linguagem que podemos escolher. Que abrirá a janela “Options for node” . Agora temos que fazer a configuração das opções dos projeto. que é feita no menu “options” ou no atalho “ALT F7”. com os arquivos salvos podemos visualizar um programa “default” e também os arquivos presente no workspace à esquerda.Laboratório de Sistemas Microprocessados I 15 Com o programa aberto: A seguir. na opção “general Options”. selecionamos as opções gerais do programa CEFET-MG . Laboratório de Sistemas Microprocessados I 16 Selecionando os tipos de arquivos. que serão gerados. CEFET-MG . para ser gerada a informação de depuração que vai ser utilizada pelo simulador ou depurador. Você poderá configurar selecionando algumas opções do montador de programa.É importante que o “generate debug information” esteja acionado . CEFET-MG .Laboratório de Sistemas Microprocessados I 17 na pagina “diagnostics” permite gerar mensagens de aviso pelo montador. Laboratório de Sistemas Microprocessados I 18 CEFET-MG . Isto foi possível pelo baixo grau de complexidade dos programas.Definir endereço do bloco de destino . Montagem e Linkedição Assunto: Componentes: Conceitos básicos de programação. indica através de uma linguagem mais simples o que deve ser feito pelo programa. Para programas que apresentam maior complexidade algumas ferramentas de suporte são utilizadas. Montagem e Linkedição Edição.Definir endereço do bloco de origem . montagem e linkedição Os fluxograma. entre elas podemos citar a elaboração de fluxogramas e os processos de edição. temos que ordenar ao “embedded workbench” que monte ( Assembler ) o programa e o agrupe ( Linker ). que é um algoritmo na forma de diagrama.Laboratório de Sistemas Microprocessados I 19 Terminado de ajustar todas as configurações podemos digitar o programa que estamos querendo simular Terminado a composição do programa. Conceitos sobre Edição. Um fluxograma para transferência de bloco entre duas regiões de memória pode ser visto no diagrama abaixo Início CEFET-MG .Definir tamanho do bloco . Além de funcionar como um guia durante o processo de desenvolvimento de programas (sistemas) o fluxograma também será extremamente útil nas possíveis manutenções futuras do programa. Microcomputador PC Software de Simulação – Introdução Nas práticas executadas até o momento foi utilizada uma das formas mais rudimentares no desenvolvimento de programas. Todos os programas escritos nas práticas anteriores eram carregados diretamente no simulador através do mnemônico correspondente. Esta extensão significa código objeto.Laboratório de Sistemas Microprocessados I 20 - Transfere dado Atualiza endereço de origem Atualiza endereço de destino Atualiza número de bytes restante F Todos os Bytes foram transferidos Fim Como é possível observar o fluxograma independe da linguagem de programação e se caso fosse utilizado o Assembly também não existiria nenhum vínculo a uma determinada CPU. Para estes casos utilizamos os seguintes procedimentos: EDIÇÃO MONTAGEM LINKEDIÇÃO A edição é um procedimento bem simples que consiste na digitação de todo o mnemônico pertencente ao programa. Após digitar o programa ele deve ser salvo com um nome de até oito letras seguido da extensão . utilizando um editor de texto (ASCII). Além do fluxograma utilizamos outra ferramenta que é extremamente útil para a correção dos programas durante a fase de desenvolvimento. O último processo insere informações relativas ao sistema operacional que está sendo utilizado ao código objeto. Caso seja obtido sucesso neste procedimento será gerado um arquivo com extensão obj. No fluxograma só estamos interessados no procedimento.asm. O segundo procedimento conhecido como montagem é a tradução do texto digitado V (mnemônico) para o respectivo código de máquina (hexadecimal) da CPU. o papel mais relevante da linkedição é a ligação de CEFET-MG .asm. como exemplo: teste. Este processo é extremamente lento e desgastante quando estamos trabalhando com programas maiores. O programa na forma de texto é reconhecido como código fonte. Entretanto. Caso um erro fosse cometido durante o processo de carga do programa era necessário corrigir a linha errada e recarregar todo o código restante. Esta extensão indica que o programa está em linguagem Assembly. no que será feito e não como será feito. Ao final de todo o desenvolvimento.1100h 11 00 11 LD A. Um exemplo típico seria o desenvolvimento de um programa de uma calculadora científica. STSEG START=1000h START=1300h MAINCODE. DEFSEG SEG DS DEFSEG SEG DEFSEG SEG INICIO: DADOS. todas as funções seriam integradas através da linkedição.Com editor de texto Edit digite o programa acima. estas áreas já serão automaticamente definidas no simulador. START=100h MAINCODE Após digitar todo o código insira esta linha END 3.exe que corresponde ao arquivo executável do programa. Na prática a seguir é apresentado o programa relativo ao fluxograma anterior. neste caso nenhum teste será feito e a instrução JP será seguida apenas do endereço desejado.A 12 INC HL 23 INC DE 13 DEC B 05 JP NZ. Antes do código devem ser digitadas algumas informações adicionais utilizadas pelo montador que são denominadas diretivas de montagem. No caso específico desta instrução o PC (contador de programa) assumirá o endereço 0108h caso o flag de zero não esteja ativo. Ao final da linkedição será gerado um arquivo com extensão . onde para cada uma de suas funções fosse desenvolvido um programa isolado.Procedimento 1 . .1000h 21 0010 LD B. Só serão digitadas as informações das colunas Instrução e Operandos.Laboratório de Sistemas Microprocessados I 21 vários códigos objetos. dados e pilha evitando assim a necessidade de definição destas mesmas áreas no simulador. Uma observação importante no código deste programa é a instrução JP NZ 0108h.(HL) 7E LD (DE). Estas diretivas irão definir as áreas de código. o que poderia ser feito por mais de um programador. Com estas diretivas. ao carregarmos um programa. DADOS 3FFh STSEG. 0Fh 06 0F LD DE.asm CEFET-MG .Após digitar o programa salve o mesmo lembrando sempre que a extensão do programa tem que ser . Isto ocorre quando construímos programas muito grandes que por questões de projeto é importante que o programa seja construído com partes separadas. Esta instrução é denominada desvio condicional pois o fluxo do programa só será desviado caso a condição testada seja verdadeira. Como o próprio nome indica.O Programa s seguir efetua a transferência do bloco de memória com início em 1000H e tamanho 0FH para o bloco de memória com início em 1100H. este é o arquivo que a CPU executará.0108h C2 08 01 2 . Existe também a instrução responsável pelo desvio incondicional. Endereço Instrução Operandos Código 100 LD HL. Além do fluxograma utilizamos outra ferramenta que é extremamente útil para a correção dos programas durante a fase de desenvolvimento.asm. entre elas podemos citar a elaboração de fluxogramas e os processos de edição. onde novamente prog deve ser substituído pelo nome que você deu ao programa..Para a linkedição será utilizado o programa AVLINK. Este processo é extremamente lento e desgastante quando estamos trabalhando com programas maiores.Execute o simulador do Z80 e. carregue o programa no simulador..Explique a diferença entre as instruções JP NZ. no que será feito e não como será feito. Além de funcionar como um guia durante o processo de desenvolvimento de programas (sistemas) o fluxograma também será extremamente útil nas possíveis manutenções futuras do programa. Todos os programas escritos nas práticas anteriores eram carregados diretamente no simulador através do mnemônico correspondente.FFh por LD B. 20.Explique a função das instruções DEC B e JP NZ.Justifique os valores encontrados no registro B e no Flag Z 12.Troque no simulador a instrução LD B. 13. 0108h por JP Z.. Para executar esta etapa será utilizado o montador (tradutor) AVMACZ80. 6.5).0108h Introdução Nas práticas executadas até o momento foi utilizada uma das formas mais rudimentares no desenvolvimento de programas.01h por LD B.Faça a montagem do programa para geração do arquivo objeto. onde no lugar de prog deve ser colocado o nome que você deu para o programa.Laboratório de Sistemas Microprocessados I 22 4. indica através de uma linguagem mais simples o que deve ser feito pelo programa. até AF nos endereços 1000h a 100Fh 8. até 1Fh nos endereços 1000h a 100Fh.11h.Coloque o PC=100h e execute passo a passo o programa até o endereço 010Dh. 5. que é um algoritmo na forma de diagrama.Carregue os dados 10h. Não é necessário colocar a extensão . 14.Observe as posições de memória e veja se o programa foi executado 10. 7. No fluxograma só estamos interessados no procedimento. Digite a seguinte linha de comando: avmacz80 <prog>. Caso um erro fosse cometido durante o processo de carga do programa era necessário corrigir a linha errada e recarregar todo o código restante.Troque no próprio simulador a instrução LD B.Troque no simulador a instrução JP NZ.0108h 17.01h.Execute o programa 9.Coloque os dados A0. utilizando um editor de texto (ASCII).Repita os itens 10 e 11.0108h e JP Z.Justifique o resultado observado 21. . FFh 16. A1. A2.0108h neste programa 15. Após digitar o CEFET-MG .. . montagem e linkedição Os fluxograma. Para programas que apresentam maior complexidade algumas ferramentas de suporte são utilizadas. consultando a prática 4 (item 4.Verifique os blocos de memória e veja se o programa foi executado. Isto foi possível pelo baixo grau de complexidade dos programas. 18. 12h. Para estes casos utilizamos os seguintes procedimentos: EDIÇÃO MONTAGEM LINKEDIÇÃO A edição é um procedimento bem simples que consiste na digitação de todo o mnemônico pertencente ao programa. Digite a seguinte linha: avlink prog=prog –Sy.Execute o programa 19. Como é possível observar o fluxograma independe da linguagem de programação e se caso fosse utilizado o Assembly também não existiria nenhum vínculo a uma determinada CPU. 11. como exemplo: teste. O segundo procedimento conhecido como montagem é a tradução do texto digitado (mnemônico) para o respectivo código de máquina (hexadecimal) da CPU. Ao final de todo o desenvolvimento. Como o próprio nome indica. o que poderia ser feito por mais de um programador. Isto ocorre quando construímos programas muito grandes que por questões de projeto é importante que o programa seja construído com partes separadas. todas as funções seriam integradas através da linkedição. Um exemplo típico seria o desenvolvimento de um programa de uma calculadora científica.asm.exe que corresponde ao arquivo executável do programa. Com a utilização da função “make” que realiza as etapas da montagem e “Linkagem” e está no “Project” . Esta extensão significa código objeto. Esta extensão indica que o programa está em linguagem Assembly. O programa na forma de texto é reconhecido como código fonte. Caso seja obtido sucesso neste procedimento será gerado um arquivo com extensão obj. o papel mais relevante da linkedição é a ligação de vários códigos objetos.Laboratório de Sistemas Microprocessados I 23 programa ele deve ser salvo com um nome de até oito letras seguido da extensão . Entretanto. onde para cada uma de suas funções fosse desenvolvido um programa isolado. Ao final da linkedição será gerado um arquivo com extensão . O último processo insere informações relativas ao sistema operacional que está sendo utilizado ao código objeto. este é o arquivo que a CPU executará.asm. aparece essa tela e irá aparecer na parte de baixo da tela uma janela que irá mostrar os erros contidos no programa: CEFET-MG . Laboratório de Sistemas Microprocessados I 24 Depois de detectar os erros e corrigi-los devemos então fazer o DEBUG. Dentro da opção PROJECT marca-se a opção DEBUG ou então aperta-se as teclas CTRL+D ou até mesmo clica-se no botão circulado na barra de ferramentas à direita: Aproveita-se agora através do menu VIEW para criarmos duas janelas importantes que são os REGISTROS e a MEMÓRIA 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 prática realizada. CEFET-MG Laboratório de Sistemas Microprocessados I 25 CEFET-MG Laboratório de Sistemas Microprocessados I 26 CEFET-MG execute e explique o que o programa faz 3 . HighR4 HighR5 HighR6 Menos Sign.R6 MOV..B R4.R4 a) Carregue os registradores R4=AAh.B R4. HighR15 LowR15 6. R5=55h. c) Transfira o conteúdo da posição de memória.. CEFET-MG . HighR7 LowR7 .B R6.R7 MOV.1 Introdução: O carregamento e a transferência de 8 bits podem ser subdivididos de acordo com a origem e o destino dos dados em 4 subgrupos.Dado o PGM abaixo: Endereço Instrução Operandos 01000h MOV. LowR4 LowR5 LowR6 Mais Sign.B R6.B R7. Programa SP – Ponteiro de Pilha SR – Ponteiro de Segm..Dado o PGM abaixo: Endereço Instrução Operandos 01000h MOV.B &1100h.2 Procedimento: Transferência de 8 bits 1 .R4 a) Carregue os registradores R4=44h.R5 MOV.B do MSP430 Componentes: Microcomputador PC.REG/MEMO ← ← ← ← REG MEMO REG CONSTANTE Os registros básicos do MSP430 se dividem em: APONTADORES PC – Contad.Problemas propostos: a) Troque os conteúdos entre os registros R7 e R8.REG 2 – REG 3 .R5 MOV. R5=BBh. R6=66h b) Digite.Laboratório de Sistemas Microprocessados I 27 PRÁTICA 6 .B R5. a saber: 1 . execute e explique o que o programa faz 2 .MEMO 4 . Menos Sign.Instruções de carga e transferência de 8 bits Assunto: Grupo de instruções MOV. software de simulação IAR 6. . b) Troque entre sí o conteúdo das posições de memória 1100h e 1101h.R6 MOV..&1100h MOV.B R5. Mais Sign. endereçado pelo registro R5 para a posição de memória endereçada pelo par R6. R6=CCh b) Digite. R5=BEBEh.REGs passivos ↔ 3. execute e explique o que o programa faz 3-Problemas propostos: Escreva um PGM que troque os conteúdos das posições de memória endereçadas pelos registradores R8 e R9 REGs passivos REGs ativos REGs CEFET-MG . a saber: 1. SP PUSH R4 PUSH R5 POP R6 POP R7 a) Carregue os registradores R4=BBCCh.Transferência de 16 bits 1.REGs ativos ↔ 2.W Ox13FF.W]. PUSH e POP do MSP430 Componentes: Microcomputador PC.Instruções de carga e transferência de 16 bits Assunto: Grupo de instruções MOV[.REG 2.PILHA ↔ 7.REG/MEMO 4. execute e explique o que o programa faz 2.W Ox13FFh.Laboratório de Sistemas Microprocessados I 28 PRÁTICA 7 .REG 3. R7=7788h e reset os flags b) Digite. R6=CACAh.PILHA ↔ ↔ ← ↔ REG MEMO CONSTANTE REG O grupo de instruções de permuta é dividido em 3 grupos: 1.1.Introdução: O carregamento e a transferência de 16 bits pode ser subdividido de acordo com a origem e o destino dos dados em 4 grupos.Dado o PGM abaixo: Endereço Instrução Operandos 01000h MOV. R5=DDEEh e reset os flags b) Digite. SP PUSH R4 PUSH R5 PUSH R6 PUSH R7 a) Carregue os registradores R4= FAFAh. software de simulação IAR 7.2 .Dado o PGM abaixo: Endereço Instrução Operandos 01000h MOV.Procedimento I . execute e explique o que o programa faz 2 .3 .Problema proposto: Faça 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 .Procedimento II .Permuta de 16 bits 1 . R5=BABAh e SP=13FFh b) Digite.Dado o PGM abaixo: Endereço Instrução Operandos 01000h SWPB R4 SWPB R5 a) Carregue os registradores R4=DEDEh.Laboratório de Sistemas Microprocessados I 29 7. Laboratório de Sistemas Microprocessados I 30 CEFET-MG . R4 MOV #Y. 45h-56h 2. preencha a tabela com o estado de cada flag Operação Resultado C Z P/V S N H 50d-50d 189d+73d 55h+48h 16h or 45h 123d and 35d 45h-56h 8.R5 AND R5.Carregue execute os seguintes PGMs com os valores necessários para se efetuar as operações do item 1 da introdução. Programa para somar X eY MOV #X. Programa para subtrair X eY MOV #X.R4 4.R5 OR R5.Realize manualmente as seguintes operações 1.Após realizar as operações.Operações lógicas e aritméticas Assunto: Grupo de instruções do MSP430 Estudo dos flags Operação BCD Microcomputador PC Software de simulação IAR Componentes: 8.R4 2.R5 ADD R5. 189d+73d 3.R4 MOV #Y. Programa de OU lógico MOV #X.R4 3. 50d-50d 2.R4 2 .R4 MOV #Y. 123d and 35d 6.R4 MOV #Y. Depois compare os resultados com os obtidos no item 2 1.Laboratório de Sistemas Microprocessados I 31 PRÁTICA 8 . 55h+48h 4. Programa de AND lógico MOV #X. 16h or45h 5.Faça um PGM para realizar as seguintes operações a) 123d NOR 45d b) 153d NAND 35d c) 77h + 245d CEFET-MG .1 Introdução Nesta prática serão estudadas as operações lógicas e aritméticas 8.2 Procedimento I 1 .Operações básicas 1 .R5 SUB R5.3 Procedimento II . Simulação de circuitos lógicos 1. 0108h até 010Ch 7) Desenhe o circuito lógico equivalente ao programa 8) Faça um programa que simule o seguinte diagrama. Realize manualmente as operações: a) 24d0 + 19d b) 57h + 21d 2.R4 R6 R6 R7 R5 R4 R8.R7 R5.Carregue o PGM abaixo: 1100 MOV MOV INC ADD INC MOV #1000h.(R4) 21 00 10 7E 23 86 23 77 3) Carregue 27h na posição de memória 1000h e 47h na posição de memória 1001h e Execute o programa e anote o conteúdo das posições de memória de 1000h a 1002h 4) Execute o PGM passo-a-passo até o end. 00h em 1001h e FFh em 1002h 3) Execute o programa 4) Anote o conteúdo das posições de memória de 1000h a 1003h 5) Execute o programa passo-a-passo 6) Analise os resultados obtidos a partir do end. Simule o programa CEFET-MG . R4 (R4).R6 R4 (R4). agora com os valores 47h e 59h 9) Substitua a instrução ADD (R4).R5 R4 R5. 1106h 5) Qual é o resultado do acumulador? Por que? 6) Execute o PGM passo-a-passo até o end.R5 10) Carregue 47h na posição 1000h e 29h em 1001h 11) Execute o programa e anote o conteúdo das posições de memória de 1000h a 1002h 8. 1107h 7) Qual é o resultado do acumulador? Por que? 8) Repita os itens de 3 a 8.R4 (R4).Operações em BCD 1.R5 R4 (R4).Recorde números BCD e aritmética BCD.R5 R4 (R4). Carregue o programa abaixo 0100 MOV MOV INC MOV INC MOV MOV AND INV XOR OR INC MOV 1000h.Laboratório de Sistemas Microprocessados I 32 8.5 procedimento IV . (R4) 2) Carregue FFh em 1000h.R5 por SUB (R4).4 Procedimento III . Definir endereço do bloco de origem .Laboratório de Sistemas Microprocessados I 33 Prática 09 – Comparação de Blocos Assunto: Grupo de instruções de comparação.1 – Introdução A instrução de jump relativo deve ser utilizada em situações onde o tamanho do programa é fator relevante no seu desenvolvimento. seu uso cria limitações ao programa. 09.Definir tamanho do bloco - Transfere dado Atualiza endereço de origem Atualiza endereço de destino Atualiza número de bytes restante F Todos os Bytes foram transferidos V Fim CEFET-MG . entretanto.Definir endereço do bloco de destino . Teste de Flags Jumps (absoluto e relativo) Microcomputador PC Software de Simulação Componentes: 09.2 – Procedimento Um fluxograma para transferência de bloco entre duas regiões de memória pode ser visto no diagrama abaixo Início . 021Bh CA 1B 02 JP C.B4h a partir de 1100h. XX para os valores encontrados nos flags Z e C da questão anterior.. 9) Entre no editor de programa e altere a linha DEFSEG MAINCODE START=200h para o endereço 250h 10) Refaça o item 3 11) Verifique os blocos de memória e veja se o programa foi executado 12) Justifique 13) O programa pode ser carregado em outra posição de memória sem sofrer alteração? CEFET-MG .A 12 INC HL 23 INC BC 03 INC E 1C JP NZ. JP C.B6. Este programa deve ser montado a partir do endereço 200h DEFSEG SEG DS DEFSEG SEG DADOS.1200h 11 0012 LD A.02 3E 02 JP 0213h C3 13 02 LD A.(BC) 0A CP (HL) BE JP Z. B9h a partir de 1000h e a seqüência B0.01 3E 01 JP 0213h C3 13 02 END 2) Carregue a seqüência: B0. Execute o programa passo a passo acompanhando o mesmo. B2.B8. XX. DADOS 3FFh STSEG.B7. START=200h SEG MAINCODE INICIO: LD HL. Anote e justifique os conteúdos de A e dos Flags Z e C 7) Justifique o resultado observado nos Flags Z e C 8) Explique o que ocorre nas instruções JP Z. B4. 3) Verifique as 10 primeiras posições dos blocos de memória 1000h..B3. B1..Laboratório de Sistemas Microprocessados I 34 1) Utilizando o Edit digite o programa abaixo e gere o código para simulação. STSEG START=1000h START=1300h DEFSEG MAINCODE.B1.1100h 01 00 11 LD DE.0209h C2 09 02 HALT 76 LD A.B5. B3.1000h 21 00 10 LD BC. 1100h e 1200h. 4) O que faz este programa? Explique 5) Coloque no PC o endereço 0200h e execute o programa passo a passo até o endereço 020Bh 6) Observe o conteúdo das posições de memória endereçadas por HL e DE. . XX e JP NZ.B2.00 3E 00 LD (DE).B9.0220h DA 20 02 LD A. IGUAL na memória (Memory Space).MAIOR 021Bh 0220h A. . 16) Entre no editor de programa e altere a linha DEFSEG MAINCODE START=250h para o endereço 200h 17) Execute o programa e justifique a importância dos rótulos na programação 18) Observe e anote o código da instrução JP Z. execute o programa e observe o que aconteceu com os mesmos. 02 0213h A.01 CONT END END 15) Uma vez que todos os rótulos foram mudados. 19) Entre no editor de programa e troque todas as instruções JP por JR 20) Execute o programa e verifique o funcionamento 21) Repita o ítem 18 e justifique a diferença existente entre as instruções JP e JR 22) Faça um fluxograma seguido do programa que compare 2 blocos de memória (1000h e 1100h) byte a byte colocando no bloco do resultado (1200h) o byte maior. .0220h Z.Laboratório de Sistemas Microprocessados I 35 14) Entre no editor de programa e altere TODOS os endereços que estão logo após os jumps condicionais e incondicionais por um rótulo (label). 02 0213h A.021Bh C. Siga o exemplo a seguir: INICIO .01 0213h IGUAL MAIOR A. .IGUAL C. . CEFET-MG . LD JP LD JP INICIO . . . LD JP LD JP Z. . . JP JP . JP JP . Assim a subrotina é executada até a sua última instrução. Esta operação é denominada de Chamada de subrotina. Esta instrução realiza exatamente o processo inverso da instrução CALL. para a qual o MSP430 não possui uma única instrução capaz de implementá-la. O que esta instrução faz é mudar a seqüência de execução do programa. O programa que chama a subrotina é chamado de programa principal INÍCIO FIM FIM . provocando um gasto excessivo de memória. implementada desta forma é chamada de subrotina. CEFET-MG . guardando o valor do PC. desviando-o para o endereço inicial da subrotina e. Um grupo de instruções que realiza uma tarefa específica é chamado de rotina. Uma rotina.Laboratório de Sistemas Microprocessados I 36 Prática 10 – Subrotinas Assunto: Conceito de subrotina Processo de chamada e retorno de subrotinas Conceito de pilha Passagem de parâmetro Microcomputador PC Software de Simulação Componentes: 10.1 Introdução Considere uma operação como a multiplicação. Programa Principal INÍCIO Subrotina Dentro de um programa maior pode ser necessário executar a operação de multiplicação diversas vezes. coloca em PC o valor armazenado na pilha pela instrução CALL. Portanto. que deve ser obrigatoriamente a instrução retorno de subrotina – RET. O valor de PC é armazenado na pilha. Torna-se portanto necessário um grupo de instruções para realizar a operação de multiplicação. para poder retornar da subrotina. um grupo de instruções que realiza a operação de multiplicação é chamado de “rotina de multiplicação”. O que nos obriga a copiar a rotina de multiplicação diversas vezes dentro desse programa.Chamada e retorno de Subrotina Sempre que for necessária a execução da subrotina. usa-se a instrução CALL. A figura ao lado ilustra este mecanismo. Uma forma mais eficiente de resolver este problema é fazer uma única cópia desta rotina e encontrar uma forma de acessá-la. Isto é. VOLTA3 BC B(HL) C.2 – Procedimento 1) Edite. START=100h MAINCODE HL. 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.VOLTA1 A. DADOS 3FFh STSEG. 1100/110Fh e 1200/120Fh.13FFh SP.S A. 09 a partir do endereço 1000h e 02 de 1100h a 110Ah. STSEG START=1000h START=1300h MAINCODE.1100h DE. linkedite e programa abaixo..1200h A. 02. 01. 03. .VOLTA1 VOLTA2 BC 2) Observe o programa no simulador e responda: Qual o endereço inicial do programa principal? Qual o endereço final do programa principal? Qual o endereço inicial da subrotina? Qual o endereço final da subrotina? Em que endereço a subrotina é chamada? 3) Carregue a seqüência 00. Execute o programa 4) Compare os conteúdos dos blocos 1000/100Fh.A DE BC HL A.. monte.00 L NZ.1000h BC. O que você observou? CEFET-MG . Após a geração do código executável carregue no simulador e teste.(BC) SUB_ROT (DE).Laboratório de Sistemas Microprocessados I 37 10.00 B Z.C B Z.HL HL.. (HL) RET LD (DE). SP e a Pilha CEFET-MG . com suas palavras.A PC SP Pilha 6) Explique passo a passo. então. o que aconteceu com PC.Laboratório de Sistemas Microprocessados I 38 5) Execute o programa passo a passo parando nos endereços relacionados a seguir (não execute as instruções contidas nestes endereços). Anote. o conteúdo dos registradores PC e SP e os 8 primeiros bytes da área de pilha Instrução CALL SUB ROT PUSH BC LD B. • • Situação inicial Após a primeira rotação 3 – Faça o fluxograma seguido do seu programa que apresente na memória um relógio digital. Este relógio deverá utilizar dois bytes para horas. Ele deverá ser carregado a partir da posição de memória 1000h. com outra na posição de memória 1001h e coloque este resultado na posição de memória 1010h. com outra na posição de memória 1001h e coloque este resultado na posição de memória 1010h. CEFET-MG . Exercício bimestral (SOFTWARE) – A MULTIPLICAÇÂO E A DIVISÃO ARITMÉTICA NO MICROCONTROLADOR MSP430 1 – Faça um fluxograma seguido do seu programa que multiplique uma palavra de oito bits presente a partir da posição de memória 1000h.Laboratório de Sistemas Microprocessados I 39 2º. • • Situação inicial Após a primeira rotação 2 . segundo o algoritmo de somas e deslocamentos abaixo.Faça um fluxograma seguido do seu programa que divida uma palavra de oito bits presente a partir da posição de memória 1000h. 1000 H H : M M : S S Observe que cada posição de memória deverá conter o código ASCII do dígito corrente. segundo o algoritmo de somas e deslocamentos abaixo. dois bytes para minutos e dois bytes para segundos separados por dois pontos. Abaixo mostramos a tabela ASCII de 7 bits.Laboratório 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 informações. . / 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 Binário > 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 . Cada caracter é representado por um código de 8 bits (um byte). Caracter Decimal Hexadecimal Binário 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 Binário US 31 1F 0001 1111 Espaço 32 20 0010 0000 ! 33 21 0010 0001 " 34 22 0010 0010 # 35 23 0010 0011 $ 36 24 0010 0100 % 37 25 0010 0101 & ' ( ) * + . Existe uma tabela extendida para 8 bits que inclui os caracteres acentuados. Laboratório 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 Binário 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 . resetado em caso contrário. Setado se ocorrer um overflow aritmético.adiciona o carry a word mais signif. 0(R12) .adiciona LSD ADC.adiciona o carry ao MSD Exemplo 2 CEFET 42 . ADD @R13.B dst #0. Um contador de 8 bits apontado por R13 e adicionado a um contador de 16 bits apontado por R12. caso contrário resetado Setado se dst foi incrementado de 0FFFF para 0000. ADD. 0(R12) .B Sintaxe Adiciona o bit de carry ao destino adiciona o bit de carry ao destino ADC ADC. contudo o gerador de constante auxilia ao programa montador (assembly) do MSP emular mais 24 instruções.W ou a ausência de sufixo no mnemônico da instrução indica operação de 16 bits ou operação de word e o sufixo . Nas instruções emuladas. resetado se positivo Setado se resultado for zero.B dst dst + C ADDC ADDC. Setado se dst foi incrementado de 0FFh para 00. O sufixo .Adiciona a word menos significativa ADC 2(R12) .Conjunto de Instruções Introdução A CPU do microcontrolador MSP430 tem um reduzido conjunto de instruções (RISC). • • • • • • • As instruções aparecerão em ordem alfabética. resetado em caso contrário. Descrição das instruções 1) *ADC[.W dst Operação Emulação Descrição O bit de carry (C) é somado ao operando destino. O asterisco (*) na frente da instrução indica que a mesma é emulada.B @R13. São apenas 27 instruções executadas pelo hardware. A seção seguinte descreve todas as instruções do núcleo do MSP e instruções emuladas de forma detalhada. O comercial (&) é um ponteiro para um destino.dst dst ou ADC. os bits de status são afetados conforme a instrução original.B indica operação de 8 bits ou operação de byte. Bits de status V: Exemplo 1 Um contador de 16 bits apontado por R13 é adicionado a um contador de 32 bits apontado por R12. N: Z: C: Setado se o resultado for negativo.dst #0. A cerquilha (#) é utilizada para carregar valores numéricos nos locais indicados. As letras src ( source ) e dst ( destiny ) significam operando fonte e operando destino respectivamente. O conteúdo anterior do operando destino é perdido.Microcontroladores MSP 430 Conjunto de Instruções A2 . resetado em caso contrário.B 1(R12) .W] *ADC. O operando fonte não é afetado.B Sintaxe ADDC ADDC.carry dos LSD’s. O operando destino perde o conteúdo prévio para armazenar o resultado da operação. resetado se positivo. R5 JC TONI . . resetado em caso contrário. dst ADD. 20(R13) .. N: Z: C: V: Setado se resultado negativo. resetado em caso contrário.B src + dst + C src. onze palavras acima (20/2 + 2/2). resetado em caso contrário. Bits de status Exemplo Um contador de 32 bits apontado por R13 é adicionado a outro contador de 32 bits.B Sintaxe Adiciona a fonte ao destino Adiciona a fonte ao destino ADD src.W] ADD. resetado em caso contrário. 3) ADDC[. O operando fonte não é afetado. O operando destino perde o prévio conteúdo para armazenar o resultado da operação.adiciona os LSD’s sem o carry ADDC @R13+.Microcontroladores MSP 430 Conjunto de Instruções 2) ADD[. Setado se houver carry no resultado. dst ser.dst dst Operação Descrição O operando fonte e o bit de carry são adicionados ao operando destino.não ocorreu o carry. Setado se ocorrer um overflow aritmético.fará o salto se carry ..W] Adiciona a fonte e o carry ao destino ADDC. 20(R13) . N: Z: C: V: Setado se resultado negativo. resetado em caso contrário. Bits de status Exemplo R5 é incrementado de 10. resetado em caso contrário. Setado se houver carry no resultado. dst src + dst dst Operação Descrição O operando fonte e adicionado ao operando destino. ADD @R13+. Setado se o resultado for zero. Setado se o resultado for zero.B src. Ocorrerá o jump se houver um carry ADD #10. CEFET 43 . resetado se positivo. Setado se ocorrer um overflow aritmético.adiciona os MSD’s com o . equ 011h .B Sintaxe Fonte AND destino AND src. resetado se zero.W] AND. Resetado em caso contrário. &P0OUT .salta se resultado igual a zero . P0_0 . ( NOT ZERO ) Resetado. Setado se resultado diferente de zero.B #P0_0+P0_1.carrega a mascara em R5 AND R5.Microcontroladores MSP 430 Conjunto de Instruções 4) AND[. Bits de status Exemplo O registro R5 é usado para mascarar (#0AA55h) a palavra endereçada por TOM.zera os 2 LSB’s de P0 Bits de status Exemplo Exemplo CEFET 44 .B Sintaxe BIC BIC. P0OUT .B src.resultado diferente de zero Zera os bits do destino 5) BIC[. R5 . dst src. O operando fonte não é afetado e o operando destino conterá o resultado da operação.B src. ..Mascara a palavra TOM com R5 JZ TINI . dst AND. dst src AND dst dst Operação Descrição Realiza a operação lógica AND entre os operandos fonte e destino. resetado em caso contrário.dst dst Operação Descrição NOT src AND dst Realiza a operação lógica AND entre o operando fonte invertido e o operando destino.equ 01h P0_1 . O operando fonte não é afetado e o resultado é armazenado no destino.definição do endereço da porta.equ 02h BIC. BIC #0FC00. Setado se resultado zero.W] BIC.. MOV #0AA55h. Se o resultado for zero saltará para o rótulo TONI. LEO Zera os bits 0 e 1 da porta P0. N: Z: C: V: Setado se o MSB do resultado for um. Não afetados Zera os seis bits mais significativos da palavra LEO. TOM . dst src. O operando fonte não é afetado e o resultado da operação é armazenado no operando destino. Z: Setado se resultado zero. C: Setado se resultado não zero.B #P0+P1.W] BIT.equ 02h BIS.Microcontroladores MSP 430 Conjunto de Instruções 6) BIS[. salte para o label TOM.. R8 .B src OR dst src. TOM Seta os 2 LSB’s da porta P0. Os operandos fonte e destino não são afetados. O resultado afeta somente os bits de status.dst dst Operação Descrição Realiza a operação lógica OR entre os operandos fonte e destino.equ 01h P1 . BIT #0200h.Bit 9 está setado? JNZ TOM .equ 011h P0 . resetado em caso contrário. vá para TOM . Se o bit 3 de R8 estiver setado. BIT.B Sintaxe Operação Descrição BIT src AND dst src. salta para o label TOM. Não afetados Seta os seis bits menos significativos da word TOM.não. BIS #003Fh. N: Setado se o MSB do resultado estiver setado. &P0OUT Testa bits no destino Bits de status Exemplo Exemplo 7) BIT[.B #8. continua. R8 JC TOM Bits de status Exemplo Exemplo CEFET 45 . resetado caso contrário.. Se o bit 9 de R8 estiver setado. resetado caso contrário V: Resetado.W] BIS. dst Realiza a operação lógica AND entre a fonte e o destino.sim. .B Sintaxe Seta os bits do destino BIS BIS. P0OUT . Branch Sintaxe Operação Emulação Descrição Salta para o destino. CALL CALL CALL CALL CALL CALL CALL #EXEC . @R5 .endereço apontado por R5 + X. Não são afetados.apontada por R5.salta p/ o endereço contido no endereço . X(R5) . @R5+ .salta para o endereço contido em EXEC &EXEC .chama o endereço contido em R5. Esta é uma instrução de 16 bits.chama o label EXEC EXEC .chama o endereço contido no .chama o endereço contido no . EXEC .chama o endereço contido na word .salta para o label exec.apontada por R5.salta p/ o endereço contido no endereço .2 PC dst dst SP @SP PC Descrição Realiza a chamada de uma sub-rotina numa faixa de endereços de 64k. Não são afetados.salta para o endereço contido em R5. CALL é instrução de 16 bits. @R5 . Todos os modos de endereçamento podem ser usados.chama o endereço contido em . Bits de status Exemplos 9) CALL Sintaxe Operação Chamada de sub-rotina CALL SP . R5 .Idem anterior e incrementa R5 após.idem anterior com pós incremento. BR dst MOV dst PC dst. Todos os modos de endereçamento podem ser usados.endereço absoluto EXEC.salta p/ o endereço contido na word . PC Realiza um alto incondicional numa faixa de endereços de 64k.apontado por R5 + X.absoluto EXEC R5 . O endereço de retorno é armazenado na pilha.EXEC.Microcontroladores MSP 430 Conjunto de Instruções 8) *BR. BR BR BR BR BR BR BR #EXEC . Bits de status Exemplos CEFET 46 . @R5+ . &EXEC . X(R5) . B #0. dst O operando destino é zerado. N: Z: C: V: Não afetado Não afetado Zerado Não afetado Exemplo Um contador decimal de 16 bits apontado por R13 é somado a um contador de 32 bits apontado por R12.adiciona a parte baixa.SR Zera o bit de carry.W] CLR.zera R5 . CLR CLR CLR.B 0 dst dst dst Operação Emulação MOV #0. Não são afetados.B Sintaxe Zera destino CLR CLR.o byte TONI é zerado Descrição Bits de status Exemplos 11) *CLRC Sintaxe Operação Emulação Descrição Bits de status Zera o bit de carry CLRC 0 BIC C #1. CLRC DADD @R13.Microcontroladores MSP 430 Conjunto de Instruções 10) *CLR[. N: Z: C: V: Zerado Não afetado Não afetado Não afetado 47 Bits de status CEFET .B TONI R5 TONI . SR 12) *CLRN Sintaxe Operação Emulação Descrição O bit N do registro de status é zerado. 0(R12) .adiciona o carry a parte alta. Esta é uma instrução de 16 bits.a palavra TONI é zerada . Esta é uma instrução de 16 bits. DADC 2(R12) . dst MOV. Zera o bit negativo CLRN 0 BIC N #4. todas as palavras foram comp. CMP &BLOCO1. JNZ L$1 . Setado se houver um overflow aritmético. N: Z: C: V: CLRZ Compara fonte e destino Não afetado Zerado Não afetado Não afetado Bits de status Exemplo 14) CMP[. Somente os bits de status são afetados.número de palavras a serem comp. Dois blocos de RAM são comparados.Microcontroladores MSP 430 Conjunto de Instruções Exemplo 13) *CLRZ Sintaxe Operação Emulação Descrição CLRN Zera o bit de status Z CLRZ 0 BIC Z #2.R5 = R6 ? JEQ IGUAL . resetado caso contrário.B src.se não vá para ERRO DEC R5 . R5 . Os dois operandos não são afetados e o resultado não é armazenado.B Sintaxe CMP src. R6 . resetado se positivo. SR O bit de zero do registro de status é zerado. Esta é uma instrução de 16 bits. N: Z: C: V: Setado se resultado negativo. Isto é feito somando o operando destino com o segundo complemento (1º complemento + 1) do operando fonte. Operação Descrição Bits de status Exemplos L$1 Os registro R5 e R6 são comparados. Setado se resultado zero.W] CMP. o programa continua no rótulo IGUAL. MOV #NUM.se não volte para nova comp. resetado caso contrário. Setado se houver ‘vai um’ do MSB. CMP R5. dst CMP. Se não são iguais. CEFET 48 .se sim.são iguais? JNZ ERRO . salte para IGUAL. resetado em caso contrário. vai para o rotulo ERRO. dst dst . Se forem iguais.src O operando fonte é subtraído do operando destino. BLOCO2 . B dst + C DADD DADD. Setado se resultado zero. dst dst (decimal) Operação Descrição src + dst + C O operando fonte e destino são tratados como números BCD positivos. resetado em caso contrário.B R5. N: Z: C: V: Setado se o MSB é 1. O operando fonte não é afetado. resetado se 0. Resetado em caso contrário. para o mesmo conter o resultado da operação. Indefinido. Setado se o destino for 0. Dois dígitos decimais contidos em R5 são somados a quatro dígitos decimais apontados por R8.B 1(R8) 16) DADD[. dst #0. CLRC DADD. resetado em caso contrário.soma os LSD’s DADC 2(R8) . CLRC DADD R5.W] DADD. O conteúdo prévio do destino é perdido.B dst dst dst (decimal) #0. 0(R8) DADC. resetado em caso contrário.Microcontroladores MSP 430 Conjunto de Instruções 15) *DADC[.B Sintaxe Soma BCD o carry ao destino DADC DADC. O operando fonte e o carry bit são somados BCD ao operando destino. Setado se o destino incrementa de 99 para 00. 0(R8) . V: Exemplos Quatro dígitos decimais contidos em R5 são adicionados a oito dígitos decimais apontados por R8. carry e destino (BCD) DADD DADD.B src. dst src.soma o carry ao MSD.B Sintaxe Soma fonte. Setado se o destino incrementa de 9999 para 0000. dst Operação Emulação Descrição Bits de status O bit de carry é somado (BCD ou decimal) com o destino. O resultado é indefinido para números não BCD. Setado se resultado maior que 9999 Setado se resultado maior que 99 Indefinido Bits de status CEFET 49 .W] *DADC. N: Z: C: Setado se o MSB é 1. B #2. para outro bloco de memória com endereço inicial TONI. dst 50 CEFET . dst SUB. R3 .B dst . MOV #EDE. Seta se o valor inicial do destino for 8000h (word) ou 80h (byte). resetado em caso contrário. JC OVERFLOW . resetado em caso contrário Resetado se destino vai de 0000h para FFFFh. vá para rotina de erro. O conteúdo original é perdido.Microcontroladores MSP 430 Conjunto de Instruções Exemplos Um número de oito dígitos BCD contido em R5 e R6 é somado a outro numero de oito dígitos BCD contido em R3 e R4. CLRC DADD R5.B dst dst . resetado caso contrário Setado se resultado é zero. setado caso contrário. reseta em caso contrário. N: Z: C: V: Setado se resultado é negativo. dst SUB. Descrição Bits de status Exemplo L$1 Move um bloco de 255 bytes de memória com endereço inicial EDE.1 dst Operação Emulação dst SUB #1. Setado se ocorrer um overflow aritmético. R5 MOV #255. R6 e R4 contêm os MSD’s. dst O operando destino é decrementado de 1.W] *DECD.B Sintaxe DEC DEC.adiciona os LSD’s DADD R6.2 dst dst dst Operação Emulação SUB #2. R4 MOV. 0(R5) INC R5 DEC R4 JNZ L$1 Decremento duplo do destino 18) *DECD[. CLRC DADD.B @R6+.se carry. R4 .B #1.B #1. Incrementa de 1 um contador de dois dígitos decimal (CNT).B Sintaxe DECD DECD. R6 MOV #TONI.W] *DEC. CNT Decrementa o destino 17) *DEC[.adiciona os MSD’s com carry. R6 EINT . Realiza a operação lógica OR entre a constante 08h e o registro de status. DINT . Setado se ocorrer um overflow aritmético. O resultado é armazenado em SR. resetado caso contrário. Seta se o valor inicial do destino for 8001h ou 8000h em operações de word. R10 . e 80h ou 81h em operações de byte. O resultado é armazenado em SR. SR Bits de status Bits de modo Exemplo 20) *EINT Sintaxe Operação Emulação Descrição Todas as interrupções são habilitadas. DINT 0 BIC GIE #8. Realiza a operação lógica AND entre a constante 08h e o registro de status. Não afetados Somente o bit GIE é setado 51 Bits de status Bits de modo CEFET .faz a carga do contador MOV COUNTLO. Habilita (geral) interrupções EINT 1 BIS GIE #8. Bits de status Exemplo 19) *DINT Sintaxe Operação Emulação Descrição DECD Desabilita (geral) interrupções. resetado se positivo Setado se resultado é zero. setado em caso contrário. SR Todas as interrupções são desabilitadas. R5 . N: Z: C: V: Setado se resultado é negativo.desabilita todas as interrupções NOP MOV COUNTHI. Os bits de status não são afetados Somente o bit GIE é resetado O bit geral de interrupção é zerado para permitir a carga do contador de 32 bits sem interrupções.habilita todas as interrupções.decrementa R10 de duas unidades.Microcontroladores MSP 430 Conjunto de Instruções Descrição O operando destino é decrementado de 2. reseta caso contrário. resetado caso contrário Resetado se destino vai de 0000h para FFFFh. O conteúdo original é perdido. Microcontroladores MSP 430 Conjunto de Instruções Exemplo Idem anterior. CEFET 52 . dst ADD.B dst + 1 ADD dst dst dst #1.B Sintaxe Incrementa destino INC INC.B 0(SP) CEFET 53 .B #2. dst Soma 2 ao operando destino. INCD.não usar INCD. e 7Eh ou 7Fh (byte). ou FFh para 00h (byte).Microcontroladores MSP 430 Conjunto de Instruções 21) *INC[.B. resetado se positivo Setado se resultado é zero.W] *INC. dst Operação Emulação Descrição Bits de status Soma 1 ao operando destino. STATUS JEQ OVFL Incremento duplo no destino 22) *INCD[. INC. PUSH R5 INCD SP .B #11. reseta em caso contrário. O conteúdo original é perdido.W] *INCD. Seta se o valor inicial do destino for 7FFEh ou 7FFFh (word). N: Z: C: V: Setado se resultado é negativo. resetado em caso contrário. Seta se o valor inicial do destino for 7FFFh (Word). pois SP é word alinhado O byte no topo da pilha é incrementado por 2. resetado em caso contrário. resetado em caso contrário. Exemplo O byte STATUS é incrementado. N: Z: C: V: Setado se resultado é negativo.B STATUS CMP. O conteúdo original é perdido. reseta em caso contrário. vai para OVFL. Setado se ocorrer um overflow aritmético. resetado em caso contrário Setado se destino vai de FFFFh para 0000h (word). Quando ele é igual a 11. e 7Fh (byte). Descrição Bits de status Exemplos O dado no topo da pilha é removido sem usar registro.B Sintaxe INCD INCD. resetado em caso contrário Setado se destino vai de FFFFh para 0000h (Word). resetado caso contrário.B dst + 2 dst dst dst Operação Emulação ADD #2. ou FFh para 00h (byte). Setado se ocorrer um overflow aritmético. resetado se positivo Setado se resultado é zero. dst Inverte o operando de destino. Encontra o segundo complemento de R5. resetado em caso contrário C: Resetado se resultado é zero. O conteúdo original é perdido. o número sinalizado de 10 bits (offset) contido nos LSB’s da instrução.B Sintaxe Inverte o destino INV INV. Descrição Bits de status Não afetados.B NOT dst dst dst dst Operação Emulação XOR #0FFFFh.W] *INV. setado em caso contrário V: Setado se conteúdo inicial do destino é negativo. Se estiver setado. Se Z estiver resetado a instrução seguinte ao JUMP é executada. JC é usado para comparação de números não sinalizados. a próxima instrução após o jump será executada. . JEQ rótulo ou JZ rótulo 25) JEQ ou JZ Sintaxe Operação Se Z = 1: PC + 2 x offset PC Se Z = 0: executa a instrução seguinte O bit Z do registro de status é testado. Setado se resultado negativo. resetado se positivo Z: Setado se resultado é zero..B #0FFh. CMP #15. 54 Descrição CEFET . dst XOR. R5 INV R5 INC R5 Jump se o bit carry estiver setado ou Jump se maior ou igual JC rótulo ou JHS rótulo Descrição Bits de status N: Exemplo 24) JC ou JHS Sintaxe Operação Se C = 1: PC + 2 x offset PC Se C = 0: executa a instrução seguinte O bit C do registro de status é testado. Se estiver resetado. MOV #00Aeh. é somado ao PC. Resetado em caso contrário..salta se R5 >= 15 .continua se R5 < 15 Jump se igual ou jump se zero. Se estiver setado. o número sinalizado de 10 bits (offset) contido nos LSB’s da instrução é somado ao PC.Microcontroladores MSP 430 Conjunto de Instruções 23) *INV[. R5 JHS SALTA . Se for maior ou igual salta. Exemplo R5 é comparado com 15. . Quando o conteúdo de R6 é menor que o conteúdo da memória apontada por R7. Se os bits N e V são iguais (set ou reset).se sim. JL EDE . Não afetados. vá p/ EDE .. a instrução seguinte ao jump é executada.. os 10 bits sinalizados contidos nos LSB’s da instrução são somados ao PC e o salto é realizado. vá para EDE . o programa salta para EDE.R6 >= (R7) ?. números sinalizados. Se apenas um dos bits é setado. Descrição Os bits N e V do registro de status são testados. . JGE EDE . a instrução seguinte ao jump é executada. CMP @R7.. Descrição Os bits N e V do registro de status são testados. o programa continua no rotulo EDE CMP @R7.Microcontroladores MSP 430 Conjunto de Instruções Bits de status Não afetados. continue. Esta instrução é usada para comparação de números inteiros sinalizados...R6 . tabela(R5) JEQ LEO Jump maior ou igual JGE rótulo PC 26) JGE Sintaxe Operação Se (N XOR V) = 0 então salte p/ o rótulo:PC + 2xoffset Se (N XOR V) = 1 então execute a próxima instrução.se não. Esta instrução é usada para comparação de números inteiros sinalizados.R6 < (R7) ?.se não.. continue. Quando o conteúdo de R6 é maior ou igual ao conteúdo da memória apontada por R7. CMP R6. Se os bits N e V são iguais (set ou reset). Se apenas um dos bits é setado. Não afetados. os 10 bits sinalizados contidos nos LSB’s da instrução são somados ao PC e o salto é realizado. Exemplo Salta para o endereço LEO se R6 é igual ao conteúdo da tabela.. Jump incondicional JMP rótulo PC 55 Bits de status Exemplo 28) JMP Sintaxe Operação CEFET PC + 2 x offset . R6 . Jump se menor (less) JL rótulo PC Bits de status Exemplo 27) JL Sintaxe Operação Se (N XOR V) = 1 então salte p/ o rótulo:PC + 2xoffset Se (N XOR V) = 0 então execute a próxima instrução.. números sinalizados.se sim. o número sinalizado de 10 bits contido nos LSB’s da instrução é adicionado ao PC.se não carry vá p/ CONT .. Se o resultado for negativo. então executa a próxima instrução após o jump.. .. . o número sinalizado de 10 bits contido nos LSB’s da instrução é somado ao PC. Se N estiver resetado.. BUFFER JNC CONT . Se estiver setado.. execute a próxima instrução. substitui a instrução BRANCH na faixa de –511 a +512 words relativos ao corrente PC....se negativo COUNT=0 em PC=L$1 . continue com COUNT>=0 CLR COUNT . Se ocorrer ‘vai um’ uma rotina de erro é usada no endereço ERRO.. Não afetados. O resultado de um processamento em R5 é subtraído de COUNT. Jump se não carry ou jump se menor (lower) JNC rótulo ou JLO rótulo PC Bits de status Exemplo L$1 30) JNC.. SUB R5.. então salta p/ o rótulo: PC + 2 x offset Se N = 0.. COUNT é zerado e o programa continua a execução em outro caminho...inicio da rotina de erro .. Jump se negativo JN rótulo PC Bits de status Sugestão 29) JN Sintaxe Operação Se N = 1. Descrição O bit N do registro de status é testado.. ... Esta instrução é usada para comparar números sem sinal (0 a 65. ADD R6. COUNT . Descrição O bit C do registro de status é testado. Se C estiver setado então a próxima instrução após o jump é executada.Microcontroladores MSP 430 Conjunto de Instruções Descrição O número sinalizado de 10 bits contidos nos LSB’s da instrução é somado ao PC.se positivo. execute a próxima instrução.. Esta instrução de uma word.. JLO Sintaxe Operação Se C = 0. ..COUNT – R5 COUNT JN L$1 .535) Não afetados O resultado de um processamento em R6 é somado a BUFFER. Não afetados. Se ele estiver resetado.. então salta p/ rótulo: PC + 2 x offset Se C = 1.Continua com o fluxo normal 56 Bits de status Exemplo ERRO CONT CEFET .. CMP R7. 0(R11) ADD #2. Não afetado Os conteúdos da tabela endereçada por EDE são copiados para a tabela endereçada por TOM.prepara o contador MOV @R10+. JNZ Sintaxe Operação Jump se não igual ou jump se não zero JNE rótulo ou JNZ rótulo PC Se Z = 0. Salta para TONI se R7 e R8 tiverem conteúdos diferentes. dst src dst Operação Descrição O conteúdo do operando fonte é movido para o operando destino.salta para TONI se diferente . Se ele estiver resetado.. R11 .. #0 Bits de status Exemplo 33) *NOP Sintaxe Operação Emulação Descrição CEFET A instrução é usada para eliminação de instrução no programa ou para definição de tempos de espera. R11 . R9 . O tamanho das tabelas deve ser de 20h localizações.B Sintaxe MOV src.. . Não afetados. então salta p/ o rótulo: PC + 2 x offset Se Z = 1.B src. dst MOV.compara R7 com R8 JNE TONI . então executa a próxima instrução após o jump.prepara o segundo ponteiro MOV #20.Microcontroladores MSP 430 Conjunto de Instruções 31) JNE. Não operação NOP Nenhuma MOV #0..se contador = 0. então executa a próxima instrução Descrição O bit Z do registro de status é testado. R10 .atualiza ponteiro DEC R9 . . O conteúdo prévio de operando destino é perdido.prepara o ponteiro MOV #TOM.W] MOV. 0 continue cópia. .se contador dif... Se Z estiver setado. 57 .. termina cópia. Move fonte para destino Bits de status Exemplo 32) MOV[. O operando fonte não é afetado.continua se igual. o número sinalizado de 10 bits contido nos LSB’s da instrução é somado ao PC. R8 .atualiza contador JNZ refaz . MOV #EDE. 1 word Retira word da pilha para o destino 34) *POP[.B Sintaxe Operação PUSH SP – 2 SP Src @SP src ou PUSH.B dst Emulação MOV @SP+. 2 words BIC #0. EDE(R4) .2 ciclos.5 ciclos. e então o operando destino é movido para a RAM word endereçada por SP. 1 word BIC #0. 0(R4) .6 ciclos.restaura o registro de status Descrição Bits de status Exemplo Nota O ponteiro de pilha é sempre incrementado por 2 independente do sufixo .W] *POP. dst MOV. Após o ponteiro de pilha é incrementado por 2.Microcontroladores MSP 430 Conjunto de Instruções Bits de status Nota Não afetados Outras instruções podem emular a não operação usando diferentes números de ciclos de clock e tamanhos de códigos: MOV 0(R4). POP POP R7 SR .W] PUSH. Não afetados. R5 . 0(R4) .B Sintaxe Operação POP @SP SP + 2 dst SP dst ou POP.B CEFET 58 .salva R7 na pilha Bits de status Exemplo Nota O ponteiro de pilha é sempre decrementado por 2 independente do sufixo .B Coloca a word na pilha 35) PUSH[.B src Descrição O registro SP é decrementado por 2.4 ciclos. dst O conteúdo da localização de memória apontada pelo Pinteiro de pilha (SP) é movida para o destino.salva SR na pilha .1 ciclo . 3 words MOV @R4. 2 words JMP $+2 .restaura R7 . Não afetados PUSH PUSH SR R7 .B @SP+. O resultado mudará de sinal.1 . LSB +1  LSB  0 ADD dst. como mostrado na Figura B.Microcontroladores MSP 430 Conjunto de Instruções 36) *RET Sintaxe Operação Retorno de sub-rotina RET @SP SP + 2 MOV PC PC @SP+. é movido para o PC. O MSB é deslocado para o carry bit e o LSB é preenchido com 0. Todos restaurados da pilha Todos restaurados da pilha Rotação aritmética a esquerda Bits de status Bits de modo 38) *RLA[. PC Emulação Descrição O endereço de retorno salvo na pilha pela instrução CALL. A instrução RLA funciona como uma multiplicação por 2 sinalizada.1.B Sintaxe Operação Emulação Descrição RLA dst ou RLA.W] *RLA. resetado em caso contrário 59 . Não afetado. Os conteúdos restaurados da pilha foram salvos no momento da interrupção.RLA Um overflow ocorrerá se dst >= 40h ou dst < C0h antes da operação...B dst C  MSB  MSB – 1 .. Um overflow ocorrerá se o destino >= 4000h ou dst < C000h antes da operação. dst ou ADD. O resultado mudará de sinal. Bits de status CEFET N: Z: Setado se resultado negativo. Figura B.B dst. Retorno de interrupção RETI @SP SP + 2 @SP SP + 2 SR SP PC SP Bits de status 37) RETI Sintaxe Operação Descrição O registro de status e o PC são restaurados da pilha. O registro SP é incrementado por 4. dst O operando destino é deslocado a esquerda de uma posição. resetado se positivo Setado se resultado zero. O programa continua no endereço seguinte ao da instrução CALL. O MSB permanece inalterado e é copiado para MSB – 1.1 LSB R5 ... resetado em caso contrário Carregado do MSB Setado se ocorrer um overfow. &P0IN . O bit de carry é deslocado para o LSB e o MSB é deslocado para o bit de carry.1 é colocado no LSB de R5 BIT. resetado em caso contrário.B Sintaxe Operação Emulação Descrição RLC dst ou RLC.. -2(R5). LSB+1  LSB  C ADDC dst.2 .3. -2(R5) Rotação aritmética a direita Nota 40) RRA[.RLC Bits de status N: Z: C: V: Setado se resultado negativo. resetado caso contrário Multiplica R7 por 4 RLA R7 RLA R7 O assembler não reconhece a instrução RLA @R5+.B R5 . como mostrado na Figura B.B dst O operando destino é deslocado de uma posição a direita.2. Figura B.B Sintaxe Operação RRA dst ou RRA.W] RRA.informação carry RLC.carry = P0in. dst O operando destino é deslocado de uma posição a esquerda como mostrado na Figura B. que deve ser substituída por ADDC @R5+. O assembler não reconhece a instrução RLC @R5+. resetado caso contrário Setado se 03FFFh < dstinicial < 0C000h ou se 03Fh < dstinicial < 0C0h. Rotação circular a esquerda através do carry Nota 39) *RLC[. o LSB + 1 é deslocado para LSB e o LSB é deslocado para o carry.B dst C  MSB  MSB-1 . resetado se positivo Setado se resultado zero.o byte alto de R5 é resetado.W] *RLC. Exemplo O bit de entrada P0. CEFET 60 .Microcontroladores MSP 430 Conjunto de Instruções C: V: Exemplo Carregado do MSB Setado se ocorrer um overfow. que deve ser substituída por ADD @R5+.B #2. 75. O bit de carry é deslocado para o MSB.4 . O MSB é carregado com 1. 61 .. PUSH R5 . resetado em caso contrário Carregado do LSB Setado se valor inicial do destino for positivo e valor inicial do carry for 1.(1.prepara o carry para MSB RRC R5 .B dst dst + 0FFFFh + C dst dst + 0FFh + C dst SUBC SUBC. dst #0.4.3 .B Sintaxe Operação SBC dst ou SBC. O conteúdo prévio do destino é perdido. LSB + 1 LSB C O operando destino é deslocado de um bit a direita como mostrado na Figura B.B dst MSB – 1 . e o LSB é deslocado para o bit de carry.Microcontroladores MSP 430 Conjunto de Instruções Figura B.B Sintaxe Operação Descrição RRC C MSB dst ou RRC.R5 / 2 + 8000h = R5 42) *SBC[. Figura B. Exemplo R5 é deslocado de 1 bit à direita.R5 x 0.5 + R5 = 1.75 x R5 = R5 Rotação circular a direita através do carry 41) RRC[.B #0..5 = 0. SETC ..W] Subtrai o ‘borrow’ do destino *SBC. resetado em caso contrário Carregado do LSB Resetado Exemplo O conteúdo de R5 é multiplicado por 0. dst Emulação Descrição CEFET O bit de carry menos 1 é somado ao destino.5 ADD @SP+.RRC Bits de status N: Z: C: V: Setado se resultado negativo.RRA Bits de status N: Z: C: V: Setado se resultado negativo.W] RRC. resetado se positivo Setado se resultado zero.armazena temporariamente R5 na pilha RRA R5 . resetado em caso contrário. R5 .5 x R5 = R5 RRA R5 .5 x R5) x 0.R5 x 0. resetado se positivo Setado se resultado zero. SUB @R13. 0(R12) . resetado em caso contrário Resetado se dst foi decrementado de 0000h p/ 0FFFFh ou de 00h para 0FFh. setado em caso contrário V: Setado se inicialmente C = 0 e dst = 08000h Setado se inicialmente C = 0 e dst = 080h Um contador de 16 bits apontado por R13 é subtraído de outro contador de 32 bits apontado por R12.R6=4137 + 6012 + 1=10150 = 0150 Seta o bit negativo SETN 1 BIS N #4. Suponha que R5 = 3987 e R6 = 4137. Subtrai R5 de R6 decimalmente.emula a subtração pela soma de: . R6 .subtrai o carry do MSD O borrow é tratado como um não carry: Borrow carry bit Sim 0 Não 1 Seta o bit de carry SETC 1 BIS C #1. ADD #6666h. resetado se positivo Setado se resultado zero.Move o conteúdo de R5 de 0-9 p/ 6-F .(10000 – R5 – 1) . R5.subtrai os LSD’s SBC 2(R12) .R5 = não R5 = 6012h SETC .Microcontroladores MSP 430 Conjunto de Instruções Bits de status Exemplo Setado se resultado negativo. R6 = R6 + R5 + 1 . SR N: Z: C: Nota 43) *SETC Sintaxe Operação Emulação Descrição Bits de status O bit de carry é setado N: Z: C: V: Não afetado Não afetado Setado Não afetado Exemplo Emula uma subtração decimal. SR 44) *SETN Sintaxe Operação Emulação Descrição Bits de status O bit N do registro de status é setado N: Z: C: Setado Não afetado Não afetado 62 CEFET .R5 = 3987 + 6666 = 9FEDh INV R5 .prepara o carry = 1 DADD R5. W] SUB. dst ou SBB. resetado em caso contrário.B dst ou src. O conteúdo prévio do operando destino é perdido.B. resetado se positivo Setado se resultado zero. dst ou SUB. resetado caso contrário. SBB[. pela adição do primeiro complemento do operando fonte e o bit de carry.B src. 63 CEFET .B Sintaxe Operação Subtrai fonte do destino SUB src. SR O bit de zero do registro de status é setado N: Z: C: V: Não afetado Setado Não afetado Não afetado 46) SUB[. resetado em caso contrário Setado se há um carry do MSB do resultado. SBB. Bits de status V: Exemplo Nota Veja exemplo na instrução SBC O borrow é tratado como um não carry: Borrow Carry Sim Não 0 1 47) SUBC. resetado se borrow Setado se ocorrer um overflow aritmético. pela adição do primeiro complemento do operando fonte com a constante 1. dst src. N: Z: C: Setado se resultado negativo. dst ou SBB src.Microcontroladores MSP 430 Conjunto de Instruções V: 45) *SETZ Sintaxe Operação Emulação Descrição Bits de status Não afetado Seta o bit de zero SETZ 1 Z BIS #2. O operando fonte não é afetado. O operando fonte não é afetado. Setado se não borrow.W]Subtrai a fonte e o borrow (not carry) do destino SUBC.B Sintaxe SUBC SUBC. O prévio conteúdo do operando destino é perdido. dst dst + (não src + 1) dst – src dst Descrição O operando fonte é subtraído do operando destino.B src. dst dst ou dst Operação dst + não src + C dst – src – 1 + C Descrição O operando fonte é subtraído do operando destino. B @R13.B @R13+. R11 . resetado se positivo Setado se resultado zero. R7 R7 .5. resetado se borrow Setado se ocorrer um overflow aritmético. resetado em caso contrário Setado se há um carry do MSB do resultado. Setado se não borrow.5 . resetado caso contrário.SWPB Bits de status N: Z: C: V: MOV SWPB Estende sinal SXT Bit 7 dst bit 8 a 15 Não Não Não Não afetado afetado afetado afetado #040BFh.6. 64 .subtrai os MSD’s com carry O borrow é tratado como um não carry: Borrow Carry Sim Não Troca bytes (swap bytes) SWPB dst bits 7 a 0 Nota 0 1 48) SWPB Sintaxe Operação Descrição Bits 15 a 8  Os bytes alto e baixo do operando destino são trocados como mostra a Figura B. Exemplo Um numero de 16 bits apontado por R13 é subtraído de outro numero de 16 bits em R10 e R11 (MSD) SUB.1011 1111 0100 0000 R7 R7 Exemplo 49) SXT Sintaxe Operação Descrição CEFET O sinal do byte baixo é estendido para o byte alto como mostrado na Figura B. resetado em caso contrário.0100 0000 1011 1111 . R10 .subtrai os LSD’s sem o carry SUBC.Microcontroladores MSP 430 Conjunto de Instruções Bits de status N: Z: C: V: Setado se resultado negativo. Figura B. TST R7 ..B &TCDAT. resetado se positivo Setado se destino é zero. resetado caso contrário Resetado Exemplo MOV.. R6 .R7 = 0FF85h:1111 1111 1000 0101 ADD R7.W] XOR. resetado se positivo Setado se resultado zero. Testa destino 50) *TST[.salta se negativo JZ R7ZERO .Microcontroladores MSP 430 Conjunto de Instruções Figura B.. resetado em caso contrário Setado se resultado não é zero..salta se zero ..B #0. . Se ele é negativo. se é positivo mas não zero continua em R7POS e se zero continua em R7ZERO.dst CEFET 65 . continua em R7NEG.B Sintaxe Operação Emulação Descrição TST dst ou TST..6 .soma numero de 16 bits.testa R7 JN R7NEG .B dst dst + 0FFFFh + 1 ou dst + 0FFh + 1 CMP #0. O operando destino não é afetado..B dst src..dst O operando destino é comparado com zero. R7 . resetado em caso contrário Setado Resetado Bits de status Exemplo R7POS R7NEG R7ZERO 51) XOR[.R7 é negativo .R7 é positivo mas não zero .SXT Bits de status N: Z: C: V: Setado se resultado negativo. ..B Sintaxe Operação R7 é testado.. 1000 0101 SXT R7 .dst ou CMP...W] *TST.. Os bits de status são atualizados conforme o resultado.. N: Z: C: V: Setado se destino é negativo.dst ou XOR.. ..TCDAT = 085h: .R7 é zero Ou exclusivo da fonte com o destino XOR src XOR dst src.. Bits de status Exemplo Os bits setados em R6 invertem os correspondentes bits da word TONI. N: Z: C: V: Setado Setado Setado Setado se MSB estiver setado. XOR R6. caso contrário resetado se resultado ≠ 0. TONI CEFET 66 . do contrário resetado se ambos os operandos forem negativos. O operando fonte não é alterado e o resultado é armazenado no destino.Microcontroladores MSP 430 Conjunto de Instruções Descrição Realiza a operação lógica ou exclusivo entre o operando fonte e o operando destino. resetado caso contrário se resultado for zero.
Copyright © 2024 DOKUMEN.SITE Inc.