1. SINTAXE DA LINGUAGEM ASSEMBLY



Documentos relacionados
Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE

Linguagem de Montagem 2. Operações e Operandos

Organização de Computadores 1

Capítulo 7 Nível da Linguagem Assembly

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Entradas/Saídas. Programação por espera activa Programação por interrupções

TÉCNICAS DE PROGRAMAÇÃO

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Arquitetura do conjunto de instruções (ISA); características de instruções de máquina; tipos de operandos

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

INSTITUTO POLITÉCNICO DE BRAGANÇA ESCOLA SUPERIOR DE TECNOLOGIA E DE GESTÃO. Engenharia Electrotécnica. Microprocessadores. 2ºano - 1ºsemestre

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Trabalho Prático Nº2 Escrita e Leitura em Portos IO

Sistemas Microcontrolados

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Introdução à Engenharia de Computação

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Todos os microprocessadores hoje disponíveis em micros compatíveis com PC utilizam o funcionamento do como ponto de partida.

x86 Assembly Mini-Course

Como produzir e publicar uma apresentação online dinâmica (Prezi)

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Sistemas Operativos I

[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]

Descrição do Produto. Altus S. A. 1

Acetatos de apoio às aulas teóricas

Unidade 11: A Unidade de Controle Prof. Daniel Caetano

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

2. A influência do tamanho da palavra

Aula 14: Instruções e Seus Tipos

Algoritmos DCC 119. Introdução e Conceitos Básicos

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

Sistemas Operacionais. Prof. André Y. Kusumoto

UNIDADE 6 - PROGRAMAÇÃO MODULAR

Unidade 5: Sistemas de Representação

AULA 1: PARADIGMAS DE PROGRAMAÇÃO

Instalar uma versão do Ubuntu de 32 bits ou de 64 bits?

Linguagem de Programação

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

EEC2104 Microprocessadores

Introdução à Arquitetura de Computadores

LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) SÃO CAETANO DO SUL - SP - CEP:

Memória. Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação

Montagem e Manutenção. Luís Guilherme A. Pontes

Gerenciador de Boot Simples

Linguagens de Programação

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Arquitetura de Computadores. Tipos de Instruções

Nível da Arquitetura do Conjunto das Instruções

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Desmistificando o Programa de Computador

PROGRAMAÇÃO DE UM MICROPROCESSADOR

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Gerenciamento de memória

Como criar, editar e finalizar um vídeo (Animoto)

Reset Ligação de um sinal de reset (botão de emergência ou outro)

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Manual do Nero Burn/Burn Settings Plug-in para MCE

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Gestor de Processos Núcleo do Sistema Operativo

Arquitectura de Computadores

Mas para iniciar o uso do CRM é necessário efetuar algumas configurações em primeiro lugar.

Estrutura do tema ISC

Estrutura do programa e programação Assembly com O que entende por linguagem assembly?

Estrutura de um Computador

Entendendo as Permissões de Arquivos no GNU/Linux

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Criando uma Agenda de Reuniões

Manual do Gestor da Informação do Sistema

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI

Sistema de Memórias de Computadores

Figura 1 - O computador

Formador: Carlos Maia

Sistemas Operacionais

Descrição e análise da implementação em Assembly MIPS da função itoa

Manual do Utilizador. Manual do Utilizador Modelo10 no sisgep. Data última versão: Versão : 1.2. Data criação:

Arquitetura de Computadores. Prof. João Bosco Jr.

Aritmética de Ponto Flutuante

Memória cache. Prof. Francisco Adelton

Como enviar e receber correio eletrónico utilizando o Gmail

Introdução à Engenharia de Computação

Edeyson Andrade Gomes

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Portal do Projeto Tempo de Ser

fx-82ms fx-83ms fx-85ms fx-270ms fx-300ms fx-350ms

Em FORMATO E-LEARNING PQ A Página 1 de 6

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Capítulo 12. SUB-ROTINAS

ARQUITETURA DE COMPUTADORES

Transcrição:

1. SINTAXE DA LINGUAGEM ASSEMBLY Antes de se escrever em assembly, é conveniente construir um fluxograma do programa. Um fluxograma não faz referência à linguagem a utilizar, pelo que pode ser utilizado para programar qualquer microprocessador em qualquer linguagem. Os fluxogramas ajudam a dividir um programa grande em subprogramas, permitindo também visualizar de uma forma mais clara a construção do software para um projeto específico, o que conduz a uma implementação mais fácil. A linguagem assembly é usualmente escrita numa forma standard para que possa ser transladada para a linguagem máquina especifica, utilizando um compilador, denominado assembler, esta forma standard tem 4 campos: O primeiro campo denominado label é um nome utilizado para representar um endereço, ou uma rotina, os assemblers impõem restrições à constituição dos nomes para os labels, muito devido ao fato de serem ainda programas que desenvolvidos para funcionarem sobre o sistema operativo MS-DOS e as restrições são mais relativas ao próprio sistema operativo que ao assembler em sim mesmo. O campo OP-Code (Operation Code) contêm os mnemônicos das instruções ou caso prefiram o op.code, cada família de processadores tem o seu conjunto especifico de instruções. Os campos dos operandos contêm os registros, dados, ou endereços sendo utilizado uma virgula para separar os operandos. O ultimo campo é o dos comentários, o comentário de linha é inicializado por um ponto e virgula. Os comentários não geram código executável, servem para auxiliar o programador na construção do programa. É impensável escrever um programa sem comentários, sob o risco de se este se tornar completamente indecifrável para o próprio programador. Os comentários devem explicar o que a instrução ou conjuntos de instruções fazem. As rotinas devem ser comentadas com nome de rotina, a sua função, as suas entradas e saídas bem como registros utilizados. 1.1 Sub-Rotinas Quando um conjunto de instruções se repete várias vezes são convenientes à utilização de sub-rotinas, em que o código só é escrito uma única vez. Uma rotina começa com um label e termina sempre com a instrução RET, para se chamar à rotina é utilizada a instrução call label. Quando da chamada da sub-rotina o processador guarda na pilha o endereço da próxima instrução a ser executada, ou seja, o conteúdo do registro PC (Program Counter), seqüencialmente PCL e PCH, e carrega o PC com o endereço representado pelo label, O que significa que o processador continua a execução a partir do endereço representado por label. Quando depois de executar a rotina encontra a instrução RET, o processador carrega o PC com os valores que estão no topo da pilha, a execução continua a partir da instrução imediatamente a seguir à chamada da sub-rotina.

1.2 Desenvolvimento de um programa Para construir um programa para ser executado por um processador é necessário em primeiro lugar utilizar um processador de texto, para escreve o código fonte (instruções). Depois de escrito é necessário, utilizar um assembler que gere o código máquina, este assembler gera um documento objeto com o código das instruções em binário, e um documento de documentação que indica a localização do código na memória de programa variável utilizados banco de registros utilizados... Como o programa para ser executado é necessário ser carregado pela CPU, dependendo agora da forma de efetuar este mecanismo, é comum ser necessário converter o código maquina para um documento de formato denominado intel-hex que é compreendido pelos programadores de eprom.s, para isso é utilizado um utilitário, que permite efetuar essa conversão. 1.3 Diretivas do assembler De modo a disponibilizar o programa completamente pronto para o assembler, este deve dar algumas indicações ao assembler, por exemplo, deverá indicar onde ficam colocadas as instruções na memória de programa, quando é termina o programa... A estes comandos são designadas por diretivas do assembler, as diretivas à semelhança dos comentários não geram código executável. A diretiva ORG é seguida de um endereço que indica ao assembler, qual o endereço onde deve ser colocado o código correspondente ás instruções a seguir à diretiva ORG, é comum no caso do 8051 colocar a diretiva ORG 0000h, pois o endereço de reset do 8051 é a posição 0000h, será neste endereço que o processador vai executar a primeira instrução. A diretiva END indica ao processador que o programa terminou, ou seja, a partir dessa diretiva não é gerado mais código. A diretiva EQU define um símbolo usado para definir uma constante atribuindo um nome a uma constante, ou para definir uma variável atribuindo um nome a uma posição de memória. segundos equ 030h A diretiva db define byte, permite guardar os dados contidos no operando na memória de programa exemplo: mem db 07fh, 32h,40h db micro Guarda os bytes 7fh,32h,40h consecutivamente na memória de programa a partir dos endereços mem, db.micro., guarda o código ASCII correspondente às letras.micro., dw define word guarda em vez dos 8 bits de db, 16 bits em 2 posições consecutivas de memória, sendo o byte menos significativo guardado sempre na posição de memória de endereço menos significativo. 1.4 Macros À semelhança das sub-rotinas os macros também permitem substituir grupos de instruções que necessitem de ser repetidas várias vezes, um macro é simplesmente um conjunto de instruções com uma sintaxe especifica. teste macro A1... endm Na escrita do programa sempre que se pretender chamar a macro é só escrever o seu nome, neste caso teste. Ao contrário do que sucede com as sub-rotinas aqui nos macros o assembler substitui a chamada do macro pelo código, comparando com a utilização das sub-rotinas, é mais eficiente, pois não existe a instrução de salto nem a de retorno que torna o programa mais eficiente, tem, contudo o

inconveniente de aumentar a memória de programa, pois cada chamada implica a colocação de todo o código que constitui a macro. 1.5 Detecção de erros depuração Depois de compilar o programa caso não existam erros de sintaxe o programa pode ser executado pelo processador. Antes ainda de o testar diretamente no processador e verificar a sua funcionalidade, podem utilizando um simulador executa o programa no PC e fazer a sua depuração da sua execução, como por exemplo, o DS51 da Keil Software. 2. CONJUNTO DE INSTRUÇÕES DO 8051 2.1 Modos de endereçamento Todos os membros da família 8051 executam o mesmo conjunto de instruções. Estas instruções estão otimizadas para aplicações de 8-bits. São disponibilizados vários modos de endereçamento para acesso à memória e registros. O conjunto de instruções disponibiliza também operações bit a bit, em que a flag de carry, faz o papel desempenhado pelo acumulador em outras instruções. Endereçamento direto No endereçamento direto o operando é especificado num registro de 8 bits. Só a RAM interna e os registros de funções especiais podem utilizar este modo de endereçamento. Endereçamento Indireto Neste modo o operando especifica um registro que contem o endereço. Ambas RAM.s internas e externa podem ser indiretamente endereçadas. Os registros de endereços para 8 bits podem ser R0 ou R1, do respectivo banco que estiver selecionado ou Stack Pointer SP. No caso do endereço ser de 16 bits só pode ser utilizado o data pointer DPTR. Instruções de registros Existem instruções que permitem o acesso aos registros de R0 a R7. Como são possíveis 8 registros significa que podemos indicar qual o registro pretendido nessas instruções em apenas três bits. Instruções que podem aceder aos registros

nessa forma são eficientes no código, pois fazem com que se elimine o byte normalmente necessário para representar o endereço. Instruções especificas a registros Há instruções que são especificas a certos registros, por exemplo, algumas apenas operam com o acumulador ou com o DPTR, o op-code da instrução por si só faz isso. Endereçamento Imediato Quando um valor constante é utilizado como operando. aritméticas, lógicas e de transferência de dados. É comum em operações Endereçamento Indexado Aqui só a memória de programa pode ser acedida com este modo de endereçamentos como é obvio só pode ser utilizado para leitura. Este modo é direcionado para utilização com look-up tables, em que se pode usar como referencia da tabela o PC program counter ou o DPTR data pointer. Apresenta-se seguidamente o conjunto de instruções completo em que há a referir: Rn - representa qualquer registro de R0 a R7, recorde-se que a seleção do Banco de registros de R0 a R7 é efetuado em PSW. Ri - representa o registro R0 ou R1 direto - qualquer posição da memória RAM (representa um endereço) #data -constante de 8 bits #data16 -constante de 16 bits rel - salto relativo possível para 128 ou +127 Addr11 - Endereço (posição de memória de programa) limitado a 11bits Addr16 - Identifica qualquer posição da memória de programa (16 bits)

2.2 Instruções aritméticas

2.3 Instruções lógicas

2.4 Instruções de Transferência de dados

2.5 Instruções booleanas 2.6 Instruções de salto

2.7 Instruções que afetam as flags São indicada na figura as instruções do 8051 que afetam as flags. Em que 0, significa que a flag correspondente è colocada a.0., 1 significa que é colocada a.1. e., significa que depende do resultado da operação. Referências Secure Microcontrollers- Dallas Semiconductor, 2000 Embedded Microcontrollers and Processors, Volume I Intel, 1996