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



Documentos relacionados
Porque usar um montador? Formato de uma linha de código fonte:

Utilização do montador Daedalus. O montador e os simuladores Formatos de instruções

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Usando o simulador MIPS

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web

PDFsam. Manual de Operação. Superior Tribunal de Justiça. Fevereiro/2012 versão 01 - Manual montado por Rafael Verlangieri

Simulador do Processador Neander T&D-Bench Simulator Manual do Usuário. por Júlio César Maccali. revisado por Prof. Christian Zambenedetti

Noções de. Microsoft SQL Server. Microsoft SQL Server

SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

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

Microsoft Office Excel 2007

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Manual Signext Card Explorer

Como gerar arquivos para Sphinx Operador

SMS Corporativo Manual do Usuário

Banco de Dados BrOffice Base

Introdução à Programação

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

Este tutorial está publicado originalmente em

Aula 2 Modelo Simplificado de Computador

Criando um script simples

PROGRAMA DE GERENCIAMENTO DOS AMPLIFICADORES MR 4.50D-XT MR 6.50D-XT MR 6.80-XT Rev. 2.3 de 29/01/2014

TRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização

15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz

Gerenciador de Congressos de Iniciação Científica Manual de Instruções

Orientação a Objetos

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S.

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Iniciação à Informática

DELPHI 7 LINGUAGEM DE PROGRAMAÇÃO AMBIENTE CLIENTE SERVIDOR

Manual do usuário. Softcall Java. versão 1.0.5

Gerente de Tecnologia: Ricardo Alexandre F. de Oliveira Marta Cristiane Pires M. Medeiros Mônica Bossa dos Santos Schmid WORD 2007

Componentes da linguagem C++

FCT Faculdade de Ciências e Tecnologia Serviço Técnico de Informática STI SGCD Sistema Gerenciador de Conteúdos Dinâmicos

Aplicativo da Manifestação do Destinatário. Manual

CICLO DE APERFEIÇOAMENTO PROFISSIONAL DOS SERVIDORES MUNICIPAIS DE MARICÁ- RJ EDITOR DE TEXTO - WORD

Versão PIMACO AUTOADESIVOS LTDA. Assistente Pimaco Ajuda ao Usuário

Componentes do Computador e. aula 3. Profa. Débora Matos

Aula 03 PowerPoint 2007

Manual SAGe Versão 1.2 (a partir da versão )

Manual QuotServ Todos os direitos reservados 2006/2007

Tutorial do módulo Carteira Nacional de Militante

O WINDOWS 98 é um sistema operacional gráfico, multitarefa, produzido pela Microsoft.

Instruções de uso do TABNET. Linha, Coluna e Conteúdo

Manual Simulador de Loja

DarkStat para BrazilFW

MANUAL DE UTILIZAÇÃO

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

AULA 1 Iniciando o uso do TerraView

Dadas a base e a altura de um triangulo, determinar sua área.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Sphinx Scanner Informações gerais V

Acadêmicos: Luís Fernando Martins Nagata Gustavo Rezende Vinícius Rezende Santos

Memória Cache. Prof. Leonardo Barreto Campos 1

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

AMBIENTE DE PROGRAMAÇÃO PYTHON

Importação de Dados no Sphinx

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

MANUAL DE CONFIGURAÇÃO DO BACKUP

Manual do Ambiente Moodle para Professores

Objetivos. Página - 2

Manual do Painel Administrativo

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

Manual do usuário. v1.0

Organização de Computadores Hardware

Programação Básica em STEP 7 Símbolos. SITRAIN Training for Automation and Drives Página 4-1

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

ROTEIRO DE INSTALAÇÃO

Arquitetura de Computadores. Tipos de Instruções

LÓGICA DE PROGRAMAÇÃO

Procedimentos para Reinstalação do Sisloc

Santa Cruz do Sul, outubro de 2015.

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

LINEAR EQUIPAMENTOS RUA SÃO JORGE, TELEFONE: SÃO CAETANO DO SUL - SP - CEP

Assessoria Técnica de Tecnologia da Informação - ATTI. Projeto de Informatização da. Secretaria Municipal de Saúde do. Município de São Paulo

MANUAL DO PVP SUMÁRIO

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

A4 Projeto Integrador e Lista de Jogos

Quadro de consulta (solicitação do mestre)

Astra LX Parametrização das Amostras e Etiquetas Guia para a Configuração das Amostras e Etiquetas no Programa AstraLX.

Algoritmos e Programação Estruturada

Manual do Spectacle. Boudhayan Gupta Boudhayan Gupta Tradução: André Marcelo Alvarenga

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

Linguagem de Montagem 2. Operações e Operandos

Transcrição:

Instruções de uso do montador DAEDALUS (baseadas em texto extraído da monografia apresentada como trabalho de diplomação no curso de Bacharelado em Ciência da Computação por Luís Ricardo Schwengber, sob orientação do Professor Raul Fernando Weber) Porque usar um montador? Quando a complexidade do conjunto de instruções de um computador e o tamanho dos programas que precisamos desenvolver aumentam, a correção de erros nos programas escritos em linguagem simbólica fica mais difícil. No caso dos simuladores usados em nosso curso, no modo de endereçamento direto não é possível o uso de endereços simbólicos, ou seja, não podemos fazer referência a posições de memória através de nomes; precisamos colocar os próprios endereços. Quando é preciso inserir instruções no meio do código, todas as instruções que referenciam endereços posteriores a ponto de inserção normalmente precisam ser modificadas. Com um montador, são usados nomes associados às instruções ou variáveis/constantes que as instruções referenciam. Quando a posição destas na memória muda, o próprio montador se encarrega de recalcular os endereços e acertar as referências nas instruções. Além disso, um montador representa uma ferramenta indispensável para se desenvolver programas com maior robustez e confiabilidade. Para tanto, é necessário embutir no mesmo recursos que tornem mais natural a tarefa de codificação da linguagem simbólica, o que é feito através de: Possibilidade de declaração de rótulos, que são usados para designar tanto valores de variáveis/constantes como instruções. Um rótulo corresponde a uma posição de memória e substitui um endereço, seja este de um operando ou um endereço de desvio. Existência de diretivas de montagem, também denominadas pseudo-instruções ou comandos do montador. A maioria das diretivas são usadas para controlar a montagem do programa objeto (usadas somente em tempo de montagem) e não geram código. Outras são usadas para gerar variáveis e constantes, atribuindo nomes às mesmas e definindo seus valores (ou simplesmente reservando espaço para elas, no caso de variáveis não inicializadas). Para uma mesma arquitetura pode haver várias implementações diferentes de um montador. Normalmente, os mesmos mnemônicos são aceitos por todas as implementações, de modo que haverá diferença entre as implementações apenas na quantidade e qualidade das aplicações das diretivas. Formato de uma linha de código fonte: Um programa fonte para o montador Daedalus é composto por uma série de linhas de código fonte, cada linha contendo instruções ou diretivas do montador. Linhas contendo instruções Uma linha de instrução contém um mnemônico de uma instrução e irá gerar exatamente uma instrução de máquina. Seu formato geral apresenta vários campos. Os colocados entre colchetes no formato abaixo são opcionais: [RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO] Um campo de rótulo é um símbolo definido pelo usuário ao qual é atribuído o valor corrente do contador de programa, e que é introduzido na tabela de símbolos do montador.

2 Portanto um rótulo não pode ser redefinido. O rótulo deve começar na primeira posição da linha (coluna 1) e deve ser seguido por um caractere dois-pontos (:), que não faz parte do rótulo. Para criar os rótulos, veja as regras de formação de símbolos, adiante. Um campo de mnemônico identifica uma instrução de uma das máquinas descritas (Ramses ou Cesar) e corresponde a uma única instrução executável. Deve ser colocado após o ":" que segue o rótulo, separado deste por pelo menos um espaço. Se não houver rótulo na linha, o mnemônico deve começar pelo menos na coluna 2. Campos de operando podem conter zero ou mais operandos separados conforme a notação vista em aula para o código simbólico de cada instrução. A quantidade de operandos depende da instrução especificada pelo mnemônico. Os operandos devem ser separados do mnemônico por pelo menos um espaço. Um campo de comentário começa com um ponto-e-vírgula (;) e termina com o caractere de nova linha. Ele deve ser separado dos operandos - se existirem - ou do mnemônico - se não houver operandos - por pelo menos um espaço. Linhas contendo instruções Uma linha de diretiva também contém vários campos opcionais: [NOME:] DIRETIVA [OPERANDOS] [;COMENTÁRIO] Diferente de um campo de mnemônico, uma diretiva (pseudo-instrução) desenvolve alguma função durante o processo de montagem, não produzindo qualquer código executável, mas pode reservar e inicializar espaço de dados do programa. Para criar os nomes usados nas diretivas, veja as regras de formação de símbolos, adiante. Dentre as várias diretivas implementadas encontram-se as seguintes: DB reserva um byte para variáveis, permitindo opcionalmente inicializá-las com um valor decimal ou hexa. Formato: [nome-variável] DB valorinicial DW reserva dois bytes (uma palavra do processador César = 16 bits) para variáveis, permitindo opcionalmente inicializá-las com um valor decimal ou hexa. Formato: [nome-variável] DW valorinicial DAB reserva um array de bytes (8 bits) para variáveis, permitindo opcionalmente inicializá-las valores decimais ou hexadecimais. O usuário pode especificar um número entre parênteses, o que gerará um array iniciando na posição de memória referenciada pelo nome da variável e com o valor padrão 0 de

3 tamanho de 1 byte, ou então definir os elementos do array utilizando os separadores definidos. Formato: [nome-variável] DAB valor1,valor2,...,valorn ou [nome-variável] DAB [númerodebytes] DAW reserva um array de palavras (16 bits) para variáveis, permitindo opcionalmente inicializá-las com valores decimais ou hexadecimais. Independente da máquina será gerado um array usando-se a notação big endian. O usuário pode especificar um número entre parênteses, o que gerará um array iniciando na posição de memória referenciada pelo nome da variável e com o valor padrão 0 de tamanho de 2 bytes, ou então definir os elementos do array utilizando os separadores definidos. Formato: [nome-variável] DAW valor1,valor2,...,valorn ou [nome-variável] DAW [númerodeword s] Formato: ORG Altera o valor do contador de posição. Após encontrar um diretiva ORG, o montador passa a colocar o código gerado a partir do endereço especificado pelo ORG. Essa diretiva é útil para separar a área de códigos da de variáveis. O montador toma o cuidado de emitir um aviso (Warning) sobre o fato de se estar sobrescrevendo uma posição de memória já utilizada ou ainda estar ultrapassando o tamanho de memória existente da máquina específica. ORG posiçãomemória Símbolos e Constantes Um símbolo (usado como rótulo de uma instrução ou nome nas diretivas que geram áreas de dados, bem como para referenciar as mesmas nas instruções) pode conter até 1024 caracteres, mas é recomendável utilizar poucos para não comprometer a performance de gerência de strings. As regras para a definição de um símbolo são: O primeiro caractere não pode ser numérico; Os outros caracteres podem ser a-z, A-Z, 0-9 e sublinha ( _ ); Constantes são usadas na codificação de instruções e na definição de valores em diretivas. Uma constante pode ser representada por um valor decimal, escrito em sua forma natural ou então por um valor hexadecimal (cujo primeiro dígito deve ser numérico), representado com o valor precedido pela letra H. Nas diretivas DB, DW, DAB e DAW podem adicionalmente ser utilizados caracteres ASCII individuais (entre apóstrofes, como em 'A').

4 Exemplos: MOV #15,R0 LDR A #15 MOV #H0ABC,2002 DB 5 DB H1A DW 0 DW H2A1 DAB 10, H15, 5, H0D DAW 65000, H0FFF DB 'A' DB 'A','B','C' DW 'A' Implementação O programa montador foi desenvolvido na linguagem Object Pascal, adotada pela ferramenta de desenvolvimento Delphi, versão 4.0 (build 5.33) da Borland Inprise Corporation. A interface básica oferece a possibilidade de edição de arquivos fonte que podem ser carregados de arquivos gravados anteriormente pelo montador ou escritos desde seu início. Para obter-se o mapa de memória gerado para uma máquina em específico basta escolher uma das opções disponíveis e clicar no botão para executar a montagem. As capturas de tela a seguir foram feitas com a versão preliminar do montador. Algumas características (máquinas alvo e nomes de diretivas) foram alteradas na versão ALFA, que está sendo colocada à disposição em ftp://inf.ufrgs.br/pub/inf108. Figura 3.1 - Edição e montagem de um arquivo fonte Na parte inferior da janela de edição existe um campo de saída, onde o programa exibe avisos eventualmente gerados durante o processo de montagem. Ele é muito útil na

5 verificação em tempo de programação das incoerências introduzidas no texto a ser utilizado na montagem. É possível visualizar o mapa de memória gerado através do menu View do montador, sendo que se pode escolher valores hexa ou decimais para sua apresentação. A visualização do mapa de memória da máquina hipotética CESAR, por ser de 64kbytes, pode ser um tanto demorada, mas é feita apenas após um processo de montagem. Após a geração do mapa de memória é possível carregá-lo nos simuladores já referenciados, e cuja compatibilidade é garantida para cada máquina individualmente, sem necessidade de configurações quaisquer. Figura 3.2 - Carga do mapa de memória gerado num dos simuladores disponíveis Listagem da tabela de símbolos O montador, além de gerar um mapa de memória compatível para a carga nos simuladores disponíveis, também gera em um arquivo denominado tabsimb.txt a listagem da tabela de símbolos e seus respectivos valores tanto em hexa como em decimal.

6 Figura 3.3 - Listagem da Tabela de Símbolos