Embedded Systems
  • Microcontroladores e Sistemas Embarcados
  • Introdução aos sistemas embarcados
  • Sistemas Microcontrolados
    • Visão geral da organização de um sistema computacional
    • Modelos de Arquitetura
    • Estrutura básica de um microcontrolador genérico
  • Periféricos Mapeados em Memória
    • Configuração de Registradores
  • Programação
    • Programação em Linguagem de Montagem
    • Compilação
  • Intel MSC-51
    • Arquitetura e Organização do 8051
    • Características Gerais de Operação
    • Mapa de Memória
    • Conjunto de Instruções e Modos de Endereçamento
    • Interrupções
    • Portas de Entradas/Saídas Digitais
    • Módulo Contador/Temporizador
    • Comunicação Serial Assíncrona
  • Processadores Cortex-M0+
    • Arquitetura
    • Sistema de interconexão
    • Arquitetura do Conjunto de Instruções (ISA)
    • Modos de operação
    • Programação
      • Keil uVision
  • Freedom Board: KL25Z
    • Família de microcontroladores KL25Z
    • Terminais do microcontrolador
    • Interface de configuração
    • Programação
      • Keil uVision
      • Chamada de funções em Assembly
      • Configuração de Registradores em C
      • Utilizando o CMSIS nas aplicações
  • Dicionário
  • Apêndice A: Sistemas de Numeração
  • [Em desenvolvimento] Apêndice B: Números Sinalizados
Powered by GitBook
On this page
  • Definindo o código que será executado: Lista de Instruções
  • Exemplos
  1. Processadores Cortex-M0+

Programação

PreviousModos de operaçãoNextKeil uVision

Last updated 6 years ago

O desenvolvimento de um depende da ferramenta utilizada. Para os códigos mostrados nesse texto será utilizado o padrão ARM assembly. Cabe ressaltar que atualmente os códigos em assembly são escritos seguindo o padrão (do inglês, Unified Assembler Language). A seguir são apresentadas algumas convenções do montador.

Definindo o código que será executado: Lista de Instruções

Cada linha de código – que possui uma instrução – segue o seguinte formato:

label mnemônico operando1, operando2, . ; Comentários

  • label: é utilizado para referenciar o endereço que a instrução está. É opcional, e pode ser utilizado como referência em outras instruções (instruções de desvio). Também pode ser utilizado como referência para o endereço de um dado. É importante ressaltar que o label deve iniciar na primeira coluna da linha (sem espaço).

  • mnemônico: é utilizado para indicar a instrução. Dependendo da instrução é necessário indicar os operandos.

  • Para operações de escrita na memória, o primeiro operando indica a origem, isto é, o registrador que contém o dado que será gravado na memória.

  • Para operações de leitura da memória, o primeiro operando indica o destino, isto é, o registrador que que receberá a informação que está na memória.

  • Instruções no formato ARM usam o primeiro operando como destino da operação.

  • Por fim, os comentários do programa são precedidos do símbolo ‘;’.

Exemplos

Alguns exemplos são mostrados a seguir.

No padrão UAL o sufixo S deve ser utilizado nas instruções que alteram o conteúdo do registrador APSR.

Carregar um registrador com um valor constante (#constante) de 8 bits.

  • MOVS R0,#10 ; R0 = 10

  • MOVS R0,#0x0A ; R0 = 10

Movimentação de dados entre registradores

  • MOV R0,R1

Adição entre um registrador e uma constante de 3 bits

  • ADDS R0,R0,#1 ; R0 = R0 + 1

  • ADDS R1,R0,#1 ; R1 = R0 + 1

Adição entre um registrador e uma constante de 8 bits

  • ADDS R0,#10 ; R0 = R0 + 10

Adição entre registradores

  • ADD R0,R1 ; R0 = R0 + R1

Comparação entre registradores

  • CMP R0,R1 ;Z flag =1 se R0==R1

Desvio condicional

  • BEQ label ; salta para o endereço indicado se Z flag = 1

Desvio incondicional

  • B label ; salta para o endereço indicado

Cabe, nesse ponto, apresentar o conteúdo do registrador APSR, em que N, Z, C e V representam, respectivamente: Valor negativo; Valor zero; Carry ou Borrow; Overflow.

Para conferir todas operações realizadas na execução das instruções, consulte esta referência: .

programa
UAL
The Cortex-M0+ Instruction Set