Buscar

AULA-08R00

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Outros materiais