Neste trabalho pretendo dar a conhecer a programação de Microprocessadores.
A tendência atual é a favor de uma programação mista, usando principalmente linguagens de mais alto nível (C em particular) e recorrendo à linguagem Assembly apenas em rotinas onde a eficiência do código seja o objetivo principal a atingir.
Disciplina: Arquitetura de Computadores
Este documento fornece instruções sobre programação em Assembly. Aborda os principais tópicos como registradores, instruções, estrutura de programas, criação de programas e exemplos.
O documento descreve a linguagem assembly, incluindo:
1) Assembly é uma abstração simbólica da linguagem de máquina, mapeada diretamente em instruções de hardware.
2) Cada comando em assembly corresponde a uma instrução de máquina e permite acesso a todas as características do hardware.
3) Assembly é usado quando é necessário alto desempenho ou acesso direto ao hardware, como em drivers e partes críticas de aplicações.
O documento descreve objetivos e procedimentos para instalação e configuração de dispositivos internos e externos no computador, identificação de avarias comuns nesses dispositivos, e solução de problemas como arranque sem sinal no monitor, sistema bloqueado, problemas com rato, teclado, discos e periféricos.
O documento apresenta uma aula sobre organização e estrutura de computadores. Ele define as diferenças entre arquitetura e organização de computadores, mostra a evolução histórica dos computadores e explica os principais componentes de um computador, incluindo unidades de entrada, saída, armazenamento e processamento.
O documento discute a estrutura dos sistemas operacionais. Apresenta o kernel como o conjunto de rotinas e serviços oferecidos pelo sistema operacional. Descreve os modos de acesso kernel e usuário e o mecanismo de system calls. Explora diferentes arquiteturas de kernel, incluindo monolítica, em camadas e microkernel, assim como o modelo de máquina virtual.
O documento apresenta um conjunto de exercícios sobre arquitetura e organização de computadores para uma disciplina na área de tecnologia em análise e desenvolvimento de sistemas. Os exercícios incluem identificar componentes de unidades básicas de um computador, escolher a alternativa correta para completar uma afirmação sobre a máquina de von Neumann e indicar o objetivo da memória cache.
1) O documento descreve as etapas da inicialização de um sistema operacional, incluindo a execução do POST pela BIOS, a leitura do MBR pelo BIOS e o carregamento do núcleo do sistema operacional.
2) É explicado que o MBR contém informações sobre as partições do disco rígido que permitem ao BIOS carregar o código de inicialização da partição de boot.
3) As principais etapas da inicialização são a execução do POST pela BIOS, a leitura do MBR para identificar a partição de boot e o
Este documento fornece instruções sobre programação em Assembly. Aborda os principais tópicos como registradores, instruções, estrutura de programas, criação de programas e exemplos.
O documento descreve a linguagem assembly, incluindo:
1) Assembly é uma abstração simbólica da linguagem de máquina, mapeada diretamente em instruções de hardware.
2) Cada comando em assembly corresponde a uma instrução de máquina e permite acesso a todas as características do hardware.
3) Assembly é usado quando é necessário alto desempenho ou acesso direto ao hardware, como em drivers e partes críticas de aplicações.
O documento descreve objetivos e procedimentos para instalação e configuração de dispositivos internos e externos no computador, identificação de avarias comuns nesses dispositivos, e solução de problemas como arranque sem sinal no monitor, sistema bloqueado, problemas com rato, teclado, discos e periféricos.
O documento apresenta uma aula sobre organização e estrutura de computadores. Ele define as diferenças entre arquitetura e organização de computadores, mostra a evolução histórica dos computadores e explica os principais componentes de um computador, incluindo unidades de entrada, saída, armazenamento e processamento.
O documento discute a estrutura dos sistemas operacionais. Apresenta o kernel como o conjunto de rotinas e serviços oferecidos pelo sistema operacional. Descreve os modos de acesso kernel e usuário e o mecanismo de system calls. Explora diferentes arquiteturas de kernel, incluindo monolítica, em camadas e microkernel, assim como o modelo de máquina virtual.
O documento apresenta um conjunto de exercícios sobre arquitetura e organização de computadores para uma disciplina na área de tecnologia em análise e desenvolvimento de sistemas. Os exercícios incluem identificar componentes de unidades básicas de um computador, escolher a alternativa correta para completar uma afirmação sobre a máquina de von Neumann e indicar o objetivo da memória cache.
1) O documento descreve as etapas da inicialização de um sistema operacional, incluindo a execução do POST pela BIOS, a leitura do MBR pelo BIOS e o carregamento do núcleo do sistema operacional.
2) É explicado que o MBR contém informações sobre as partições do disco rígido que permitem ao BIOS carregar o código de inicialização da partição de boot.
3) As principais etapas da inicialização são a execução do POST pela BIOS, a leitura do MBR para identificar a partição de boot e o
O objetivo do Curso de Introdução à Informática é:
- Apresentar tópicos gerais sobre Informática, possibilitando uma visão histórica do desenvolvimento da Informática;
- Realizar exercícios práticos para a aquisição e utilização de equipamentos;
- Promover um conhecimento teórico a respeito das tecnologias envolvidas na manipulação de informações.
A ideia não é esgotar qualquer assunto abordado, e sim, iniciar os alunos em Informática e permitir que busquem informações adicionais de maneira consciente e organizada.
Módulo 1 - O Computador
- Histórico;
- Código Binário, Bit e Byte;
- Mainframes;
- Classificação dos Computadores;
- Tipos de Microcomputadores.
O documento apresenta os principais conceitos de computação, incluindo a história dos computadores desde o ábaco até as gerações modernas, a arquitetura de Von Neumann e seus componentes centrais, e explora o funcionamento de componentes como CPU, memória e entrada/saída.
Introdução à Arquitetura de ComputadoresMauro Pereira
Este documento fornece uma introdução à arquitetura de computadores e sistemas operacionais. Ele discute conceitos como arquitetura, organização, abstração e histórico das gerações de computadores, desde as máquinas da primeira geração baseadas em válvulas até as atuais arquiteturas x86 e ARM. O documento também apresenta os principais componentes de um computador e sua estrutura hierárquica.
O documento apresenta uma lista de exercícios sobre conceitos de hardware para a disciplina de Informática. A lista inclui questões sobre chips, conversão entre bases numéricas, elementos do hardware de um computador, tipos de memória e unidades de entrada, saída e armazenamento.
O documento apresenta o modelo de Von Neumann, descrevendo suas principais características como a divisão em três sistemas de hardware (UCP, memória principal e entrada/saída), a capacidade de executar instruções sequencialmente e o gargalo de Von Neumann. Também explica o ciclo de execução das instruções nestas máquinas.
O documento discute técnicas de detecção de avarias em computadores, listando os principais sintomas de problemas (não liga, liga sem imagem, trava), possíveis causas (fonte, placa de vídeo, memória) e métodos de resolução (configuração da BIOS, códigos de beep, substituição de componentes).
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
Neste slide estaremos falando sobre Estrutura de Repetição em Pseudocódigo ou Portugol utilizando características e regras da programação na ferramenta Visualg.[Aula para curso técnico]
Trabalho sobre periféricos de entrada, saída, entrada e de entrada saídaTaniabastos15
Os periféricos são dispositivos que enviam ou recebem informações para/do computador e incluem periféricos de entrada, saída e entrada/saída. Exemplos de periféricos de entrada são teclados, mouse e scanners, enquanto monitores e impressoras são periféricos de saída e monitores touchscreen e placas de rede podem enviar e receber dados.
O documento descreve os principais componentes de hardware de um sistema de computador, incluindo: (1) processador, memória e placas-mãe que manipulam e armazenam dados; (2) dispositivos de entrada e saída que permitem a interação com o usuário; e (3) unidades de armazenamento secundário que armazenam dados de forma não-volátil.
Aula Introdução a Arquitetura e Organização de ComputadoresGilvan Latreille
O documento apresenta os principais conceitos e tópicos sobre arquitetura e organização de computadores, incluindo a história dos computadores, organização básica da CPU e memória, barramentos, memória interna e externa, e tendências futuras.
O documento resume os principais componentes de hardware de um computador, incluindo o gabinete, processador, memória RAM, placa-mãe, placa de vídeo, disco rígido e periféricos como monitor, teclado e mouse. Explica brevemente o que cada componente faz e inclui imagens para ilustrar.
O documento fornece uma introdução aos sistemas operativos, definindo-os como um conjunto de programas que permitem a interação entre o usuário, hardware e aplicativos. Explora conceitos-chave como processos, memória, arquivos e periféricos, e classifica sistemas operativos de acordo com fatores como número de usuários e programação simultânea.
O documento discute a arquitetura e organização de computadores, definindo arquitetura como os atributos visíveis ao programador e organização como as unidades operacionais que implementam a arquitetura. Também descreve a estrutura hierárquica de um computador, com subsistemas que realizam funções como processamento, armazenamento, transferência e controle de dados.
O documento discute a arquitetura de microprocessadores, definindo a CPU como o cérebro do computador e descrevendo seus principais componentes, como a unidade aritmética e lógica e a unidade de controle. Também aborda a arquitetura de Von Neumann, memória cache e características como número de núcleos e frequências de relógio.
A placa-mãe conecta todos os componentes do computador, incluindo o processador, memória RAM, disco rígido e outros. Ela contém slots para expansão, conectores para periféricos e chips responsáveis por controlar a comunicação entre componentes.
O documento apresenta conceitos básicos sobre linguagem assembly, incluindo sua natureza como linguagem de baixo nível e não estruturada, além de exemplos de instruções e programas simples em assembly para realizar operações matemáticas e lógicas e manipulação de memória e pilhas.
O documento descreve as classificações de sistemas operacionais de acordo com sua capacidade de processamento (fortemente acoplados, fracamente acoplados), número de usuários (monoutilizador, multiutilizador) e número de tarefas (monotarefa, multitarefa). Também discute as interfaces gráficas e de linha de comando.
O documento apresenta um curso de manutenção de computadores ministrado pelo professor Guilherme Nonino Rosa. A primeira aula inclui uma introdução ao curso, normas do laboratório, critérios de avaliação e uma breve história dos computadores desde as primeiras máquinas mecânicas de calcular até os computadores modernos.
O documento discute os principais componentes de um computador, como processador, memória cache e velocidade do processador. Também apresenta as principais marcas de processadores, como Intel e AMD, e modelos específicos como o Intel Core i3, i5, i7 e i9. Por fim, dá dicas sobre como escolher um bom notebook dentro de um orçamento limitado.
O documento descreve os principais componentes e características de sistemas operacionais, incluindo o papel do núcleo, as interfaces gráficas e de linha de comando, exemplos de sistemas operacionais atuais e descontinuados, e as diferenças entre sistemas operacionais monotarefa e multitarefa.
O documento introduz conceitos básicos sobre sistemas de informação e programação. Discute o que é um computador e programa, as partes estruturais de um programa, linguagens de programação, e as etapas do desenvolvimento de um programa.
O documento discute conceitos de linguagens de programação, incluindo interpretação pura, interpretação híbrida e ambientes de programação. Ele explica que a interpretação pura executa programas diretamente sem compilação, enquanto sistemas híbridos geram código intermediário para melhor desempenho. Também descreve ferramentas comuns em ambientes de programação como editores de texto e depuradores.
O objetivo do Curso de Introdução à Informática é:
- Apresentar tópicos gerais sobre Informática, possibilitando uma visão histórica do desenvolvimento da Informática;
- Realizar exercícios práticos para a aquisição e utilização de equipamentos;
- Promover um conhecimento teórico a respeito das tecnologias envolvidas na manipulação de informações.
A ideia não é esgotar qualquer assunto abordado, e sim, iniciar os alunos em Informática e permitir que busquem informações adicionais de maneira consciente e organizada.
Módulo 1 - O Computador
- Histórico;
- Código Binário, Bit e Byte;
- Mainframes;
- Classificação dos Computadores;
- Tipos de Microcomputadores.
O documento apresenta os principais conceitos de computação, incluindo a história dos computadores desde o ábaco até as gerações modernas, a arquitetura de Von Neumann e seus componentes centrais, e explora o funcionamento de componentes como CPU, memória e entrada/saída.
Introdução à Arquitetura de ComputadoresMauro Pereira
Este documento fornece uma introdução à arquitetura de computadores e sistemas operacionais. Ele discute conceitos como arquitetura, organização, abstração e histórico das gerações de computadores, desde as máquinas da primeira geração baseadas em válvulas até as atuais arquiteturas x86 e ARM. O documento também apresenta os principais componentes de um computador e sua estrutura hierárquica.
O documento apresenta uma lista de exercícios sobre conceitos de hardware para a disciplina de Informática. A lista inclui questões sobre chips, conversão entre bases numéricas, elementos do hardware de um computador, tipos de memória e unidades de entrada, saída e armazenamento.
O documento apresenta o modelo de Von Neumann, descrevendo suas principais características como a divisão em três sistemas de hardware (UCP, memória principal e entrada/saída), a capacidade de executar instruções sequencialmente e o gargalo de Von Neumann. Também explica o ciclo de execução das instruções nestas máquinas.
O documento discute técnicas de detecção de avarias em computadores, listando os principais sintomas de problemas (não liga, liga sem imagem, trava), possíveis causas (fonte, placa de vídeo, memória) e métodos de resolução (configuração da BIOS, códigos de beep, substituição de componentes).
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
Neste slide estaremos falando sobre Estrutura de Repetição em Pseudocódigo ou Portugol utilizando características e regras da programação na ferramenta Visualg.[Aula para curso técnico]
Trabalho sobre periféricos de entrada, saída, entrada e de entrada saídaTaniabastos15
Os periféricos são dispositivos que enviam ou recebem informações para/do computador e incluem periféricos de entrada, saída e entrada/saída. Exemplos de periféricos de entrada são teclados, mouse e scanners, enquanto monitores e impressoras são periféricos de saída e monitores touchscreen e placas de rede podem enviar e receber dados.
O documento descreve os principais componentes de hardware de um sistema de computador, incluindo: (1) processador, memória e placas-mãe que manipulam e armazenam dados; (2) dispositivos de entrada e saída que permitem a interação com o usuário; e (3) unidades de armazenamento secundário que armazenam dados de forma não-volátil.
Aula Introdução a Arquitetura e Organização de ComputadoresGilvan Latreille
O documento apresenta os principais conceitos e tópicos sobre arquitetura e organização de computadores, incluindo a história dos computadores, organização básica da CPU e memória, barramentos, memória interna e externa, e tendências futuras.
O documento resume os principais componentes de hardware de um computador, incluindo o gabinete, processador, memória RAM, placa-mãe, placa de vídeo, disco rígido e periféricos como monitor, teclado e mouse. Explica brevemente o que cada componente faz e inclui imagens para ilustrar.
O documento fornece uma introdução aos sistemas operativos, definindo-os como um conjunto de programas que permitem a interação entre o usuário, hardware e aplicativos. Explora conceitos-chave como processos, memória, arquivos e periféricos, e classifica sistemas operativos de acordo com fatores como número de usuários e programação simultânea.
O documento discute a arquitetura e organização de computadores, definindo arquitetura como os atributos visíveis ao programador e organização como as unidades operacionais que implementam a arquitetura. Também descreve a estrutura hierárquica de um computador, com subsistemas que realizam funções como processamento, armazenamento, transferência e controle de dados.
O documento discute a arquitetura de microprocessadores, definindo a CPU como o cérebro do computador e descrevendo seus principais componentes, como a unidade aritmética e lógica e a unidade de controle. Também aborda a arquitetura de Von Neumann, memória cache e características como número de núcleos e frequências de relógio.
A placa-mãe conecta todos os componentes do computador, incluindo o processador, memória RAM, disco rígido e outros. Ela contém slots para expansão, conectores para periféricos e chips responsáveis por controlar a comunicação entre componentes.
O documento apresenta conceitos básicos sobre linguagem assembly, incluindo sua natureza como linguagem de baixo nível e não estruturada, além de exemplos de instruções e programas simples em assembly para realizar operações matemáticas e lógicas e manipulação de memória e pilhas.
O documento descreve as classificações de sistemas operacionais de acordo com sua capacidade de processamento (fortemente acoplados, fracamente acoplados), número de usuários (monoutilizador, multiutilizador) e número de tarefas (monotarefa, multitarefa). Também discute as interfaces gráficas e de linha de comando.
O documento apresenta um curso de manutenção de computadores ministrado pelo professor Guilherme Nonino Rosa. A primeira aula inclui uma introdução ao curso, normas do laboratório, critérios de avaliação e uma breve história dos computadores desde as primeiras máquinas mecânicas de calcular até os computadores modernos.
O documento discute os principais componentes de um computador, como processador, memória cache e velocidade do processador. Também apresenta as principais marcas de processadores, como Intel e AMD, e modelos específicos como o Intel Core i3, i5, i7 e i9. Por fim, dá dicas sobre como escolher um bom notebook dentro de um orçamento limitado.
O documento descreve os principais componentes e características de sistemas operacionais, incluindo o papel do núcleo, as interfaces gráficas e de linha de comando, exemplos de sistemas operacionais atuais e descontinuados, e as diferenças entre sistemas operacionais monotarefa e multitarefa.
O documento introduz conceitos básicos sobre sistemas de informação e programação. Discute o que é um computador e programa, as partes estruturais de um programa, linguagens de programação, e as etapas do desenvolvimento de um programa.
O documento discute conceitos de linguagens de programação, incluindo interpretação pura, interpretação híbrida e ambientes de programação. Ele explica que a interpretação pura executa programas diretamente sem compilação, enquanto sistemas híbridos geram código intermediário para melhor desempenho. Também descreve ferramentas comuns em ambientes de programação como editores de texto e depuradores.
O documento descreve a linguagem de programação Assembly, uma das primeiras linguagens criadas na década de 1950 para programar computadores que usavam válvulas. O Assembly mapeia diretamente as instruções de máquina para códigos mais fáceis de ler pelo programador. Apesar de ser difícil de usar, o Assembly permite que programas sejam executados de forma rápida e eficiente, interagindo diretamente com o hardware.
O documento descreve: 1) O que é uma linguagem de programação e seus componentes; 2) Os tipos de linguagens de programação - de baixo e alto nível; 3) O que é um compilador e como ele traduz códigos de alto para baixo nível.
- Compilação e Interpretação envolvem a tradução de código-fonte para linguagem de máquina. Interpretadores traduzem linha a linha em tempo real, enquanto compiladores traduzem todo o código de uma vez gerando um arquivo objeto.
Uma linguagem de programação é um método padronizado para comunicar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias. Linguagens de programação podem ser usadas para expressar algoritmos com precisão.
O documento introduz os principais paradigmas de programação e conceitos básicos de implementação de linguagens de programação, discutindo a motivação para o estudo de linguagens de programação e definindo o que é uma linguagem de programação.
O documento discute as diferenças entre arquiteturas CISC e RISC. CISC usa instruções complexas que podem levar vários ciclos para executar e podem referenciar a memória, enquanto RISC usa instruções simples que executam em um ciclo e apenas instruções LOAD e STORE podem referenciar a memória. RISC também usa mais registradores e menos modos de endereçamento para melhorar o desempenho.
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasNatanael Simões
O documento discute as diferenças entre linguagens compiladas e interpretadas. Linguagens compiladas traduzem o código diretamente para linguagem de máquina, enquanto linguagens interpretadas primeiro traduzem para um código intermediário que é então traduzido para linguagem de máquina por uma máquina virtual. O documento também descreve os processos de compilação e interpretação, além de comparar as vantagens e desvantagens de cada abordagem.
Slides do primeiro dia do Workshop (intensivo :) ) sobre Introdução à Programação de Dispositivos Móveis (Google Android, Apple iPhone, iPod Touch e iPad)
O documento discute conjuntos de instruções e como programas são traduzidos para a linguagem de máquina. Explica que instruções são palavras na linguagem da máquina e que conjuntos de instruções diferem entre arquiteturas. Também descreve os níveis de abstração entre linguagens de programação, montagem e máquina.
O documento discute técnicas de engenharia reversa no Linux, incluindo o que é engenharia reversa, formatos de arquivos binários como ELF, ferramentas como strings, readelf e objdump, empacotadores como UPX, e debugando com gdb.
Este documento fornece um resumo sobre a linguagem de programação C. O documento apresenta um curso introdutório sobre C, abordando seus fundamentos, características, histórico e estrutura básica de um programa em C.
O documento fornece uma introdução ao .NET Framework, abordando tópicos como CLR, Metadata, Assemblies, CTS, CLS, MSIL e outras tecnologias fundamentais da plataforma .NET.
O documento discute linguagens de programação, explicando que elas permitem comunicar instruções para computadores de forma padronizada e expressar algoritmos com precisão. Também destaca que as linguagens de programação tornam os programas menos dependentes de hardware específico e podem ser convertidas para código de máquina por compilação ou interpretação.
Construção de compiladores - introducao Compilador.pdfGerhard Saboia
O documento apresenta uma introdução sobre compiladores de linguagens de programação. Discute os tipos de linguagens como máquina, assembly e de alto nível. Explica o processo de compilação, onde um compilador traduz um programa de alto nível para a linguagem de máquina. Também aborda interpretação versus compilação e a estrutura típica de um compilador moderno.
Aula 2 programas e linguagens de programaçãoLCCIMETRO
O documento discute as características principais das linguagens de programação, incluindo: 1) a definição de linguagem de programação, programa e código fonte; 2) os tipos de instruções em uma linguagem de programação; e 3) a classificação de linguagens de programação em máquina, assembly, e de alto nível.
O documento discute as principais linguagens de programação, como surgiram e onde são utilizadas atualmente. Aborda os paradigmas de programação, a diferença entre interpretador e compilador e como funciona um compilador. Apresenta exemplos de linguagens como Assembly, Fortran, Pascal, COBOL, C, C++, Java, PHP e Shell Script.
O documento apresenta conceitos básicos sobre computadores, hardware, software, sistemas operacionais, linguagens de programação e algoritmos. Explica que hardware são os componentes físicos de um computador, software são as instruções para o hardware executar tarefas e sistemas operacionais gerenciam os recursos de hardware. Também define linguagens de programação, algoritmos e variáveis, e fornece exemplos de como representar e escrever algoritmos simples em pseudocódigo.
Semelhante a Programação de Microprocessadores (20)
Neste trabalho, falo nomeadamente sobre a definição do Corpo Humano, abordo os níveis de organização, os seus órgãos e também sobre os diversos sistemas que este representa.
Disciplina: Educação Física, Ciências, etc.
Neste trabalho pretendo dar a conhecer o software Open Source (OSS).
Partindo de ideais de partilha, as soluções Open Source têm uma contribuição fundamental para a inovação fora da indústria de software. Elas permitem a leitura, a partilha e a disposição de diferentes programas, agregando benefícios como a redução de custos e maior transparência para o utilizador. Contribuem, também, para a transformação digital, unindo organizações a sistemas ágeis e flexíveis.
Disciplina: Sistemas Operativos
Neste trabalho pretendo dar a conhecer um dos problemas mais graves, sérios e atuais do desporto: “A Dopagem e os riscos de vida e/ou Saúde”, ou seja, o doping.
Pretendo definir e explicar em que consiste a prática do doping, os seus vários métodos, as suas técnicas e os diferentes tipos de drogas usadas, que capacidades físicas é que melhoram e quais os problemas que podem provocar à saúde dos desportistas.
Disciplina: Educação Física
O documento descreve diferentes tipos de danças e suas histórias, incluindo danças sociais, latinas e balé. Ele discute a importância da dança no processo de ensino-aprendizagem e fornece detalhes sobre o desenvolvimento histórico de danças como a valsa e o tango.
2. Índice
Introdução
Em que consiste a Linguagem Assembly e o Sistema Binário
Em que consiste o funcionamento de um Sistema Operativo a baixo nível
Onde é utilizada?
Microprocessador, Mnemônicos, Assembler, Nibble, Byte
Comando básico de um processador
Programação e Instalação em Assembly
Processo de criação de programas
Software necessário
Registos da CPU e seus nomes
Estrutura Assembly
Implementação de Chamadas de Sistema e os seus tipos
Características Particulares
Estrutura da Programação
Vantagens e Desvantagens
O que é o "debugging" de pequenos programas em Assembly?
Tratamento de ficheiros
O que é device drivers?
Conclusão
DIOGO SILVA 2
3. Introdução
Saber programar em linguagem Assembly significa conhecer e saber usar melhor
os requisitos mais íntimos de um microprocessador, e desse modo, saber
controlar melhor as funções de um computador digital.
É usada na criação e desenvolvimento de rotinas escritas nas formas de DLLs,
drivers, programas adaptados (computadores de bordo), etc.
Algumas linguagens de alto nível possuem algum tipo de interação com rotinas
de programas escritos em Assembly.
Códigos Assembly são rápidos e pequenos (compilado) mas o código-fonte é
extenso.
DIOGO SILVA 3
4. Assembly
Assembly é a linguagem de programação mais
básica disponível para qualquer processador.
Com a linguagem Assembly, um programador só
trabalha com as operações executadas diretamente
sobre a CPU física.
•Linguagem de programação que surgiu entre a
década de 40 e 50;
•Objetivo: facilitar o trabalho de codificação de um
programa de computador;
•É composta por códigos alfabéticos muito mais
fáceis de se utilizar quer códigos binários ou
hexadecimais.
DIOGO SILVA 4
5. Em que consiste o funcionamento de
um Sistema Operativo a baixo nível
Assembly é uma linguagem de baixo nível, que foi criada a partir da linguagem C,
que também é de baixo nível.
Então, a linguagem Assembly orienta-se para o seu núcleo, que seria
microprocessador, dando instruções para o processador.
•Instruções de registradores;
•Instruções de execução;
•Instruções de memória;
•Instruções para o sistema operacional.
DIOGO SILVA 5
6. Assembly e o
sistema binário
Além de tudo isso, é preciso entender que o
Assembly e o sistema binário tem uma ligação
muito forte, pois tudo que é programado em
Assembly é convertido para binário, assim a
máquina consegue reconhecer o que de fato a
programação quer lhe "dizer".
DIOGO SILVA 6
7. Em que consiste a Linguagem Assembly
•É uma linguagem de montagem (edição);
•É utilizada para programar um computador de baixo nível;
•O programa é montado dentro do processador;
•Não é uma linguagem de máquina;
•Assembly é totalmente dependente de hardware;
•Um código Assembly para INTEL não é o mesmo que um para a AMD. Portanto,
não é portável.
DIOGO SILVA 7
8. Onde é utilizada?
•Utilizada para programar dispositivos computacionais;
•Legível a partir da substituição dos valores;
•A conversão da linguagem de montagem (assembly) para o código de máquina
é feita pelo montador ou Assembler.
DIOGO SILVA 8
9. Linguagem Assembly
Compiladores disponíveis para a linguagem Assembly:
•MASM (microsoft);
•MASM (ibm);
•TASM (borland);
•EMU8086;
o Ambiente de programação;
o Programa de simulação do modo de operação interna de um
microprocessador padrão 8086;
o Modo gráfico.
DIOGO SILVA 9
10. Linguagem de máquina
•Utilizada por um MICROPROCESSADOR para controlar funções de um
computador digital;
•Só aceita e manipula informações numéricas expressas em notação de códigos
binários.
DIOGO SILVA 10
11. Microprocessador
•É um circuito que possui a capacidade de executar diversos tipos de funções
distintas;
•É usado em um computador.
DIOGO SILVA 11
12. Instruções de um microprocessador
A criação de uma sequência de instruções gera um algorítimo (que executa
determinada tarefa). E, para gerar esta sequência utilizando as instruções do
processador diretamente, utiliza-se a linguagem de programação
chamada Assembly.
Nesta linguagem, os comandos existentes são específicos para cada
processador que nós iremos programar (embora possam existir comandos
parecidos). E estes comandos são transcritos diretamente para as instruções que
o microprocessador executará.
Esta programação direta é chamada de código de máquina (pois são os códigos
que o processador de fato entende). Portanto, é uma linguagem extremamente
eficiente (rápida e que ocupa menos memória possível).
DIOGO SILVA 12
13. Instruções de um microprocessador
Na linguagem de programação C, por exemplo, existem comandos
(palavras) padronizados que servem para criar algorítimos para inúmeros
processadores diferentes utilizando o mesmo código. Entretanto, um código escrito
em C (ou qualquer outra linguagem) tem que ser traduzido para as instruções
específicas do processador alvo. Esta tradução é feita por um compilador. E a
tradução de uma linguagem não é tão eficiente quanto a programação direta em
Assembly, pois este processo de tradução não é 100% eficiente (adiciona
redundâncias).
O código de máquina é chamado de baixo nível e quanto mais distante uma
linguagem de programação for dele, mais alto nível ela será (menos eficiente).
Entretanto, as linguagens que não são totalmente de baixo nível possuem diversas
vantagens que fazem esta ineficiência ser menos relevante (um exemplo é o
Python). A própria linguagem C ainda é bastante eficiente (baixo nível) e possui uma
série de vantagens sobre o Assembly (principalmente facilidade de
desenvolvimento). Com isto, ela é escolhida como a principal forma de programação
de microcontroladores em diversas situações.
DIOGO SILVA 13
15. Assembler
•É o nome dado ao programa montador;
•É o programa utilizado para compilar um programa escrito em linguagem de
montagem, tornando-o executável;
•É o ambiente de programação;
•É responsável por traduzir o programa-fonte para o programa-objeto.
Nota: Assembler é diferente de Assembly!
DIOGO SILVA 15
16. Nibble
•É um conjunto numérico de 4 bits;
•Representa-se numericamente até 16 valores diferentes;
•É a menor estrutura numérica manipulada internamente em um computador
digital;
•Usa-se Nibble para facilitar a representação de valores binários em formato
hexadecimal.
DIOGO SILVA 16
17. Byte
•É um conjunto numérico de 8 bits;
•Representa-se numericamente até 256 valores diferentes;
•Um byte é formado pelo conjunto de dois nibbles.
DIOGO SILVA 17
18. Comando básico de um processador
Exemplo de comando básico de um processador:
184, 0, 184, 142, 216, 198, 6, 158, 15, 36, 205, 32
Esses números em cima são endereços de memória no seu computador, onde se
forem executados em MS-DOS, por exemplo, farão o seguinte, colocarão um
cifrão "$" no canto inferior direito da tela.
DIOGO SILVA 18
19. Programação em Assembly
A linguagem assembly trouxe uma forma mais simples de se programar, que hoje ainda assim
seria difícil, ela permitiria ao programador usar atalhos de comandos, onde na compilação esses
dados seriam convertidos em 0 e 1 número binário, para que o processador entendesse.
A programação de antigamente era feita dessa forma, com números, o programador teria que
decora-los para se programar ou usar uma espécie de tabela, onde hoje nós usamos uma
linguagem de alto nível, e são usados comando simples como: if (se), else (senão), repeat
(repetir), entre outros.
Dessa forma a programação ficaria em vez disso:
184, 0, 184, 142, 216, 198, 6, 158, 15, 36, 205, 32 para isso:
MOV AX, 47104
MOV DS, AX
MOV [3998], 36
32 INT
É bem mais simples na linguagem assemby como podemos ver.
DIOGO SILVA 19
20. Instalação em Assembly
O Assembly mesmo sendo uma linguagem de baixo nível, necessita de ser
transformada para ser entendida pela máquina, que no caso o chamamos de
Assembler. O Assembler é um utilitário que traduz os códigos para a máquina.
Existem diversos compiladores Assembly há venda que podem ser transferidos
pelo utilizador para criação do seu código. Os principais compiladores disponíveis
atualmente são:
•Fasm;
•Goasm;
•Masm;
•Nasm;
•Tasm, entre outros.
DIOGO SILVA 20
21. Processo de criação de programas
Para a criação de programas são necessários os seguintes passos:
1. Desenvolvimento do algoritmo, exercício em que o problema a ser
solucionado é estabelecido e a melhor solução é proposta, criação de
diagramas esquemáticos relativos à melhor solução proposta.
2. Codificação do algoritmo, o que consiste em escrever o programa em
alguma linguagem de programação, linguagem assembly neste caso
específico, tomando como base a solução proposta no passo anterior.
3. A transformação para a linguagem de máquina, ou seja, a criação do
programa objeto, escrito como uma sequência de zeros e uns (0 e 1) que
podem ser interpretados pelo processador.
4. O último exercício é a eliminação de erros detetados no programa na fase
de testes. A correção normalmente requer a repetição de todos os passos,
com observação atenta.
DIOGO SILVA 21
22. Software necessário
Para que possamos criar um programa, precisamos de algumas ferramentas:
•Primeiro de um editor para criar o programa fonte;
•Segundo de um assembler, um programa que transforma nossa fonte num
programa objeto;
•E, terceiro, de um linker (ativo) que gera o programa executável a partir do
programa objeto.
DIOGO SILVA 22
23. Software necessário
O editor pode ser qualquer um que dispusermos.
O assembler pode ser o TASM macro assembler da Borland, e o linker ser o
TLINK, também da Borland.
Nós devemos criar os programas fonte com a extensão .ASM para que o TASM
reconheça e o transforme no programa objeto, um "formato intermediário" do
programa, assim chamado porque ainda não é um programa executável e tão
pouco um programa fonte.
O linker gera a partir de um programa .OBJ, ou da combinação de vários deles,
um programa executável, cuja extensão‚ normalmente .EXE, embora possa ser
.COM dependendo da forma como for montado e ligado.
DIOGO SILVA 23
24. Estrutura de um processador
Os principais blocos que constituem um processador podem ser identificados
como sendo:
•Conjunto de registos para armazenar temporariamente a informação que vem
da memória ou os valores de variáveis (da aplicação ou de gestão do sistema);
•Unidades funcionais (aritméticas, lógicas, de vírgula flutuante, ...) para operar
sobre as variáveis;
•Unidade de controlo, que emite a sequência de sinais adequados ao
funcionamento do processador e para atuação noutros componentes do
computador.
A unidade de controlo é também designada na literatura anglo-saxónica
por control path, enquanto que o bloco que processa directamente a informação
- e que é constituído pelos registos e unidades funcionais - é normalmente
designado por data path.
DIOGO SILVA 24
25. Registradores
Os registradores são responsáveis por armazenar dados temporários
relacionados à operação momentânea da CPU. Um conjunto deles pode ser
utilizado para armazenar o resultado de alguma operação matemática, que são
os registradores de propósito geral. No caso dos processadores AVR, existem 32
deles.
E, os demais registradores são dedicados a certas funções.
Mas, qual a necessidade destes registradores se existe a memória externa? A
explicação é devido a velocidade de acesso. Mesmo que a memória RAM externa
seja rápida, é mais rápido ainda acessar estes registros internos do que a
memória externa.
DIOGO SILVA 25
26. Registradores dedicados
•Program Counter (PC)
O PC é um registrador que armazena o endereço de memória da próxima
instrução a ser executada. Este registrador serve para a CPU acompanhar o fluxo
das instruções.
•Current Instruction Register (CIR)
O CIR é um registrador que armazena a instrução que está sendo executada no
momento.
•Acumulador
ALGUNS microprocessadores antigos, invés de possuírem diversos registradores
de propósito geral, possuíam um registrador chamado acumulador
(Accumulator). O acumulador servia para armazenar o resultado de operações
intermediárias da ALU.
DIOGO SILVA 26
27. Registradores dedicados
•Registrador de Status (SR)
O SR é um registrador que armazena algumas informações da última operação
aritmética executada. Ele possui diversos bits (chamados flags), por exemplo:
oOverflow flag: Indica que o resultado da operação “transbordou” o tamanho
dos bits utilizados na operação. (Ex: o resultado é um número de 9 bits, mas a
operação envolveu dois números de 8 bits).
oZero flag: Indica que a operação resultou em 0 (zero).
oNegative flag: Indica que a operação resultou em um número negativo.
Entre outras flags…
DIOGO SILVA 27
28. Registradores dedicados
•Memory Address Register (MAR)
O MAR é um registrador que armazena o endereço de memória para ser lido ou
escrito. Isto é, ele é que fornece o endereço da memória para ser conectada.
•Memory Data Register (MDR / MBR)
O MDR é um registrador que armazena o dado que foi lido ou que é para ser
escrito na memória.
Isto é, se a CPU estiver lendo a memória, o MDR conterá o valor lido do
endereço dado pelo MAR. E, se a CPU estiver escrevendo na memória,
o MDR conterá o valor a ser escrito no endereço dado pelo MAR.
DIOGO SILVA 28
29. Registos da CPU
•Para o propósito didático, vamos focar registos de 16 bits.
•A CPU possui 4 registos internos, cada um de 16 bits.
São eles AX, BX, CX e DX.
São registos de uso geral e também podem ser usados como registos de 8 bits.
Para tanto devemos referenciá-los como, por exemplo, AH e AL, que são,
respetivamente, o byte high e o low do registo AX.
Esta nomenclatura também se aplica para os registos BX, CX e DX.
DIOGO SILVA 29
30. Os registos, segundo seus respetivos nomes
•AX Registo Acumulador;
•BX Registo Base;
•CX Registo Contador;
•DX Registo de Dados;
•DS Registo de Segmento de Dados;
•ES Registo de Segmento Extra;
•SS Registo de Segmento de Pilha;
•CS Registo de Segmento de Código;
•BP Registo Apontador da Base;
•SI Registo de Índice Fonte;
•DI Registo de Índice Destino;
•SP Registo Apontador de Pilha;
•IP Registo Apontador da Próxima
Instrução;
•F Registo de Flag.
DIOGO SILVA 30
31. Estrutura Assembly
Nas linhas do código em Linguagem Assembly existem duas partes:
•a primeira é o nome da instrução a ser executada;
•a segunda, é os parâmetros do comando.
Por exemplo: add ah bh.
Aqui "add" é o comando a ser executado, neste caso uma adição, e "ah" bem
como "bh" são os parâmetros.
DIOGO SILVA 31
32. Chamadas de sistema
Interface de programação para os serviços oferecidos pelo Sistema Operativo.
Geralmente escrita em uma linguagem de alto nível (C, C++).
Na maioria das vezes são utilizadas pelos programas através de uma Application
Program Interface (API) de mais alto nível ao invés de serem chamadas
diretamente.
As três APIs mais comuns são Win32 API do Windows, POSIX API para sistemas
POSIX-based (incluindo praticamente todas as versões do UNIX, Linux, e Mac OS
X), e a API Java para a Java Virtual Machine (JVM).
Por que usar APIs ao invés de chamadas de sistema?
DIOGO SILVA 32
33. Implementação de chamadas de sistema
Tipicamente, cada chamada de sistema possui um número associado;
•A interface de chamada de sistemas mantém uma tabela indexada com esses
números.
A interface de chamada de sistema invoca a chamada desejada no kernel do
Sistema Operativo e retorna o estado e valores de resposta para o utilizador.
Quem faz a chamada não precisa ter qualquer informação sobre como a
chamada de sistema foi implementada;
•Precisa apenas conhecer a interface e saber o que o SO fará como resultado da
chamada;
•A maioria dos detalhes do SO ficam escondidos dos utilizadores atrás de APIs.
DIOGO SILVA 33
34. Tipos de chamadas de sistema
•Controle de processos;
•Gerência de arquivos;
•Gerência de dispositivos;
•Manutenção da informação;
•Comunicação;
•Proteção.
DIOGO SILVA 34
35. Características Particulares
•Atribuir nomes simbólicos a endereços de memória, variáveis e grupos de
instruções;
•Trabalhar em diversas bases de numeração bem como converter caracteres nos
seus códigos ASCII;
•Efetuar cálculos aritméticos simples com constantes ou nomes simbólicos;
•Definir os endereços de memória onde o programa e os dados irão ser
armazenados;
•Reservar áreas de memória para armazenamento temporário de informação;
•Configurar a geração de código máquina e o formato das listagens produzidas;
•Construir e utilizar bibliotecas de funções, ajudando a programar de forma
modular e a reutilizar código já escrito em Assembly ou outras linguagens.
DIOGO SILVA 35
36. Estrutura da Programação
É importante incluir as seguintes diretivas Assembly:
•MODEL SMALL - Define o modelo de memória a usar no nosso programa;
•CODE - Define as instruções do programa, relacionado ao segmento de código;
•STACK - Reserva espaço de memória para as instruções do programa na pilha;
•END - Finaliza um programa assembly.
DIOGO SILVA 36
37. Vantagens
Velocidade, os programas em Assembly são, em geral, mais rápidos;
Tamanho dos programas de Assembly são menores;
Assembly permite criar ações de alta complexidade, impossíveis ou difíceis de
se realizar em linguagens de Alto Nível;
Conhecimento, em Assembly possibilita a programação nos outros tipos de
linguagem;
Torna-se de fácil compreensão com algum conhecimento de conceitos de
hardware e seus idiomas.
DIOGO SILVA 37
38. Desvantagens
Difícil de ler, de aprender, entender, dispersar e de difícil manutenção. Um
programa escrito em linguagem Assembly não é muito legível, por isso ele deve
ser muito bem documentado;
Programar em Assembly consome muito tempo para o programador;
A linguagem não é portável. Ela é portável apenas dentro de uma família de
processadores;
Como é uma linguagem especifica para processadores de cada máquina, é
necessário desenvolver um programa para cada máquina;
Como o programador utiliza diretamente os recursos do processador e
memória, ele deve conhecer muito bem a máquina onde ele está a programar.
DIOGO SILVA 38
39. O que é o "debugging" de pequenos
programas em Assembly?
Debugging:
É o processo pelo qual se desenvolvem e corrigem bugs de software (ou hardware).
Dominar o debugging é vital para um programador: os bugs vão inevitavelmente aparecer
quando a complexidade (número de programadores, de requisitos, de linhas de código, de
dependências, etc.) aumentar.
No início, fazer debug costuma ser algo chato mas, com a prática, torna-se mais
interessante, pois:
•faz-nos compreender melhor o workflow do programa, o que se passa “por baixo”, assim
como tecnologias envolvidas;
•obriga a criar um bom código que evita bugs semelhantes no futuro;
•alguns bugs estimulam a nossa capacidade de resolução de problemas e motivam-nos
quando são resolvidos.
DIOGO SILVA 39
40. Evitando o debug
A melhor forma de fazer debug é evitar ter de o fazer. Devemos adotar técnicas e boas
práticas que reduzam a probabilidade de ter bugs e outras que facilitem a sua correção
caso ocorram. Eis algumas (cuja explicação sai fora do âmbito atual):
•Code reviewing e Pair programming;
•Decoupling, encapsulamento e modularidade;
•Uso correto de design patterns;
•TDD;
•Redução de dependências (ex. de tecnologias, de pessoas, do S.O.);
•Uso de convention over configuration;
•Princípios SOLID;
•Não faça copy / paste de código (nunca vale a pena);
•Mantenha o código limpo e tenha pouco código;
•Faça bons comentários, entre muitas outras boas práticas…
DIOGO SILVA 40
41. O processo de debug
O debugging, apesar de muito ligado à
programação, é uma disciplina com o seu próprio
processo. Mesmo não se pensando nisso, está-se
implicitamente a segui-lo:
•Reprodução: saber os passos a seguir, as condições
iniciais, estimativas, etc;
•Diagnóstico: gravidade, prioridade, impactos,
riscos, a zona em causa. Para este último:
•Correção;
•Reflexão: aplicação de medidas que garantam que
o problema não se repete noutro formato: testes,
documentação, validações de input e corner cases,
criação de código mais resistente, refactoring, etc.
DIOGO SILVA 41
42. Análise detalhada de um exemplo
A fig. A.5 apresenta uma pequena rotina escrita em C, enquanto a fig. A.4 mostra a mesma rotina,
mas escrita em assembly com algumas extensões, mas sem comentários.
Os seguintes comentários deverão ser feitos à codificação em assembly da fig A.4:
•o programa em assembly contém algumas linhas de comandos exclusivos para o assembler - as
quais não são convertidas para linguagem máquina - que se designam por diretivas para
o assembler, e que começam sempre por um ponto (no caso do assembler do MIPS);
•as diretivas .text e .data indicam ao assembler onde começa a zona do programa com código, e
a zona do programa reservada aos dados; .align x indica ao assembler para alinhar na memória a
informação que vem a seguir, quer em bytes (x=0), em meias-palavras de 16 bits (x=1) - isto é,
colocar a informação apenas em localizações de memória que comecem por um endereço par -
ou em palavras de 32 bits (x=2) - isto é, colocar a informação apenas em localizações de
memória que comecem por um endereço múltiplo de 4; .globl x indica ao assembler que o
símbolo x é um símbolo que tem visibilidade para outros módulos externos (informação para ser
usada pelo linker); .asciiz x indica ao assembler que a string x que se segue é para ser codificada
em ASCII, caracter a caracter, e terminada com um caracter especial, designado em ASCII
por null; várias outras diretivas são suportadas pelo assembler do MIPS, mas serão apresentadas
gradualmente conforme forem sendo necessárias;
DIOGO SILVA 42
43. Continuação da análise
•as etiquetas main:, loop: e str: indicam ao assembler o início de pedaços de
código ou de dados (isto é, endereços de memória) para referência noutros
locais do programa, poupando ao programador de assembly a necessidade de
efectuar todos os cálculos para a localização de código e de dados;
•embora não exista nenhum registo com o nome $sp, o assembler aceita que
certos registos sejam referenciados por uma designação diferente, de acordo
com uma convenção que se verá adiante; o registo que se aconselha a usar
como stack pointer é o $29, e o assembler converte qualquer referência ao $sp
em $29 (repare que a instrução que contém esta referência está um pouco
incoerente quanto a esta facilidade, e não só, pois a instrução deveria ser
"subiu $sp, $sp, 32");
•o programa em C faz uma referência (printf) que não é resolvida no próprio
módulo (externa), e essa mesma referência transita para o código em assembly;
DIOGO SILVA 43
44. Continuação da análise
•o código apresentado contém várias simulações de instruções, que facilitam a
interpretação do seu conteúdo por um ser humano; faltam contudo
comentários que facilitem a sua leitura, e que deveriam ser iniciados sempre
pelo caracter # (em cada linha de texto que apareçam).
A fig. A.3 mostra o mesmo programa, mas em assembly e sem quaisquer
extensões: já não há diretivas para o assembler, não há etiquetas nem
comentários, todos os símbolos foram substituídos por valores binários (até
mesmo a referência externa, printf) e as simulações de instruções foram
convertidas para instruções reais do instruction set do MIPS.
Este código é integralmente equivalente ao código em linguagem máquina em
binário (na fig. A.2), usando apenas símbolos para que os humanos identifiquem
com mais facilidade as instruções, os registos referenciados, e os valores
numéricos (em decimal).
DIOGO SILVA 44
46. Tratamento de ficheiros
Até ao momento, todos os dados têm sido inseridos nos programas através do
teclado, sendo guardados em variáveis que residem em memória central
(R.A.M.).
Este tipo de memória apresenta no entanto os inconvenientes de ser
inconstante, pelo que impossibilita o armazenamento de dados após a execução
de um programa.
Para armazenamentos mais demorados é utilizada, a memória secundária (i.e. o
disco rígido, a disquete, …), em que a informação é armazenada sob a forma de
ficheiros.
DIOGO SILVA 46
47. Tratamento de ficheiros
A linguagem C é “Device Independent”, ou seja, não diferencia os vários
periféricos (de entrada ou saída) ligados ao computador.
Independentemente do tipo de periférico que esteja a utilizar, o C processa todas
as entradas e saídas de dados através de streams.
Stream é um conjunto sequencial de caracteres, isto é, um conjunto de bytes -
ficheiros.
DIOGO SILVA 47
48. Tratamento de ficheiros
Por defeito, um programa ao executar tem 5 ficheiros automaticamente abertos:
• stdin - standard input (teclado);
• stout - standard output (monitor);
• stderr - standard error (monitor ou outro);
• stdaux - aux device (porta COM1 num PC);
• stdprn - standard printer.
DIOGO SILVA 48
49. Tratamento de ficheiros
Para trabalhar com ficheiros necessita da biblioteca stdio.h.
A linguagem C suporta dois tipos de ficheiros:
• Ficheiro de Texto - é um ficheiro constituído apenas pelos caracteres
existentes no nosso teclado, e em geral formatado apenas com o carácter
New Line (n);
• Ficheiro Binário - podem ser constituídos por qualquer carácter existente na
tabela ascci.
DIOGO SILVA 49
50. Tratamento de ficheiros
Operações básicas sobre ficheiros:
• Para trabalhar com um qualquer ficheiro, a primeira operação a realizar é
ligar uma variável do nosso programa a esse ficheiro. A esta operação dá-se o
nome de Abertura do ficheiro.
• Após a abertura do ficheiro, podemos realizar operações sobre o conteúdo
do ficheiro:
o Ler dados;
o Escrever dados.
• Após efetuadas as operações pretendidas sobre o ficheiro terá de Fechar o
ficheiro.
DIOGO SILVA 50
51. Abertura de um ficheiro
A função que permite a abertura de um ficheiro é a seguinte: fopen(), cuja
sintaxe é a seguinte:
•FILE *fopen(char *nome_do_ficheiro, char *modo_de_abertura).
A função devolve:
•um apontador para um FILE, que passa a ser utilizado em todos os acessos ao
ficheiro (isto se conseguir abrir o ficheiro);
•NULL se ocorrer um erro na abertura.
A função recebe dois parâmetros:
•nome_do_ficheiro - nome do ficheiro a abrir;
•modo_de_abertura - modo de abertura do ficheiro.
DIOGO SILVA 51
52. Modos de abertura de um ficheiro
R (read)
Abre o ficheiro para leitura.
Caso não seja possível abrir o ficheiro, a função devolve
NULL.
W (write)
Abre o ficheiro para escrita. Se o ficheiro não existir, é
criado com o nome passado à função. Se o ficheiro já
existir, é apagado e criado um novo com o mesmo
nome.
Caso não seja possível criar o ficheiro, a função devolve
NULL.
A (append)
Abre o ficheiro para acrescento, no fim do ficheiro. Se o
ficheiro existir, os novos dados são escritos no fim do
ficheiro. Se o ficheiro não existir, é criado.
DIOGO SILVA 52
53. Modos de abertura de um ficheiro
R+
Abre o ficheiro para leitura e escrita. Se o ficheiro não
existir, é criado. Se o ficheiro existir, os novos dados são
escritos a partir do início do ficheiro, sobre os que já lá
existem.
W+
Abre o ficheiro para leitura e escrita. Se o ficheiro
não existir, é criado. Se o ficheiro já existir, é apagado e
criado um novo com o mesmo nome.
A+
Abre o ficheiro para leitura e escrita. Se o ficheiro
não existir, é criado. Se o ficheiro já existir, os
novos dados são colocados a partir do fim do ficheiro.
DIOGO SILVA 53
54. Final de um ficheiro
Após ter feito as operações sobre um ficheiro, terá de o fechar.
A função que permite o final de um ficheiro é a função fclose() , cuja sintaxe é a
seguinte:
•int fclose (FILE *fp).
Esta função fecha o ficheiro apontado por fp.
Em caso de erro (i.e. fechar um ficheiro que ainda não foi aberto) retorna EOF, se
fechou o ficheiro com sucesso retorna zero. Normalmente não se verifica o valor
devolvido por esta função.
DIOGO SILVA 54
55. O que é device drivers?
É um programa ou processo que é executado em uma região especial de
memória e através do qual o utilizador pode conectar-se a um dispositivo ou
recurso de um processador ou sistema computacional. Ele serve como um
mediador entre o software e o hardware.
Por exemplo, quando você tira uma foto no seu telemóvel ex: Android,
o driver da câmera interage com o software e passa informações a ele referentes
às imagens capturadas e outras informações. O resultado final é a foto. Ou
quando você quer jogar seu jogo preferido, mas não é possível sem o driver da
placa de vídeo, certo? Por meio do driver o jogo acesa recursos da placa de vídeo
que permitem a experiência incrível que os jogos proporcionam.
Então, a ideia é justamente essa. Servir como mediador entre o utilizador e o
hardware ou entre o software e o hardware.
DIOGO SILVA 55
56. Conclusão
A tendência atual é a favor de uma programação mista, usando principalmente
linguagens de mais alto nível (C em particular) e recorrendo à linguagem
Assembly apenas em rotinas onde a eficiência do código seja o objetivo principal
a atingir.
Esta tendência explica-se por três motivos:
• a pressão do mercado obriga a diminuir o tempo de desenvolvimento e a
aumentar a facilidade de manutenção do código;
• existem atualmente compiladores de C para a maioria dos
microprocessadores, alguns até de domínio público;
• os avanços na microeletrónica permitem que a rapidez de execução se
consiga facilmente pelo aumento da frequência de funcionamento.
DIOGO SILVA 56