Baixe o app para aproveitar ainda mais
Prévia do material em texto
Microprocessadores Aula 05: Instruções Assembly para PIC16F – Parte I: 1 Instruções Assembly para PIC16F – Parte I: Instruções orientadas a bits Referência para a aula: 1 – Apostila: Instruções e Diretivas [Xerox]. Prof.: Edgar Campos Furtado edgar@ufsj.edu.br Sala: 217.2 Premissas para PIC16F: • RISC � 35 instruções; • Cada instrução � 14bits; • Indicadores do registrador STATUS � C, DC e Z. Introdução AULA-05 2UFSJ – CAP © Edgar C. Furtado Divisão das instruções: • Instruções orientadas a bits; • Instruções orientadas a bytes; • Instruções que operam com literais e de controle; Contador de Programa A memória de programa contém 8192 registradores de 14 bits cada � necessidade de 13bits para acesso a todas as instruções. AULA-05 3UFSJ – CAP © Edgar C. Furtado Dilema do projeto: Como acessar as instruções sem aumentar a quantidade de registradores dedicados e facilitar a implementação de instruções de saltos? Contador de Programa Utilizar registradores da memória de Dados: PCLPCLATH 8 bits5 bits PC = 13 bits AULA-05 4UFSJ – CAP © Edgar C. Furtado PCLPCLATH Registrador #02 na memória de dados; Modificável via instrução; Registrador #10 na memória de dados; Modificável via instrução; Contador de Programa Caminho de dados para o Contador de Programa: AULA-05 5UFSJ – CAP © Edgar C. Furtado A linguagem do processador: instruções binárias! O conjunto de instruções binárias interpretáveis por um dado processador é denominado linguagem de máquina. Algumas dificuldades da programação em linguagem de máquina: Conjunto de Instruções AULA-05 6 • Memorização do formato das instruções; • Operar com números binários; • Quantidade de instruções. Ideia: Associar um mnemônico às instruções binárias. Exemplo: 11 1111 0000 1010 � ADDLW 10d UFSJ – CAP © Edgar C. Furtado Adiciona o literal 10d ao conteúdo do registrador de trabalho W A linguagem Assembly: conjunto de instruções mnemônicas equivalentes às instruções binárias! Processo de gravação/leitura de códigos Assembly: Conjunto de Instruções Montador Gravação AULA-05 7UFSJ – CAP © Edgar C. Furtado Código .asm Programador Montador Gravação Código .hexAssembler Código .asm Código .hex Desmontador Disassembler Leitura Memória de Instruções do PIC Mnemônico de Leitura das Instruções: Mnemônico do ASSEMBLY para PIC16F AULA-05 8UFSJ – CAP © Edgar C. Furtado Mnemônico do ASSEMBLY para PIC16F A maioria das instruções necessitam de argumentos! A representação para esses argumentos é feita em letra minúscula, significando: AULA-05 9UFSJ – CAP © Edgar C. Furtado Mnemônico do ASSEMBLY para PIC16F Exemplo: Supondo que se queira movimentar o conteúdo do registrador de trabalho para um outro registrador na memória de dados. MOV + W + F = MOVWF Outros exemplos: AULA-05 10UFSJ – CAP © Edgar C. Furtado Ou exclusivo (XOR) entre o conteúdo de (W) e o do registrador (F); Decrementa (DEC) o conteúdo do registrador (F); Limpa (CLR) o conteúdo do registrador (F); Um bit (B) é setado (S) do registrador (F); Um bit (B) é testado (T) do registrador (F), salta (S) se for 0 (C); Rotaciona 1 bit (R) à esquerda (L) o conteúdo do registrador (F); XORWF: DECF: CLRF: BSF: BTFSC: RLF: Outros exemplos: Instruções Instruções orientadas a bits: BCF: Um bit (B) é limpo (C) do registrador (F); BSF: Um bit (B) é Setado (S) do registrador (F); BTFSC: Um bit (B) é testado (T) do registrador (F), salta (S) se for 0 (C); BTFSS: Um bit (B) é testado (T) do registrador (F), salta (S) se for 1 (S); AULA-05 11UFSJ – CAP © Edgar C. Furtado Ação: Alterar nível lógico ou testar nível lógico de um dado bit de um registrador. Requisitos para a instrução: • Código da ação; • Endereço do registrador; • O bit do registrador. Instruções Acesso direto à memória SRAM: 4 Bancos de memória com 128bytes cada � 512 registradores, ou seja, são necessários 9 bits para acesso direto a qualquer registrador. AULA-05 12UFSJ – CAP © Edgar C. Furtado Dilema do projeto: Quanto maior o número de bits de endereçamento nas instruções menor quantidade de instruções codificadas/ações. Instruções Acesso direto à memória SRAM: Realizar o acesso combinando: Caminho de dados: bits de um registrador na memória (STATUS) mais o código de endereçamento na instrução: AULA-05 13UFSJ – CAP © Edgar C. Furtado Instruções Instruções orientadas a bits: BCF BTFSC BSF BTFSS Formato da Instrução de máquina: AULA-05 14UFSJ – CAP © Edgar C. Furtado OPcode Índice do bit (0 a 7) Endereço do Registrador (0 a 127) Formato da Instrução de máquina: Instruções Instruções orientadas a bits: Formato da instrução OPcode: Ver endereços possíveis dos banco de registradores. Exemplo: AULA-05 15UFSJ – CAP © Edgar C. Furtado Índice do bit: 000 – bit 0 LSB 001 – bit 1 010 – bit 2 . . . 111 – bit 7 MSB 0000 00002 – 0d 0111 11112 – 127d ∶BANCO 0 Instruções Instrução de máquina Código maquina: 0101 101 0000011 0110 010 0100000 Instrução: 1. BSF STATUS,5 2. BTFSC 32,2 AULA-05 16UFSJ – CAP © Edgar C. Furtado Endereço registrador STATUS= 03 01011010000011 01100100100000 Memória de Programa: Reg. n: Reg. n+1: Instruções Instruções orientadas a bits: Requisitos para a unidade de controle: • Identificar a instrução; • Informar para a memória o AULA-05 17UFSJ – CAP © Edgar C. Furtado • Informar para a memória o endereço do registrador; • Informar para a ULA o bit a ser testado ou alterado. Instruções Ciclos para execução das instruções orientadas a bits Q1: Decodifica instrução; Q2: Busca dado na memória; Q3:Executa ação; Q4: Salva resultado AULA-05 18UFSJ – CAP © Edgar C. Furtado Instrução: BCF f,b | o bit b do registrador f � 0 • BCF: Um bit (B) é zerado (C) do registrador (F); • Coloca nível lógico 0 para bit b do registrador f; • Não afeta nenhum INDICADOR; Instruções AULA-05 19 Exemplo: BCF STATUS,0 BCF STATUS,0 STATUS DC C Z antes 0001 0111 x x x depois 0001 0110 x x x 0x17=00010111 0x16=00010110 UFSJ – CAP © Edgar C. Furtado Instrução: BSF f,b | o bit b do registrador f � 1 • BCF: Um bit (B) é setado (S) do registrador (F); • Coloca nível lógico 1 para bit b do registrador f; • Não afeta nenhum INDICADOR; Instruções AULA-05 20UFSJ – CAP © Edgar C. Furtado Exemplo: BSF TMR0,7 BSF TMR0,7 TMR0 DC C Z antes 0001 0111 x x x depois 1001 0111 x x x 0x17=00010111 0x97=10010111 Instrução: BTFSC f,b | Testa um bit do registrador f • BTFSF: Um bit (B) é testado (T) do registrador (F) e salta (S) se o mesmo for 0 (C); Instruções AULA-05 21 • Pode ser utilizada para teste condicional; • Não afeta nenhum INDICADOR; UFSJ – CAP © Edgar C. Furtado Instrução: BTFSC f,b | Testa um bit do registrador f Exemplo: Instruções AULA-05 22UFSJ – CAP © Edgar C. Furtado Assume-se que no ciclo de instrução (CI) 0 a primeira instrução é apenas lida. No CI 1 a verificação do bit 2 do registrador REG1 é realizada pela função BTFSC. Como tal bit é igual a 1 a próxima instrução é executada, no CI 2 e, em seguida, a terceira instrução, no CI 3. Instrução: BTFSC f,b | Testa um bit do registrador f Exemplo: Instruções AULA-05 23UFSJ – CAP © Edgar C. Furtado Nesse caso, no CI 1 é realizada a verificação do bit 1 do registrador REG1. Como tal bit é igual a 0, tem-se que a próxima instrução não é executada no CI 2, mas sim ignorada. A terceira instrução é lida no CI 2, mas executada no próximo CI. Instrução: BTFSS f,b | Testa um bit do registrador f • BTFSF: Um bit (B) é testado (T) do registrador (F) e salta (S) se o mesmo for 1 (S); Instruções AULA-05 24 • Pode ser utilizada para teste condicional; • Não afeta nenhum INDICADOR; UFSJ – CAP © Edgar C. Furtado Instrução: BTFSS f,b | Testa um bit do registrador f Exemplo: Instruções AULA-05 25UFSJ – CAP © Edgar C. Furtado Nesse caso tem-se uma seqüência de instruções que realizam um teste no bit 1 (verifica se o mesmo é igual a 0) e depois no bit 2 (verifica se o mesmo é igual a 1), ambos nomesmo registrador REG1. Somente o segundo caso é verdadeiro. Como conseqüência a terceira instrução não é executada no CI 3, pois nesse ciclo essa instrução é ignorada. Na seqüência executa-se a quarta instrução no CI 4.
Compartilhar