Sie sind auf Seite 1von 31

NE 9610 – Microprocessadores e Microcontroladores

Teoria

Profª Drª Silvana Gasparotto de Souza


E-mail: gasparotto.fei.mc@gmail.com
Aula 00
1 Noções de Linguagem Assembly

 Vamos analisar as várias versões de um programa simples em Linguagem


Assembly, apresentando a versão codificada em Linguagem de Máquina dos
microcontroladores da família 8051.

 Os programas são de fácil entendimento e, juntamente com a leitura dos


comentários, podem fornecer as noções iniciais importantes sobre Linguagem
Assembly e sua técnica de programação.

 Apresentaremos, através desses programas, noções sobre:


 Instrução Assembly (composta de Rótulo ou Label, código mnemônico e

operandos);
 Modos de endereçamento com endereços absolutos e simbólicos;

 Uso de Diretivas da Linguagem Assembly (ORG, END, EQU, DC, etc.)


Aula 00
1 Noções de Linguagem Assembly

Valores
Vcc e Gnd binários
Microcontrolador
(hexadecimal)

Por meio de sua


CPU

Vocabulário próprio e
restrito

Conjunto de Instruções
Aula 00
1 Noções de Linguagem Assembly

 Conjunto de Instruções

 É o conjunto de valores binários (representados em hexadecimal) que foram


codificados de tal modo que representem todas as operações possíveis de serem
executadas pela CPU.

 Cada instrução ocupa um ou mais bytes da memória e é formada de duas partes


principais:

Código de Operando ou endereço do


Operação operando

Que identifica o tipo Que contem o dado ou o


de operação a ser endereço do dado que
executada entra na operação
Aula 00
1 Noções de Linguagem Assembly

 O conjunto de instruções varia de CPU para CPU e costuma ser definido pelo
próprio fabricante, mas basicamente é formado por:

 Instruções de transferência de dados da memória para registradores e vice-versa;

 Instruções de operações aritméticas, lógicas e booleanas;

 Instruções de comparação;

 Instruções de desvios;

 Instruções de deslocamentos e giros;

 Instruções de entrada e saída de dados.


Aula 00
1 Noções de Linguagem Assembly

 Programa

 Para executar uma tarefa qualquer, a CPU precisa receber instruções precisas sobre
o que fazer. Uma seqüência adequada de instruções, para a realização de uma
determinada tarefa, se constitui num PROGRAMA.

 Linguagem de Programação

 Uma linguagem de programação é um conjunto de ferramentas, regras de sintaxe e


de semântica, de símbolos ou códigos que nos permitem escrever programas
destinados a instruir a CPU para a realização de suas tarefas.
Aula 00
1 Noções de Linguagem Assembly

 Programa em Linguagem de Máquina


 Instruções em Linguagem de Máquina (considerando CPU com tamanho de palavra
de 8 bits = instruções e dados são armazenados na memória e processados pela CPU
como unidades de 8 bits).

Binário Hexadecimal

00000000 00

01110100 00000101 74 05

01110101 11110000 00000111 75 F0 07


Aula 00
1 Noções de Linguagem Assembly

 Um programa em linguagem de máquina pode ser apresentado em binário (0's e 1's)


ou em hexadecimal (usando de 0 a F, ou seja, convertendo cada 4 bits em um dígito
hexadecimal).

 A apresentação em hexadecimal torna mais enxuta a representação (mas não mais


simples...), mas serve somente para visualização, pois um programa somente pode
ser submetido ao microprocessador em binário.

 A CPU executa o programa escrito em linguagem de máquina e que esteja gravado


em determinadas posições de memória, de acordo com as características de cada
arquitetura utilizada. Este programa é normalmente denominado Programa-Objeto
Absoluto ou Programa-Objeto Não Relocável.
Aula 00
1 Noções de Linguagem Assembly

 Programa-Objeto Absoluto ou Programa Objeto Não Relocável

Endereço Absoluto da 0100 00 Código Objeto


Memória
0101 74

0102 05

0103 75
0104 F0

0105 07

 É uma forma difícil de ser entendida pelo programador.


 É trabalhoso manipular instruções de máquina que usam códigos binário
(hexadecimal).
 não há distinção visível entre os códigos de operação e os operandos da
instrução.
Aula 00
1 Noções de Linguagem Assembly

 Programa em Linguagem de Montagem ou Linguagem Assembly


 Usamos normalmente uma versão mnemônica ou simbólica das Instruções de Máquina.
Instrução de Instrução
máquina mnemônica

00 NOP

74 05 MOV A,#05H

75 F0 07 MOV B,#07H

 Essa versão mnemônica ou simbólica é denominada Linguagem Assembly ou Linguagem de


Montagem, pois, antes da execução, é preciso traduzir ou montar cada instrução simbólica em
instrução de máquina.
 A Linguagem Assembly ou Linguagem de Montagem é definida com base na Linguagem de
Máquina, onde cada Instrução de Máquina é representada por um comando mnemônico em
caractere alfanumérico. O programa escrito nesta linguagem é denominado de Programa-
Fonte. Estes programas são escritos em arquivos alfanuéricos através de editores de textos,
que tenham a capacidade de gerar arquivos sem utilizar recursos específicos de formatação
comumente utilizados na edição de documentos.
Aula 00
1 Noções de Linguagem Assembly

 Os Programas Assemblers ou Programas Montadores

 Os Programas Montadores ou Programas Assemblers são ferramentas que permitem


a tradução de Programas-Fonte escritos em Linguagem Assembly para Programas-
Objeto escritos em Linguagem de Máquina.

 Assembly X Assembler

 “Assembly” significa montagem e indica a característica da linguagem.


 “Assembler”significa montador e indica o programa tradutor.
Aula 00
1 Noções de Linguagem Assembly

 Ligadores (“Linkers”) e Alocadores (“Locators”)


 Para facilitar a elaboração de programas, costuma-se utilizar conceitos de modularidade,
particionando-se os programas em módulos, que depois são convenientemente interligados.
Além disso, é comum se fazer uso de bibliotecas de rotinas de uso geral ou específico,
economizando-se tempo de programação. Esta técnica permite que um programa possa ser
escrito por vários programadores ou até mesmo que se possa criar bibliotecas de módulos a
serem compartilhados.
 Os módulos de programas montados, são armazenados em um formato intermediário
denominado de Programa-Objeto Relocável. Nesta notação, os endereços de acesso a
posições externas ao módulo ficam indefinidos até o momento em que o módulo é concatenado
com outros módulo. A posição de memória do programa também é indefinida.
 Ligadores (“Linkers”)
 São ferramentas que permitem a concatenação de vários programas-objeto
relocáveis em um único programa-objeto relocável, satisfazendo todos os
endereços de chamadas intermódulos.
 Alocadores (“Locators”)
 Permitem transformar um programa-objeto relocável em um programa-objeto absoluto ou

não relocável, definindo assim as posições de memória a serem utilizadas pelo programa.
 Na maioria dos casos, a operação de ligação e alocação é feita por uma única ferramenta.
Aula 00
1 Noções de Linguagem Assembly

 Diretivas da Linguagem Assembly

 Diretivas do Assembly mais utilizadas:

 ORG
 Para definir a origem da área de montagem.

 END
 Para definir o fim do programa em Assembly.

 EQU
 Para definir Equivalência entre endereços ou nomes.

 DC
 Para definir valores constantes em posições de memória.

 DS
 Para definir ou reservar área de memória sem colocar valor inicial.
Aula 00
2 Palavras de Instruções da Família MCS51

 A figura abaixo mostra um exemplo de uma típica palavra de instrução de um byte para
os microcontroladores com núcleo do 8051.
 MOV A,R3
 A palavra de 8 bits contida no registrador R3 (conteúdo do registrador R3) é
copiada para o conteúdo do acumulador.

opcode endereço do registro


5 bits 3 bits
Palavra de Instrução 1 1 1 0 1 0 1 1
Bit 7 6 5 4 3 2 1 0

 Se todas as instruções do 8051 tivessem a mesma construção da mostrada na figura


acima (cinco bits para o opcode e 3 bits para endereçar o operando):
 o número total de instruções possíveis (opcodes) seria 25 = 32;
 o número total de registradores ou posições de memória que poderia armazenar o
operando seria 23 = 8.
 isso iria limitar severamente a capacidade do microprocesador.
Aula 00
2 Palavras de Instruções da Família MCS51

 Para que um maior número de instruções esteja disponível e para proporcionar maior
flexibilidade no acesso aos dados, sem que seja necessário aumentar o tamanho da
palavra, os microprocessadores com tamanho de palavra menor usam instruções
definidas com mais de uma palavra (instruções de múltiplos bytes).

 Como os microcontroladores da Família 8051 têm um tamanho de palavra de 8 bits, para


implementar seu conjunto de instruções foi necessário lançar mão de instruções de
múltiplos bytes, a saber, instruções com um, dois ou três bytes.
 Todos os microcontroladores da Família 8051 executam o mesmo conjunto de
instruções.
 Tipos de Instruções da Família 8051
 Operações de Transferência de Dados
 Operações Aritméticas
 Operações Lógicas
 Operações Booleanas
 Operações de Salto Incondicional e Condicional (Decisão e/ou Desvio)

(+Cópia do 8051 Controller)


Aula 00
3 Exemplos

 Objetivos:

 Noções de Linguagem Assembly.

 Introduzir o  IAR EWB8051 IDE


 Ambiente de Desenvolvimento Integrado EWB8051 da

IAR.

 Simulação
 Teste de Mesa

 IAR EWB8051 IDE


Aula 00
4 Primeiro Exemplo

 Programa-Fonte Aula00_v0

; Programa-Fonte Aula00_v0

$include(REG51.inc)
clr A
mov dptr,#5300H
nop
movx A,@dptr
nop
dec A
jnz 0007H
nop
add A,30H
mov P1,A
nop
sjmp $
end
Aula 00
4 Primeiro Exemplo

$io8051.h
NAME main

PUBLIC main

ORG 0FFFEh
DC16 main

RSEG RCODE

main clr A
mov dptr,#5300H
nop
movx A,@dptr
nop
dec A
jnz 0007h
nop
add A,30H
mov P1,A
nop

FIM sjmp FIM

END main
Aula 00
4 Primeiro Exemplo
Aula 00
5 Primeiro Exemplo – Simulação – Teste de Mesa

 Teste de Mesa – Simular, mentalmente, o Programa-Fonte passo a passo e atualizar os


conteúdos de Registros e Posições de Memória.

 Programa Fonte Aula00_v0 – Teste de Mesa

Colocar valor
inicial = #AAh
Colocar valor
inicial = #04h
Aula 00
6 Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v0 – Simulação – Tela Inicial


Aula 00
6 Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v0 – Simulação – Tela Inicial – Inserir valores iniciais

Colocar valor
inicial = AAh

Colocar valor
inicial = 04h

Observar o
endereço
0007h
Aula 00
6 Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v0 – Simulação – Tela Final


Aula 00
7 Variações do Primeiro Exemplo

 Programa-Fonte Aula00_v1
 Montar o programa anterior Aula00_v0 a partir do endereço de memória 5000H.
 Usar a Diretiva da Linguagem Assembly  ORG.
 Vai gerar um erro pois não alteramos o endereço absoluto do salto para 5007H. Isso
acontece porque os saltos devem ocorrer dentro do programa.
 Solicitar para o aluno identificar o erro e corrigi-lo.
 Certificar-se de que o aluno verifique que Diretiva do Assembly não é instrução.
 Induzir o aluno procurar um solução mais prática – utilizando endereços relativos.
 Ressaltar as vantagens de se usar endereços relativos.

 Programa-Fonte Aula00_v2
 Montar o programa anterior Aula04_v1 usando endereço relativo (Rótulo ou Label).

 Programa-Fonte Aula00_v3
 Montar o programa anterior Aula04_v2 a partir do endereço de memória 5200H.
 Certificar-se de que o aluno verifique:
 que o montador atribuiu o endereço 5207H para o Rótulo ou Label definido no

programa anterior.
 As vantagens do uso de endereços relativos.
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v1

Observar o erro
ocorrido
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v1 – Simulação – Tela Inicial


 Após correção do Salto Absoluto para o endereço 5007H

Observar o
endereço 5007H
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula0_v1 – Simulação – Tela Final


 Após correção do Salto Absoluto para o endereço 5007H
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v2 – Simulação – Tela Inicial

Rótulo ou
Label - JAO
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v2 – Simulação – Tela Final


Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v3 – Simulação – Tela Inicial

Rótulo ou
Label - JAO
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE

 Programa Fonte Aula00_v3 – Simulação – Tela Final

Das könnte Ihnen auch gefallen