Baixe o app para aproveitar ainda mais
Prévia do material em texto
Microprocessadores Aula 08: Programação Assembly – Parte 1: Operações 1 Programação Assembly – Parte 1: Operações aritméticas, laços condicionais e de repetição Referência para a aula: 1 – Apostila: Instruções e Diretivas [Xerox]. Prof.: Edgar Campos Furtado edgar@ufsj.edu.br Sala: 217.2 PROGRAMAÇÃO EM ASSEMBLY A elaboração de um código em Assembly está condicionada a construção de estruturas básicas, tais como: 1. Operações algébricas com o conteúdo de registradores; 2. Rotinas de comparação de conteúdo de registradores; 3. Laços condicionais; AULA-08 2UFSJ – CAP © Edgar C. Furtado 4. Laços de repetição. DIRETIVAS é um conjunto de instruções de linguagens de programação que especifica como o montador deve processar o código fonte. No curso serão abordadas algumas das diretivas associadas ao montador MPLAB, da MICROCHIP. DECLARAÇÃO DE VARIÁVEIS O primeiro passo consiste na declaração de variáveis. VARIÁVEL = PALAVRA QUE REPRESENTA O ENDEREÇO DE UM REGISTRADOR NA MEMÓRIA DE DADOS Essa declaração é realizada por meio de duas diretivas do montador Assembler: AULA-08 3UFSJ – CAP © Edgar C. Furtado Assembler: 1. EQU� Usada para se declarar variáveis isoladas; 2. CBLOCK-ENDC� Usada para se declarar um conjunto de variáveis. DECLARAÇÃO DE VARIÁVEIS Memória de Dados Endereço do AULA-08 4UFSJ – CAP © Edgar C. Furtado Endereço do Primeiro Registrador de Uso Geral REPRESENTAÇÃO NUMÉRICA O primeiro passo para se tratar equações algébricas consiste em estabelecer uma forma de representação dos números. • Para números naturais (positivos e nulos) necessita-se representar apenas a magnitude do número; AULA-08 5UFSJ – CAP © Edgar C. Furtado • Para números inteiros (positivo, nulo e negativo) pode-se utilizar a representação sinal-magnitude; • Para números reais utiliza-se o padrão IEEE 754 (leitura do texto complementar, no xerox); REPRESENTAÇÃO NUMÉRICA Representação apenas magnitude (números naturais). 7 6 5 4 3 2 1 0 Magnitude: 0 a 255d Registrador: Representação sinal-magnitude (números inteiros): AULA-08 6UFSJ – CAP © Edgar C. Furtado BIT MAIS SIGNIFICATIVO: Sinal = 0 � POSITIVO 1 � NEGATIVO 7 6 5 4 3 2 1 0 Magnitude: 0 a 127d Registrador: Representação sinal-magnitude (números inteiros): OPERAÇÕES ARITMÉTICAS ADIÇÃO: Considere a seguinte expressão: Em que A e B são registradores e L um literal. AULA-08 7UFSJ – CAP © Edgar C. Furtado Implementação em Assembly: OPERAÇÕES ARITMÉTICAS ADIÇÃO E SUBTRAÇÃO: Considere a seguinte expressão: Em se tratando com números binários, a melhor maneira de se realizar tal A1 A2 AULA-08 8UFSJ – CAP © Edgar C. Furtado Em se tratando com números binários, a melhor maneira de se realizar tal operação é considerar a representação sinal-magnitude e a operação de complemento de 2. A operação de complemento de 2 do número 5d = 0000 0101b Complemento de 1 = 1111 1010 + 1 = 0000 0001 Complemento de 2 = 1111 1011 = -5d OPERAÇÕES ARITMÉTICAS Exemplos de operações com complemento de 2 Exemplo 1: Resultado nulo Operação: 5d +(–5d) = 0d 0000 0101 +(1111 1011) = 1 0000 0000 Exemplo 2: Resultado positivo ResultadoCarry AULA-08 9UFSJ – CAP © Edgar C. Furtado Exemplo 2: Resultado positivo Operação: 15d +(–3d) = 12d 0000 1111 +(1111 1101) = 1 0000 1100 Complemento de 1 para 3d = 1111 1100 + 1 = 0000 0001 Complemento de 2 para -3d = 1111 1101 Resultado = 12dCarry OPERAÇÕES ARITMÉTICAS Exemplos de operações com complemento de 2 Exemplo 3: resultado negativo Operação: 5d +(–19d) = -14d 0000 0101 +(1110 1101) = 0 1111 0010 Carry Como o resultado foi negativo: AULA-08 10UFSJ – CAP © Edgar C. Furtado Como o resultado foi negativo: • Complemento de 2 para resultado = 0000 1110 (14d); • Mudar o bit mais significativo para 1 (8 bit); • Resultado: 1000 1110 = -14d; As Instruções SUBWF e SUBLW retornam as respostas para números negativos em complemento de 2, bastando aplicar novamente o complemento de 2 no resultado. OPERAÇÕES ARITMÉTICAS Caso para A1 ≥ A2 Caso para A1 < A2 Considere a seguinte expressão: Se a representação for sinal-magnitude. AULA-08 11UFSJ – CAP © Edgar C. Furtado Complemento de 2 do resultado OPERAÇÕES ARITMÉTICAS Caso para A1 ≥ A2 e A1 < A2 Implementação Completa #1: AULA-08 12UFSJ – CAP © Edgar C. Furtado Se a representação for sinal-magnitude. OPERAÇÕES ARITMÉTICAS Para A1 ≥ A2 e A1 < A2 Implementação Completa #2: AULA-08 13UFSJ – CAP © Edgar C. Furtado OPERAÇÕES ARITMÉTICAS MULTIPLICAÇÃO COM NÚMEROS NATURAIS: Considere a seguinte expressão: Para números naturais (sempre positivos), o caso da multiplicação pode ser considerado como uma soma de vários termos: AULA-08 14UFSJ – CAP © Edgar C. Furtado considerado como uma soma de vários termos: OPERAÇÕES ARITMÉTICAS MULTIPLICAÇÃO COM NÚMEROS INTEIROS: Para números inteiros é necessário que os conteúdos nos registradores Bn estejam na representação complemento de 2. Nesse caso, a multiplicação pode ser considerado como uma soma de vários termos: AULA-08 15UFSJ – CAP © Edgar C. Furtado Necessário estar em Complemento de dois! OPERAÇÕES ARITMÉTICAS MULTIPLICAÇÃO POR 2: No caso da multiplicação por 2, para números pares pode-se utilizar a instrução RLF. Exemplo: AULA-08 16UFSJ – CAP © Edgar C. Furtado Ressalvas: • Para multiplicação com número natural, o maior valor possível de forma a não ocorrer estouro é 127d = 0111 1111b; 2x127d = 254d = 1111 1110b; • Para multiplicação com número inteiro, o maior valor possível de forma a não ocorrer estouro é x011 1111 = 63d; 2x63d = x111 1110 = 126d. Lembrando sempre de verificar o sinal. OPERAÇÕES ARITMÉTICAS COMPARAÇÃO: Em diversas situações se faz necessário a utilização de procedimentos de comparação entre conteúdo de registradores. Considere a instrução: SUBWF REG1,W | W � REG1 - W Em termos dos indicadores C e Z pode-se estabelecer: AULA-08 17UFSJ – CAP © Edgar C. Furtado OPERAÇÕES ARITMÉTICAS COMPARAÇÃO: Caso de igualdade. Considere a instrução: XORWF REG1,W | W � REG1 XOR W Em termos do indicador Z pode-se estabelecer: Se Z = 0 � Números iguais! Se Z = 1 � Números diferentes! AULA-08 18UFSJ – CAP © Edgar C. Furtado Se Z = 1 � Números diferentes! LAÇOS CONDICIONAIS Os laços condicionais podem ser implementados com: BTFSS GOTO RETURN BTFSC CALL RETLW AULA-08 19UFSJ – CAP © Edgar C. Furtado Convencionando: LAÇOS CONDICIONAIS Considere o seguinte algoritmo: Implementação Assembly AULA-08 20UFSJ – CAP © Edgar C. Furtado LAÇOS CONDICIONAIS AULA-08 21UFSJ – CAP © Edgar C. Furtado LAÇOS CONDICIONAIS AULA-08 22UFSJ – CAP © Edgar C. Furtado LAÇOS CONDICIONAIS AULA-08 23UFSJ – CAP © Edgar C. Furtado LAÇOS DE REPETIÇÃO Os laços de repetição podem ser implementados com: DECFSZ GOTO RETURN INCFSZ CALL RETLW Estrutura básica: AULA-08 24UFSJ – CAP © Edgar C. Furtado LAÇO DE REPETIÇÃO Considere o seguinte exemplo: AULA-08 25UFSJ – CAP © Edgar C. Furtado Estrutura básica: LAÇO DE REPETIÇÃO Considere o seguinte exemplo: AULA-08 26UFSJ – CAP © Edgar C. Furtado INSTRUÇÕES ASSEMBLY – PIC Descrição do exemplo anterior: AULA-08 27UFSJ – CAP © Edgar C. Furtado
Compartilhar