Buscar

Organização e arquitetura de computadores uva_ebook

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ORGANIZAÇÃO E 
ARQUITETURA DE 
COMPUTADORES
SUMÁRIO
Apresentação
Autor
4
5
A informação e sua representação 29
Sistemas de Numeração
Conversão entre os Sistemas de Numeração
Aritmética Binária
UNIDADE 2
6
Organização Estruturada de Computadores
Breve história do computador
Arquitetura de Computadores
Evolução histórica do computador
UNIDADE 1
SUMÁRIO
Execução de programas 70
Geração de programas executáveis
Interpretação
Linguagem montadora
UNIDADE 4
54
Modelo de von Neumann
Modelo de barramento de sistema
Sistemas de computação
Componentes do computador
UNIDADE 3
4
A disciplina Organização e Arquitetura de Computadores tem por objetivo permitir a você 
conhecer os conceitos básicos de arquitetura de computadores digitais com seus devi-
dos componentes elementares, entendendo suas aplicabilidades no mercado de traba-
lho, bem como a evolução proporcionada ao longo do tempo.
A disciplina está dividida logicamente em quatro unidades distribuídas, e você estudará:
• Na Unidade 1, a evolução histórica dos computadores a partir de uma abordagem 
clara e objetiva.
• Na Unidade 2, a informação e sua representação; dessa forma, você irá manipular 
conversão de bases de sistemas de numeração, aritmética binária e o reconheci-
mento de símbolos disponíveis na tabela American Standard Code for Information 
Interchange — ASCII;
• Na Unidade 3, os principais componentes do computador.
• Na Unidade 4, a execução de programas, buscando entender o funcionamento 
de programas executáveis, diferenciando a linguagem interpretada e a linguagem 
montadora.
APRESENTAÇÃO
5
ALFREDO NAZARENO PEREIRA BOENTE
Pós-doutorado em Neurociência e Sistemas Lógicos aplicados à Gestão Empresarial, 
Educação e Pesquisa Experimental pelo HCTE/UFRJ (2014); doutorado em Ciências 
da Engenharia de Produção pelo Instituto Alberto Luiz Coimbra de Pós-Graduação 
e Pesquisa de Engenharia – COPPE/UFRJ (2013); doutorado em Processamento de 
Dados pela AWU-IOWA-USA (2006); mestrado em Administração e Desenvolvimento 
Empresarial pela Universidade Estácio de Sá – Unesa (2009); mestrado em Ciências 
da Computação pela Universidad de Habana-CU (2003), mestrado em Engenharia de 
Software pela AWU-IOWA-USA (2002); especialização em Análise de Sistemas pela 
Unesa (2000); especialização em Docência Superior pela Universidade Cândido Mendes 
— Ucam (2001); especialização em Tecnologia em Banco de Dados pela Unesa (2001); 
especialização em Ciências da Computação pela Universidad de La Habana, em Cuba 
(2002); especialização em Administração Escolar pela Unesa (2003); especialização 
em Logística Empresarial pela Faculdade Internacional Signorelli (2016); graduação em 
Processamento de Dados com ênfase em Projeto e Análise de Sistemas pelas Faculdades 
Reunidas Professor Nuno Lisboa (1996); graduação em Processos Gerenciais – Gestão 
Empresarial pela Universidade Veiga de Almeida – UVA (2018).
AUTOR
Evolução histórica do computador
UNIDADE 1
7
Esta unidade é importante para que o estudante conheça a organização estruturada de 
computador com os seus mais diferentes níveis, buscando uma compreensão acerca da 
diferença entre computadores analógicos e digitais. O estudante também irá conhecer a 
história dos computadores e o registro de suas gerações, o que lhe dará base para iniciar 
o estudo das arquiteturas de computadores RISC e CISC.
INTRODUÇÃO
Nesta unidade, você será capaz de:
• Conceituar a organização e arquiteturas de computadores a partir de uma breve 
história dos computadores.
OBJETIVO
8
Organização Estruturada de Computadores 
No que tange ao estudo da organização estruturada de computadores, é necessário dei-
xar bem claro que aquilo que ora é conveniente para o ser humano não é de mesma 
forma conveniente para o computador. De certo, o computador não entende a linguagem 
do ser humano, seja ela utilizada no nosso cotidiano, seja ela utilizada por meio de lingua-
gens de programação. O entendimento do computador acerca daquilo que desejamos 
que seja realizado por ele está em uma esfera bem diferente daquela compreendida pelo 
ser humano. Dessa forma, observe que se pode classificar como linguagem de alto nível 
e linguagem de baixo nível o seguinte: 
É aquela que mais 
se aproxima do 
entendimento das 
pessoas do que do 
computador.
É aquela que mais 
se aproxima do 
entendimento da 
máquina do que do 
homem.
Li
ng
ua
ge
m
 d
e 
ba
ix
o 
ní
ve
l
Li
ng
ua
ge
m
 d
e 
al
to
 n
ív
el
Existe o conceito de máquinas de multiníveis contemporâneas que está ligado diretamente 
à quantidade de níveis de uma máquina. A maioria dos computadores modernos 
apresenta dois ou mais níveis. Nesse viés, pode-se afirmar que existem máquinas com 
até seis níveis, conforme ilustra a Figura 1, apresentada a seguir.
9
Figura 1: Computador com seis níveis.
Nível 5
Nível 4
Nível 3
Nível 2
Nível 1
Nível 0
Nível de linguagem orientada a problema
Tradução (compilador)
Tradução (assembler)
Interpretação parcial (sistema operacional)
Interpretação (microprograma) ou execução direta
Hardware
Nível de linguagem assembly
Nível de máquina do sistema operacional
Nível de arquitetura do conjunto de instrução
Nível de microarquitetura
Nível lógico digital
Fonte: Tanenbaum (2013).
Vamos conhecer melhor cada um desses níveis?
O nível 0, descrito de baixo para cima, é conhecido como nível lógico digital e refere-se 
ao hardware verdadeiro da máquina cujos circuitos executam programas em linguagem 
de máquina, ou seja, linguagem de baixo nível. Hardware é a parte física do computador, 
composta pelos dispositivos eletrônicos e eletromecânicos. 
No estudo da engenharia elétrica, ainda é apresentado um nível mais abaixo do que o 
nível 0, tecnicamente conhecido como nível de dispositivo (portanto, está fora do escopo 
desta disciplina).
O nível 1, conhecido como nível de microarquitetura, apresenta uma coleção de 8 a 32 
registradores que formam uma memória local e um circuito tecnicamente conhecido 
como Unidade Lógica e Aritmética – ULA, que é capaz de realizar operações aritméticas 
simples. Já os registradores estão conectados à ULA para formar os chamados caminhos 
lógicos de dados, que controlados por um programa conhecido como microprograma, 
em algumas máquinas, e pelo próprio hardware do computador, em outras.
10
O nível 2, conhecido como nível de arquitetura do conjunto de instrução, também 
conhecido tecnicamente como Instruction Set Architecture – ISA. Em linhas gerais, os 
fabricantes de computadores disponibilizam um manual de referência da linguagem 
de máquina, que se refere ao ISA, ou seja, ao conjunto de instruções executadas pelo 
hardware do computador.
O nível 3, conhecido como nível de máquina do sistema operacional, é o nível no qual suas 
instruções também são executadas, ou por microprogramas, ou pelo próprio hardware 
do computador. Nele, algumas instruções são interpretadas pelo sistema operacional 
e outras diretamente pelo microprograma ou controle de hardware, e não pelo sistema 
operacional propriamente dito.
O nível 4, conhecido como nível de linguagem assembly, refere-se à chamada linguagem 
montadora que, na realidade, é uma forma simbólica para uma das linguagens 
subjacentes. Nesse nível, é disponibilizado um método para que as pessoas possam 
escrever programas para os níveis 1, 2 e 3, que serão em seguida interpretados pelo 
computador. O programa de software que especificamente realiza tal tradução é 
tecnicamente denominado assembler. Software é, portanto, a parte lógica do computador, 
composta pelos programas de computador.
O nível 5, conhecido como nível de linguagem orientado a problema, consiste em 
linguagens projetadas para serem usadas por programadores de aplicações que 
geralmente têm problemas a resolver. Essas são as chamadas linguagens de alto 
nível, geralmente traduzidas por compiladores específicos para cada uma delas. Os 
compiladores são, na verdade, programas de computador que geram um código-objeto 
a partir de umcódigo-fonte escrito em certa linguagem de computador de alto nível, para 
que esta seja compreensível pelo computador (baixo nível). Pode-se citar como exemplo 
de linguagem de alto nível C, C++, Java, PHP, Python, dentre outras.
Então, a partir de seus diferentes níveis, o computador é uma máquina capaz de executar 
uma sequência de instruções que são definidas pelo homem para gerar um determinado 
resultado, a fim de solucionar dado problema. A essa sequência de instruções, dá-se o 
nome de algoritmo, o qual pode ser definido por um conjunto de regras expressas por 
uma sequência lógica finita de instruções que serão executadas pelo computador.
11
Saiba mais
Nos microcomputadores, a relação entre arquitetura e organização é muito 
próxima. As mudanças na tecnologia não apenas influenciam na organização, 
como também resultam na introdução de arquiteturas mais poderosas e flexíveis.
Classificação dos computadores 
Os computadores podem ser tecnicamente classificados como analógicos 
ou digitais. Vamos ver as características de cada um deles?
Os computadores analógicos não trabalham com números nem com símbolos que 
representam os números, pois procuram fazer analogias entre quantidades. O ábaco é 
um exemplo clássico desse tipo de computador (ver Figura 2), uma vez que se utilizava 
de pequenos carretéis embutidos em um pequeno filete de metal para realizar cálculos. 
É considerado a máquina de calcular primitiva, pois, segundo Tanenbaum (2013), teve 
origem provavelmente na Mesopotâmia, há mais de 5.500 anos. 
Figura 2: Computador Analógico - Ábaco.
Figura 3: Computador Analógico - Régua de Cálculo.
A régua de cálculo (ver Figura 3) utiliza comprimentos de escalas especialmente calibradas 
para facilitar a multiplicação, a divisão e outras funções.
12
Portanto, os computadores analógicos representam uma categoria de computadores 
que se utilizam de eventos elétricos, mecânicos ou hidráulicos para resolver problemas. 
Charles Babbage foi o inventor da máquina diferencial que era capaz de realizar cálculos 
polinomiais, baseada no conceito de um computador analógico. 
Curiosidade
A máquina analítica criada por Babbage precisava de software, pois era 
programável em uma linguagem de montagem simples. Para produzir esse 
software, Babbage contratou a jovem Ada Augusta Lovelace, filha do famoso 
poeta britânico Lord Byron. Assim, Ada Lovelace foi a primeira programadora 
de computadores do mundo. A linguagem de programação ADA teve esse 
nome em sua homenagem. 
Figura 4: Computador Digital.
Conforme será estudado a seguir, todos os computadores que surgiram, 
independentemente de sua caracterização por geração, foram baseados na chamada 
Máquina Universal, que se refere a um dispositivo teórico também conhecido como 
Máquina de Turing. A Máquina de Turing recebeu esse nome devido ao seu inventor, o 
matemático, lógico, criptoanalista e cientista da computação britânico, Alan Mathison 
Turing. O artigo de referência acerca da Máquina de Turing foi publicado em 1936.
13
Curiosidade
A história do projeto do desenvolvimento do computador Colossus, durante a 
Segunda Guerra Mundial, é contada no filme O Jogo da Imitação (2014). Vale 
a pena assistir ao filme para ter ideia do projeto, do contexto histórico e da 
influência de Alan Turing.
MIDIATECA
Acesse a midiateca da Unidade 1 e veja o conteúdo complementar indicado pelo 
professor sobre Alan Turing.
14
Breve história do computador 
Caracterizado pela evolução tecnológica, o computador passa de analógico para digital. 
De certo que essa evolução somente ocorreu graças ao desenvolvimento das tecnologias 
utilizadas na construção dos computadores. 
O surgimento dos primeiros computadores digitais, tendo como percursor o computador 
analógico, permitiu que a classificação dos computadores fosse caracterizada por 
gerações, a partir das tecnologias que eram utilizadas para sua fabricação.
Vamos entender melhor cada uma dessas classificações? 
Geração zero: computadores mecânicos (1642-1945)
A geração zero foi caracterizada pelo uso dos computadores essencialmente analógicos, 
os quais eram construídos a partir de engrenagens mecânicas e eletromecânicas, cuja 
operação era realizada de forma lenta, em baixa velocidade, limitando-se, portanto, à 
resolução de problemas bem específicos (STALLINGS, 2017). Dois exemplos clássicos 
de computadores dessa geração são a Máquina de Pascal (ver Figura 5) e a Máquina das 
Diferenças de Babbage (ver Figura 6).
Figura 5: Máquina de Pascal.
15
Figura 6: Máquina das Diferenças de Babbage.
Figura 7: Válvula.
Primeira geração: válvulas (1945-1955)
De acordo com Stallings (2017), essa geração de computadores utilizou válvulas (ver Figura 
7) para elementos lógicos digitais e memória. Uma série de pesquisas e computadores 
comerciais foram construídos com válvulas. O estímulo para o computador eletrônico foi 
a Segunda Guerra Mundial, segundo Tanenbaum (2013). 
O primeiro computador digital eletrônico dessa geração foi o Eletronic Numeric Integrator 
and Computer – ENIAC, construído por John Mauchley e John Presper Eckert, inicialmente 
idealizado em 1943. 
O ENIAC apresentava, em sua estrutura, 18.000 válvulas e 1.500 relés, pesando 30 
toneladas, que consumia na época 140 kw de energia, conforme ilustra a Figura 8. Sua 
construção somente foi concluída em 1946 com a ajuda de colaboradores, dentre eles, 
John von Neumman.
16
Figura 8: ENIAC.
Figura 9: Máquina Original de Von Neumman.
Fonte: Tanenbaum (2013).
Em 1949 entrou em operação o Eletronic Delay Storage Automatic Calculator – EDSAC, 
construído por Maurice Wilkes na Universidade de Cambridge. Nesste mesmo período, 
John Mauchley e John Presper Eckert começaram a trabalhar no Eletronic Discrete Variable 
Computer — EDVAC, enquanto John von Neumman foi para o Institute for Advanced 
Studies, em Princeton, para construir sua própria versão do EDVAC, a chamada Máquina 
IAS. O primeiro projeto básico descrito por John von Neumman, passou a ser conhecido 
como Máquina de von Neumman (ver Figura 9), que foi utilizada como arquitetura básica 
do EDSAC.
Memória
Entrada
Acumulador
Saída
Unidade de 
controle
Unidade de lógica e 
aritimética
17
A Máquina de Von Neumman apresentava cinco partes básicas consideradas elementos 
básicos do sistema computacional: 
(1) Memória.
(2) Unidade de lógica e aritmética.
(3) Unidade de controle.
(4) Equipamento de entrada.
(5) Equipamento de saída. 
Nos computadores modernos, o “cérebro”, a unidade de lógica e aritmética e a unidade 
de controle são combinados em um único chip, denominado Central Processing Unit – 
CPU – (Unidade Central de Processamento).
O último computador dessa geração foi o Universal Automatic Computer – UNIVAC, 
considerado um computador de grande escala, cujo primeiro modelo foi apresentado 
em 1951. O modelo final da série UNIVAC ocorreu em 1955.
Segunda geração: transistores (1955-1965)
Stallings (2017) afirma que essa geração de computadores utilizou transistores (ver 
Figura 10). Foi inventada em 1948, nos Bell Labs, por John Bardeen, Walter Brattain e 
William Shockley, em substituição às válvulas.
Figura 10: Transistor.
O primeiro computador transistorizado recebeu o nome de Transistorized Experimental 
Computer 0 – TX-0 (Computador Transistorizado Experimental 0), tendo sua construção 
iniciada em 1955 e concluída somente em 1956, um ano depois. Em substituição ao TX-0,
18
surge, em 1961, o Programmed Data Processor-1 – PDP-1 (Processador de Dado 
Programável), desenvolvido pela empresa Digital Equipament Corporation (DEC). Com 
isso, surge a indústria de minicomputadores (CORRÊA, 2016).
Para refletir
Antes do lançamento do PDP-1, os computadores eram tão grandes e caros 
que poucos tinham acesso a esse tipo de tecnologia. No entanto, nos dias de 
hoje, a tecnologia é disponível para todos.
O PDP-1 foi doado ao Massachusetts Institute of Technology – MIT, onde logo atraiu a atenção 
de estudantes, professores e pesquisadores. Anosmais tarde, surgiu o PDP-8, uma inovação 
tecnológica que apresentava um barramento único, o omnibus (ver Figura 11). 
Figura 11: Barramento omnibus do PDP-8.
Fonte: Tanenbaum (2013).
CPU Memória
Terminal de 
console
E/S de fita 
de papel Outra E/S
Omnibus
O autor define barramento como um conjunto de fios paralelos utilizados para conectar 
os componentes de um computador. Surge o multiprocessamento (capacidade do 
processador de processar dois ou mais processos simultâneos).
Decerto, naquela época, enquanto os projetistas buscavam tornar os hardwares mais 
baratos (DEC) ou mais rápidos (International Business Machine – IBM e Control Data 
Corporation – CDC), um grupo de pesquisadores adotou uma linha de ação diferente, 
pois buscavam construir uma máquina com a intenção de programá-la em linguagem 
Algol 60, uma precursora da linguagem C e da linguagem Java. Nesse viés, nascia o 
Burroughs B5000 e a ideia de que o software também era importante. A IBM desenvolve 
o computador IBM 7094 que, na época, vendeu em larga escala.
19
Terceira geração: circuitos integrados (1965-1980)
Segundo Stallings (2017), um transistor isolado, autocontido, é chamado de componente 
discreto. Os componentes discretos (transistores, resistores, capacitores e assim por 
diante) eram fabricados separadamente. Imaginava-se, na época, como vários desses 
componentes discretos poderiam ser unificados em um só componente. Surge então, 
em 1958, o circuito integrado (ver Figura 12) de silício inventado por Jack Kilby e Robert 
Noyce, permitindo que dezenas de transistores fossem colocados em um único chip.
Figura 12: Circuito integrado.
Esse tipo de empacotamento possibilitava a construção de computadores menores, mais 
rápidos e mais baratos do que seus precursores transistorizados. O parâmetro utilizado 
para visualização da velocidade do processador é tecnicamente denominado velocidade 
de clock, que se refere à real velocidade do computador. 
Naquela época, surgiu a multiprogramação (capacidade de executar dois ou mais 
programas na memória ao mesmo tempo). Nesse período também foi adotada 
efetivamente a chamada arquitetura Complex Instruction Set Computer – CISC, capaz de 
executar centenas de instruções complexas diferentes.
A DEC continuava sendo líder de mercado sobre outros fabricantes com o lançamento do 
PDP-11 que tinha registradores orientados a palavras (word) e uma memória orientada 
para byte, e ambos ocupavam uma faixa que abrangia uma considerada relação preço/
desempenho (TANENBAUM, 2013). Mais uma vez, a IBM inovou com o lançamento do 
IBM 360.
Quarta geração: microprocessadores (1980-atual)
Stallings (2017) afirma que, na década de 1980, surge a Very Large Scale Integration 
– VLSI (Integração em Escala Muito Grande), que tinha possibilitado colocar, primeiro, 
dezena de milhares, depois, centena de milhares e, por fim, milhões de transistores em 
um único chip (ver Figura 13).
20
Figura 13: Chip VLSI.
Esse desenvolvimento logo levou a computadores menores e bem mais rápidos. Antes do 
PDP-1, os computadores eram tão grandes e caros que as empresas e as universidades tinham 
que ter departamentos especiais denominados centrais de computação para usá-los. Com 
a chegada do minicomputador, cada departamento podia comprar sua própria máquina. Em 
1980, os preços dos computadores caíram tanto que era possível que um indivíduo tivesse 
seu próprio computador, denominado computador pessoal (Personal Computer – PC). Nessa 
época, a Intel lança CPUs com microprocessadores modernos e potentes a preços bem 
competitivos com os de seus concorrentes, entrando fortemente na briga do mercado dos 
computadores pessoais. Depois disso, surgiram os microcomputadores.
Toda essa evolução histórica permite que os computadores sejam apresentados em 
diferentes portes (grande porte, pequeno porte, minicomputador e microcomputador, por 
exemplo). Vale ressaltar que:
O porte do computador não tem relação direta com o seu tamanho e 
peso, mas sim com sua capacidade de processamento e armazenamento 
de dados.
Nessa época, a Apple destacava-se com os computadores pessoais, denominados Apple, 
que, mais tarde, se tornariam o Apple II, projetado por Steve Job e Steve Wozniak. Ao mesmo 
tempo, hardwares bem sofisticados necessitavam de softwares também sofisticados.
21
Saiba mais
O nascimento do mercado de computadores pessoais também gerou o 
computador portátil. O primeiro deles foi o Osborne-1, que pesava 11 quilos e, 
na verdade, era mais um computador “arrastável” do que portátil. Ainda assim, 
comprovava a ideia de que um computador portátil era possível. Fica lançada a 
ideia para os futuros notebooks, laptops, palmtops, dentre outros.
Essa emocionante disputa entre Steve Jobs e Bill Gates está bem detalhada no 
filme Piratas do Vale do Silício. 
Surge, então, o IBM-PC, com o sistema operacional MS-DOS, desenvolvido pela Microsoft 
Corporation, representada por Bill Gates e Paul Allen. Não querendo ficar atrás, a Apple 
lança o Macintosh, com o sistema operacional Mac OS, próprio para computadores Apple.
Importante
Em meados de 1980, surge um novo desenvolvimento, denominado Reduced Instruction 
Set Computer – RISC, em substituição do CISC.
Ainda nos anos 1980, a Microsoft desenvolveu o sistema operacional Windows, que 
passou a ser utilizado em grande parte dos computadores pessoais do mundo inteiro.
Quinta geração: computador de baixa potência e invisíveis
Tanenbaum (2013) afirma que, em 1981, o governo japonês anunciou que estava planejando 
gastar 500 milhões de dólares para ajudar empresas a desenvolver computadores de 
quinta geração que seriam baseados em inteligência artificial e representariam um salto 
quântico em relação aos computadores “burros” da quarta geração. No entanto, o que 
caracterizou a quinta geração de computadores foi o encolhimento dos computadores. 
O primeiro tablet foi lançado em 1989 pela Grid Systems, denominado GridPad. Consistia 
em uma pequena tela em que os usuários podiam escrever com uma caneta especial 
para controlar o sistema.
22
Hoje em dia, são projetados computadores “invisíveis”, embutidos em eletrodomésticos, 
relógios, cartões bancários e diversos outros dispositivos. Esses processadores permitem 
maior funcionalidade e custos mais baixos em uma ampla variedade de aplicações. 
Um aspecto peculiar desses computadores embutidos é que o hardware e o software 
costumam ser projetados em conjunto.
Dessa forma entende-se a primeira geração como máquinas de válvulas (por exemplo, o 
ENIAC), a segunda geração como máquinas de transistores (por exemplo, o IBM 7094), a 
terceira geração como as primeiras máquinas de circuitos integrados (por exemplo, IBM 
360), a quarta geração como computadores pessoais (por exemplo, as CPUs Intel) e a 
quinta geração reflete, na verdade, mais uma mudança de paradigma do que uma nova 
arquitetura específica. Em um futuro, não tão distante, computadores estarão espalhados 
por todas as partes do mundo, embutidos em tudo (computadores, de fato, invisíveis).
MIDIATECA
Acesse a midiateca da Unidade 1 e veja o conteúdo complementar indicado pelo 
professor sobre o surgimento da microinformática.
23
Arquitetura de Computadores 
Nesta última parte da unidade, você irá estudar a arquitetura RISC e a arquitetura CISC, 
assim como conhecer o pipeline, ou seja, paralelismos e seus tipos.
Arquitetura RISC
A arquitetura Reduced Instruction Set Computer — RISC (Computador com Conjunto 
de Instruções Reduzidas), foi criada na década de 1980. Os processadores RISC 
apresentavam diferenças significativas em relação a outros existentes na época. Uma 
vez que essas CPUs eram incompatíveis com as outras do mesmo período, conforme 
afirma Corrêa (2016), seus projetistas tinham liberdade para escolher novos conjuntos de 
instruções que maximizassem o desempenho total do sistema.
Embora a fase inicial estivesse dirigida a instruções simples, que podiam ser executadas 
rapidamente, logo se percebeu que projetar instruções capazesde ser iniciadas com 
rapidez era a chave para o bom desempenho dos computadores modernos. Na verdade, 
o tempo que uma instrução demorava para ser iniciada importava menos do que a 
quantidade de instruções que podiam ser inicias por segundo.
Os processadores RISC caracterizam-se, portanto, por contar com um pequeno conjunto 
de instruções, as quais fazem o mínimo possível de operações simples. Entretanto, um 
subconjunto de instruções simples simula as instruções mais complexas, o que torna a 
programação em RISC mais difícil e demorada que aquela realizada por outros projetos, 
CISC, por exemplo.
Arquitetura CISC
A arquitetura Complex Instruction Set Computer — CISC (Computador com Conjunto de 
Instruções Complexas) apresenta um grande conjunto de instruções simples e complexas. 
Isso faz com que a programação de computadores, com base nessa arquitetura, seja 
mais fácil que em computadores com base em outros projetos. Por outro lado, segundo 
Corrêa (2016), a complexidade do conjunto de instruções torna os circuitos da CPU e da 
unidade de controle bastante complicados. 
24
Houve uma tentativa de criar uma arquitetura mista ora denominada CRISC, 
que apresentaria tanto as características da arquitetura RISCO como as 
características da arquitetura CISC. Obviamente, esse foi um caso de 
insucesso, porém serviu como ideia para que os computadores modernos 
fossem projetados com as duas arquiteturas, RISC e CISC, mantendo suas 
características primárias.
Curiosidade
Um ponto importante a ser considerado no estudo da história dos computadores está na 
busca contínua da melhoria de desempenho dos computadores, buscando torná-los mais 
rápidos e eficientes. Nesse viés, o modo de alcançar esse objetivo é tornar os chips mais 
rápidos, aumentando sua velocidade de clock, independentemente de sua arquitetura, 
RISC ou CISC. Para tanto, o paralelismo, conhecido tecnicamente como pipeline, é um 
meio viável de conseguir um desempenho ainda melhor para dada velocidade de clock. 
Na verdade, paralelismo refere-se à execução de duas ou mais coisas ao mesmo tempo. 
Veja agora as duas modalidades gerais de paralelismo:
O paralelismo é explorado 
dentro de instruções 
individuais para obter da 
máquina mais instruções por 
segundo.
1. Nível de instrução
Várias CPUs trabalham juntas 
para a solução do mesmo 
problema, no entanto, cada 
abordagem tem seus próprios 
méritos.
2. Nível do processador
25
Saiba mais
Os primeiros sistemas de processamento paralelo foram construídos no final 
dos anos 1960 e tinham somente dois processadores. Os anos de 1970 viram 
a introdução de supercomputadores com até 32 processadores, e os anos 
de 1980 trouxeram os primeiros sistemas com mais de 1000 processadores. 
Finalmente, em 1999, a IBM anunciou a construção de um supercomputador, 
chamado Blue Gene. Esse computador maciçamente paralelo continha mais 
de um milhão de processadores, cada qual com sua própria memória. 
A partir dos computadores com processadores 486, a Intel passou a utilizar 
tanto a arquitetura RISC como a arquitetura CISC. Dessa forma, a máquina 
contém um núcleo RISC, que executa as instruções mais simples e um 
único ciclo do caminho de dados, enquanto interpreta as instruções mais 
complicadas, mais complexas no modo CISC.
MIDIATECA
Acesse a midiateca da Unidade 1 e veja o conteúdo complementar indicado pelo 
professor sobre a evolução da informática.
26
NA PRÁTICA
Uma empresa da área de Sistema de Informação foi contratada para dar apoio quanto 
ao planejamento e gerenciamento da infraestrutura de recursos de informação aos 
sócios que estavam abrindo um novo escritório. Uma das orientações da empresa 
da área de Sistema de Informação é que os computadores fossem da Intel. Isso 
porque a Intel apresenta computadores com processadores da sexta geração. 
Portanto, são mais rápidos, têm recursos de segurança integrada e também mais 
compatíveis com o Windows 10. 
A empresa explicou aos sócios do novo escritório que esses computadores fazem 
parte da Era Skylake. “Skylake é o nome da microarquitetura com manufatura de 14 
nanômetros da Intel, a qual, por sua vez, é o ponto de partida da sexta geração de 
processadores da empresa. Como é de se esperar de qualquer evolução, a sexta 
geração dos processadores Intel Core oferece desempenho melhorado e novas 
experiências com menor consumo de energia. Além disso, ela amplia o leque de 
designs possíveis para os dispositivos em que estará embarcada: tablets, computer 
stick, dispositivos 2 em 1, all-in-one com 4K e as novas workstations móveis.” 
Um exemplo de computador de ponta no mercado está ligado à família do 
processador Intel Xeon E3, que “passa a equipar também uma série de workstations 
móveis, enquanto a sexta geração de processadores Intel vPro é voltada para 
negócios e empresas. Mais de 48 processadores com a Intel Iris e Iris Pro Graphics 
fazem parte dessa nova geração, que possui foco também na Internet das Coisas. As 
indústrias de varejo, médica, industrial, vigilância e segurança digital se beneficiam 
das melhorias dos novos processadores e contam com designs de Internet das 
Coisas da borda para a nuvem.”
Fonte: INTEL. Processadores da sexta geração da Intel são mais rápidos, cheios de recursos 
de segurança integrada e ainda mais compatíveis com o Windows 10. Inovação Tecnológica, 
11 janeiro 2017.
27
Resumo da Unidade 1
Nesta unidade, você conheceu a organização estruturada de computador com os 
seus mais diferentes níveis. Compreendeu a diferença dos computadores analógicos 
e digitais, destacando a máquina de calcular primitiva. Aprendeu também a história 
dos computadores, conhecendo as características de suas gerações, além de ter 
compreendido as diferenças apontadas nas arquiteturas RISC e CISC.
Nesta unidade, destacaram-se os conhecimentos:
• Da organização estruturada de computador com os seus mais diferentes níveis, 
que nos leva à compreensão lógica dos computadores analógicos e digitais. 
• Do que caracterizou as diversas gerações de computadores, o que nos reporta a 
um importante marco histórico da própria evolução dos computadores.
• Das arquiteturas de computadores, RISC e CISC, que nos conduzem às mais 
modernas arquiteturas de computadores dos dias atuais.
CONCEITO
28
Referências 
CORRÊA, A. G. D. Organização e Arquitetura de Computadores. São Paulo: Pearson 
Education do Brasil, 2016. [Biblioteca Virtual]
STALLINGS, W. Arquitetura e Organização de Computadores. 10. ed. São Paulo: Pearson 
Education, 2017. [Biblioteca Virtual] 
TANENBAUM, A. S. Organização Estruturada de Computadores. 6. ed. São Paulo: 
Pearson Prentice Hall, 2013. [Biblioteca Virtual] 
A informação e sua representação
UNIDADE 2
30
Esta unidade é importante para que você conheça os sistemas de numeração (decimal, 
binário, octal e hexadecimal) para a realização das conversões entre os diferentes 
sistemas de bases de numeração. Você também irá efetuar cálculos elementares com 
números binários.
INTRODUÇÃO
OBJETIVO
Nesta unidade, você será capaz de:
• Fomentar a conversão de bases e suas aplicações dentro do sistema numérico 
utilizado na linguagem de máquina, tomando como base o sistema binário, 
visando conhecer a tabela ASCII e suas funcionalidades.
31
Sistemas de Numeração 
Para uma melhor compreensão dos sistemas de numeração é necessário entendermos 
alguns conceitos elementares acerca deste estudo. O cerne dos sistemas de numeração 
é o número ou numeral. Um numeral nada mais é que um símbolo ou grupo de símbolos 
que representa um número em determinado momento da evolução do ser humano, 
independentemente da era de referência, dos primórdios aos tempos modernos. 
Tem-se, portanto, que, em determinada escrita ou época, os numerais diferenciaram-se 
dos números do mesmo modo que as palavras se diferenciaram das coisas às quais elas 
se referem. Os símbolos “10”, “dez” e “X” (decem em latim) são numerais distintos que 
representam o mesmo número, embora escrito de formas diferentese épocas diferentes. 
Um sistema de numeração, também conhecido como sistema numeral, é um sistema em 
que um conjunto de números são representados por numerais de uma forma consistente. 
Pode ser visto como o contexto que permite ao numeral “10” ser interpretado como o 
numeral binário para dois ou o numeral decimal para dez, por exemplo.
Vejamos algumas possíveis representações tomando como base a contagem de 0 a 15 
em várias bases numéricas (decimal, binária, octal e hexadecimal):
Figura 1. Contagem de 0 a 15.
Fonte: Elaborada pelo autor (2019).
Base Representação
Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Binária 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F
Neste viés, é importante ressaltar que iremos estudar os sistemas de numeração decimal, 
binário, octal e hexadecimal, sistemas estes que compõem a Tabela ASCII - American 
Standard Code for Information Interchange (Tabela de Código Padrão Norte-Americano 
para Intercâmbio de Informações).
32
Curiosidade
A tabela de código padrão Norte-Americano para intercâmbio de informações 
não é nenhuma novidade para quem já trabalha com informática, processamento 
de dados, principalmente com desenvolvimento de produtos de software. Ela 
contém os quatro sistemas de numeração mais utilizados por profissionais de 
Engenharia da Computação, Ciência da Computação, Sistemas de Informação, 
Engenharia Elétrica, dentre outras.
Sistema Decimal
Conforme afirma Stallings (2017), no dia a dia utilizamos um sistema baseado em dígitos 
decimais (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) para a representação de números, e nos referimos a este 
sistema como sistema decimal. Considere o que o número 83 significa. Ele quer dizer 8 
dezenas e mais 3 unidades. Logo:
83 = (8 x 10) + 3
O número 4.728 significa 4 milhares, 7 sentenas, duas dezenas e mais 8 unidades.
4.728 = (4 x 1.000) + (7 x 100) + (2 x 10) + 8
Diz-se, portanto, que o sistema decimal tem uma base ou raiz de 10. Isso quer dizer que 
cada dígito do número é multiplicado por 10, elevado a uma potência que corresponde à 
posição do dígito. Assim:
83 = (8 x 10¹) + (3 x 100)
4.728 = (4 x 103) + (7 x 102) + 2 x 10¹) + (8 x 100)
Cabe informar que o mesmo princípio é mantido para as frações decimais, para tanto as 
potências negativas de dez são usadas. Dessa forma a fração decimal 0,256 permanece 
para 2 décimos mais 5 centésimos mais 6 milésimos. Logo:
0,256 = (2 x 10-1) + (5 x 10-2) + (6 x 10-3)
33
Um número composto tanto pela parte inteira quanto pela parte fracionária tem números 
elevados tanto para as potências de 10 positivas (parte inteira), quanto para as negativas 
(parte fracionária). Veja:
442,256 = (4 x 102) + (4 x 101) + (2 x 100) + (2 x 10-1) + (5 x 10-2) + (6 x 10-3)
Sabe-se que, em qualquer número, o dígito mais à esquerda é conhecido como dígito 
mais significativo, pois ele contém o valor mais alto. Em contrapartida, o dígito mais 
à direita é chamado de dígito menos significativo, pois ele contém o valor mais baixo. 
No número decimal do exemplo anterior, o número 4 à esquerda é o número mais 
significativo, e o número 6 à direita é o número menos significativo.
Em geral, para a representação decimal de X = { … d2d1d0, d-1d-2d-3 … }, o valor de X é
X = ∑ (𝒅𝒊𝒙𝟏𝟎𝒊)𝒊
Sistema Binário
De acordo com Corrêa (2016), no sistema binário há apenas dois símbolos ou valores 
possíveis para os dígitos: 0 e 1. Embora apresente apenas dois números, esse sistema 
de numeração pode representar qualquer quantidade que possa ser representada em 
decimal ou em qualquer outro sistema de numeração, como é o caso dos sistemas octal 
e hexadecimal.
Para que isso ocorra com apenas dois algarismos, o sistema binário utiliza um número 
maior de dígitos que o sistema decimal para expressar determinado valor.
Da mesma forma que o sistema decimal, os números são representados dígito a dígito, 
considerando os dígitos mais significativos e os menos significativos, principalmente 
quando se trata de números binários fracionários. Vejamos o exemplo a seguir:
1011,1012 = (1 x 2³) + (0 x 2²) + (1 x 2¹) + (1 x 20) + (1 x 2-1) + (0 x 2-2) + (1 x 2-3)
34
Curiosidade
No sistema binário, o termo em inglês Binary Digit (dígito binário) é quase 
sempre abreviado, sendo, portanto, utilizado usualmente o termo bit para 
designá-lo. Um bit pode assumir dois valores possíveis, 0 e 1. Um conjunto de 
8 bits forma tecnicamente o que se chama de byte. Um conjunto de 4 bits é 
denominado Nibble. Uma Word é composta por um conjunto de 16 bits. Quando 
o número de bits de uma Word é aumentado, por exemplo, 32 ou 64 bits, temos, 
portanto, uma Dword (Double Word ou palavra dupla) e uma Qword (Quad Word 
ou palavra quádrupla), respectivamente. 
Em geral, para a representação binária do valor de Y = { … b2b1b0,b-1b-2b-3 … }, valor de Y é
Y = ∑ (𝒅𝒊𝒙𝟐𝒊)𝒊
Sistema Octal
Tanenbaum (2013) afirma que, no sistema octal, existem 8 símbolos ou algarismos 
possíveis que formam os números desse sistema de numeração. Os números do sistema 
octal são
0, 1, 2, 3, 4, 5, 6 e 7.
Em geral, para a representação octal do valor de W = { … o2o1o0,o-1o-2o-3 … }, valor de W é
W = ∑ (𝒅𝒊𝒙𝟖𝒊)𝒊
Sistema Hexadecimal
No sistema hexadecimal, segundo Tanenbaum (2013), para os números hexadecimais 
são necessários 16 dígitos. Dessa forma, precisamos de 6 novos símbolos além dos 10 
símbolos já conhecidos do sistema decimal. Por convenção, além dos algarismos de 0 a 
9, usa-se letras maiúsculas de A a F para representar os 6 dígitos que aparecem depois 
do algarismo 9. 
35
Os números hexadecimais são, portanto, formados pelos algarismos 
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F.
Em geral, para a representação hexadecimal do valor de Z = { … h2h1h0,h-1h-2h-3 … }, valor 
de Z é
Z = ∑ (𝒅𝒊𝒙𝟏𝟔𝒊)𝒊
Decerto, em todas as fórmulas utilizadas, “B” representa a base do sistema de numeração, 
“n” representa a quantidade de dígitos disponíveis para a representação dos números, e 
“a” representa qualquer número. Essa fórmula geral representa um número inteiro.
∑
−
−
=
1
0
).(
n
i
i
i Bxa
Notação Posicional 
As representações numéricas permitem visualizar o mesmo número em diferentes bases 
de numeração. Isso é possível devido à conversão de notação das bases numéricas. 
Observe:
Números Decimais: normalmente – somente o numeral
-5, 30, 44
Números Binários: numeral com a letra b no final
-101b, 11110b, 101100b 
Número Octal: numeral com um zero à esquerda
-05, 036, 054
Número Hexadecimal: numeral com h no final ou 0x na frente do número
-5h, 1Eh, 2Ch OU -0x5, 0x1E, 0x2C
36
No estudo dos sistemas de numeração existe a notação posicional que permite calcular 
a quantidade que um número representa. Por exemplo, que quantidade representa o 
símbolo 1?
Na verdade, dependerá da posição em que ele aparece no número completo. Vamos 
então considerar o número 1968. Em termos de contagem, o número significa:
Milhar
1
Centena
9
Dezena
6
Unidade
8
1 x 1000 + 9 x 100 + 6 x 10 + 8 x 1
Observe que o valor de contagem de cada símbolo depende da posição em que o 
algarismo se encontre no numeral.
MIDIATECA
Acesse a midiateca da Unidade 2 e veja o conteúdo complementar indicado pelo 
professor sobre a Tabela ASCII.
37
Conversão entre os Sistemas de Numeração 
Conversão de base numérica é o nome dado à passagem da representação de um 
número de uma base numérica para outra, alterando sua simbologia para se adequar 
à nova base, sem perder o real valor do número. A base que normalmente usamos é a 
decimal ou base dez, pois contém dez algarismos, conforme já foi estudado.
Iremos, portanto, realizar a operação de conversão de bases entre os sistemas de 
numeração decimal, binário e hexadecimal.
Base Decimal para Base Binária
A conversão da base decimal para a binária é bem simples de operacionalizar. Basta 
pegar o número na base dez e dividi-lo sucessivamente por dois, base dois, até queo 
quociente seja menor que o divisor.
Vamos tomar como exemplo o número 25(10). Qual será o seu correspondente na base 2?
Em seguida, para formarmos o número na base binária, basta tomar o número quociente 
concatenado, sem intervalos, com os demais números encontrados como resto das 
divisões, de baixo para cima. 
Então, 25(10) = 11001(2)
Vejamos outro exemplo: converter o número 65(10) para X(2). 
38
Então, 65(10) = 1000001(2)
Base Binária para Base Decimal
A conversão de um número da base binária para a base decimal é feita pelo método 
denominado Método Polinomial. Esse método considera que cada algarismo do número 
é multiplicado pelo número dois, que corresponde ao número da base binária, elevado 
a sua respectiva potência, iniciada por 0, até a quantidade de algarismos do número, 
sempre da direita para a esquerda. 
Vamos tomar como exemplo o número 101011(2). Qual será o seu correspondente na 
base dez?
Em seguida, soma-se todas as parcelas referentes aos resultados das multiplicações 
decorridas. Então, teremos: 1 + 2 + 0 + 8 + 0 + 32 = 43
Portanto, 101011(2) = 43(10)
Vejamos outro exemplo: Converter o número 1001101(2) para X(10).
39
Somando as parcelas teremos: 1 + 0 + 4 + 8 + 0 + 0 + 64 = 77
Portanto, 1001101(2) = 77(10)
Observe que para todos os processos de conversão de base binária para decimal tomou-
se apenas números inteiros. O mesmo pode ocorrer utilizando-se números binários 
fracionários. Veja o exemplo a seguir: 
Converter o número 1011010,1010(2) para X(10).
Somando as parcelas, tanto a parte inteira, quanto a parte fracionária, teremos: 0 + 2 + 0 
+ 8 +16 + 0 + 64 “,” 0 + 0,125 + 0 + 0,5 = 90,625
Portanto, 1011010,1010(2) = 90,625(10)
Vejamos outro exemplo: converter o número 11001,110(2) para X(10).
40
Somando as parcelas, tanto a parte inteira, quanto a parte fracionária, teremos: 1 + 0 + 0 
+ 8 +16 “,” 0,5 + 0,25 + 0 = 25,75
Portanto, 11001,110(2) = 25,75(10)
 
Base Decimal para Base Hexadecimal
A conversão de um número da base decimal para a base hexadecimal acontece quando 
se toma o número da base dez e divide-se sucessivamente por 16 (base hexadecimal) 
até que o quociente seja menor que o divisor. Para a formação do número na base 
hexadecimal, basta tomar o número quociente concatenado, sem intervalos, com os 
demais números encontrados como resto das divisões, de baixo para cima, respeitando 
o sistema de numeração da base dezesseis, ou seja, a utilização das letras de A a F, para 
a complementação do próprio sistema de numeração. 
Então, 1237(10) corresponde a quanto na base 16?
Logo, 1237(10) é igual a 4D5(16), pois 13, na base 16, corresponde à letra D.
Vejamos outro exemplo: Conversão do número 894(10) para a base 16.
41
Logo, 894(10) é igual a 37E(16), pois 14, na base 16, corresponde à letra E.
Base Hexadecimal para Base Decimal
A conversão de um número da base hexadecimal para a base decimal é feita pelo 
método polinomial, conforme já estudado anteriormente. Então considera-se que cada 
algarismo do número é multiplicado pelo número 16, que corresponde ao número da 
base 16, elevado a sua respectiva potência, iniciada por 0 até a quantidade de algarismos 
do número, sempre da direita para a esquerda. 
Vamos tomar como exemplo o número A3(16). Qual será o seu correspondente na base 10?
Em seguida, soma-se todas as parcelas referentes aos resultados das multiplicações 
decorridas. Então, teremos: 3 + 160 = 163
Portanto, A3(16) = 163(10)
Vejamos outro exemplo: converter o número F15(16) para X(10).
Então, teremos: 5 + 16 + 3840 = 3861
Portanto, F15(16) = 3861(10)
Base Decimal para Base Octal
A conversão de um número da base decimal para a base octal ocorre quando toma-se o 
número da base dez e divide-se sucessivamente por 8 (base octal) até que o quociente 
seja menor que o divisor. Também, para a formação do número na base octal, basta tomar 
42
o número quociente concatenado, sem intervalos, com os demais números encontrados 
como resto das divisões, de baixo para cima.
Então, 35(10) corresponde a quanto na base octal?
Logo, 35(10) é igual a 43(8).
Vejamos outro exemplo: Conversão do número 115(10) para a base octal.
Logo, 115(10) é igual a 163(8).
Base Octal para Base Decimal
A conversão de um número da base octal para a base decimal é feita pelo método 
polinomial, ou seja, considera-se que cada algarismo do número é multiplicado pelo 
número oito que corresponde ao número da base octal, elevado a sua respectiva 
potência, iniciada por 0 até a quantidade de algarismos do número, sempre da direita 
para a esquerda. 
Vamos tomar como exemplo o número 71263(8). Qual será o seu correspondente na 
base dez?
43
Em seguida, soma-se todas as parcelas referentes aos resultados das multiplicações 
decorridas. Então, teremos: 3 + 48 + 128 + 512 + 28672 = 29363(10).
Portanto, 71263(8) = 29363(10)
Vamos tomar como exemplo o número 171(8). Qual será o seu correspondente na base 10?
Então, teremos: 1 + 56 + 64 = 121
Portanto, 171(8) = 121(10)
Base Binária para Base Hexadecimal
Para a conversão de base binária para a base hexadecimal, basta tomar-se o número da base 
binária, sempre da direita para a esquerda, separando todos os números em grupo de quatro 
dígitos (16 <> 24), completando com zeros o grupo da esquerda, quando for necessário.
Por exemplo: vamos admitir o número 10010110110(2). Qual o seu equivalente na base 16?
Em seguida, concatena-se todos os algarismos correspondentes na base 16, não 
esquecendo da representação das letras de A até F nesse sistema de numeração. 
Então, teremos: 4B6, considerando que o grupo de bits que apresentou o resultado 11 
será representado pela letra B.
Portanto, 10010110110(2) = 4B6(16)
Vejamos outro exemplo: converta o número 110010100011(2) para X(16).
44
Logo, 110010100011(2) é igual a CA2(16).
Base Binária para Base Octal
Para a conversão de base binária para a base octal, basta tomar-se o número da base 
binária, sempre da direita para a esquerda, separando todos os números em grupo de três 
dígitos (8 <> 2³), completando com zeros o grupo da esquerda, quando for necessário.
Por exemplo: vamos admitir o número 10010110110(2). Qual o seu equivalente na base octal?
Em seguida, concatena-se todos os algarismos correspondentes na base octal. 
Então, teremos: 2266.
Portanto, 10010110110(2) = 2266(8)
Vejamos outro exemplo: converta o número 101111100(2) para X(16).
Logo, 101111100(2) é igual a 574(8).
Curiosidade
A tabela ASCII - American Standard Code for Information Interchange é um 
código binário (cadeias de bits [0 e 1]) que codifica um conjunto de 128 sinais: 
95 sinais gráficos (letras do alfabeto latino, sinais de pontuação e sinais 
matemáticos) e 33 sinais de controle, utilizando portanto apenas 7 bits para 
representar todos os seus símbolos.
45
MIDIATECA
Acesse a midiateca da Unidade 2 e veja o conteúdo complementar indicado pelo 
professor sobre a conversão de base numérica com calculadora.
46
Aritmética Binária 
Os computadores e as calculadoras digitais realizam várias operações aritméticas com 
números representados no formato binário (CORRÊA, 2016). Nosso objetivo é realizar 
as operações aritméticas elementares com números binários: adição, subtração, 
multiplicação e divisão.
Adição
A soma de dois números binários é realizada da mesma forma que a adição de números 
decimais. Em geral, os mesmos passos são seguidos em uma adição binária. Entretanto, 
apenas quatro casos podem ocorrer na soma de dois dígitos binários em qualquer 
posição. 
Estes são os casos:
0 + 0 = 0
1 + 0 = 1
1 + 1 = 10 > 0 + carry de 1 para a próxima posição
1 + 1 + 1 = 11 > 1 + carry de 1 para a próxima posição
Esse último caso ocorre quando dois bits de determinada posição estão em nível 1 e há 
um carry de posição anterior.
Vejamos alguns exemplos de adição com binários:
a) 011 + 110 = 1001
b) 1001 + 1111 = 11000
47
c) 11,011 + 10,110 = 110,001
Curiosidade
Na adição de binários, utiliza-se o que chamamos de tabela-verdade de um 
meio-somador.Subtração
A subtração de dois números binários é realizada da mesma forma que a subtração 
de números decimais. Em geral, os mesmos passos são seguidos em uma subtração 
binária. Quando ocorre a subtração de um número com outro de menor parcela, este 
deverá ter seu valor complementado a partir do número imediatamente à esquerda 
daquele que estiver sendo operado. Vamos analisar os possíveis casos com binários:
1 – 1 = 0
1 – 0 = 1
0 – 0 = 0
0 – 1 = ? > necessita de um valor de complemento da parcela anterior.
48
Curiosidade
Na subtração de binários utiliza-se o que chamamos de tabela-verdade de um 
meio-diminuidor. 
Vejamos alguns exemplos:
a) 1 – 1 = 0
b) 11 – 10 = 01
c) 110 – 100 = 010
d) 1100 – 1001 = 0011
49
Multiplicação
Em comparação à adição e à subtração, a multiplicação é considerada uma operação 
complexa, seja ela realizada no hardware ou no software. No entanto, sua operação é 
bem simples, pois todo número multiplicado por 0 é 0 e, todo o número multiplicado por 
1 é ele mesmo. Em seguida, somam-se as parcelas intermediárias, também conhecidas 
como produtos parciais, conforme podemos observar nos exemplos a seguir:
a) 1 x 1 = 1
b) 11 x 10 = 110
c) 110 x 100 = 11000
d) 1100 x 1001 = 1101100
50
Divisão
A divisão de binário é um pouco mais complexa que a multiplicação, mas é baseada nos 
mesmos princípios gerais. Então, realiza-se a divisão de forma aritmética crisp, efetuando 
as adições conforme necessidades da operação, até que se complete toda a operação. 
Vejamos alguns exemplos:
a) 1 ÷ 1 = 1
b) 110 ÷ 10 = 11
c) 11110 ÷ 100 = 111,1
d) 110110 ÷ 110 = 1001
MIDIATECA
Acesse a midiateca da Unidade 2 e veja o conteúdo complementar indicado pelo 
professor sobre binários com vírgula.
51
NA PRÁTICA
No dia a dia, cientistas da computação precisam realizar operações elementares 
por meio da aritmética binária em busca de solução ou confirmação de certo status 
acerca da arquitetura de computadores, principalmente no que tange ao uso da 
memória do computador. Neste viés, são apresentadas as seguintes situações de 
cálculos:
a) 101010 + 101101
b) 11001 – 1011
c) 1101 x 1011
d) 110110 ÷ 110
Veja os resultados obtidos nas operações realizadas:
101010 + 101101 = 1010111
11001 – 1011 = 1110
1101 x 1011 = 10001111
110110 ÷ 110 = 1001
52
Resumo da Unidade 2
Nesta unidade, você conheceu os sistemas de numeração decimal, binário, octal e 
hexadecimal. Transformações ou conversões de números foram realizadas por meio das 
mudanças de bases a partir dos quatro sistemas de numeração estudados. Além disso, 
você realizou as operações aritméticas elementares, soma, subtração, multiplicação e 
divisão, com números binários (aritmética binária).
CONCEITO
Nesta unidade, destacaram-se as operações elementares: soma, subtração, 
multiplicação e divisão com números binários (aritmética binária).
53
Referências 
CORRÊA, A. G. D. Organização e Arquitetura de Computadores. São Paulo: Pearson 
Education do Brasil, 2016. Disponível na Biblioteca Virtual. 
STALLINGS, W. Arquitetura e Organização de Computadores. 10. ed. São Paulo: Pearson 
Education, 2017. Disponível na Biblioteca Virtual.
TANENBAUM, A. S. Organização Estruturada de Computadores. 6. ed. São Paulo: 
Pearson Prentice Hall, 2013. Disponível na Biblioteca Virtual.
Componentes do computador
UNIDADE 3
55
Nesta unidade, você conhecerá os conceitos de arquitetura de computador, seus 
periféricos e a relação de entrada e saída por meio da apresentação dos modelos de 
von Neumann e de barramento de sistema. Além disso, você será capaz de identificar as 
partes integrantes do sistema de computação.
INTRODUÇÃO
OBJETIVO
Nesta unidade, você será capaz de:
• Conhecer os conceitos de arquitetura de computador, seus periféricos e a 
relação de entrada e saída.
56
Modelo de von Neumann 
O modelo de von Neumann recebeu esse nome em homenagem ao matemático John von 
Neumann, que você pode observar na Figura 1, considerado o criador dos computadores 
da forma como são projetados até os dias atuais.
Fonte: wikipedia.org
John von Neumann.
Figura 1 - Modelo de von Neumann.
Fonte: Tanenbaum (2013).
Como surgiu esse modelo? 
A ideia do modelo surgiu da necessidade de armazenar 
programas em um computador, pois, até então, ainda não havia 
formas de realizar isso. Von Neumann e outros pesquisadores 
descobriram que, utilizando dispositivos de memória em formas 
de linha de retardo de mercúrio, poderiam armazenar instruções 
de programas.
Memória
Entrada Saída
Unidade de 
controle
Acumulador
Unidade de lógica e 
aritimética
A proposta inicial de um computador de programa armazenado, denominado IAS 
(Princeton Institute for Advanced Studies), foi relatada pelo próprio von Neumann. Ele era 
composto da seguinte forma: 
https://pt.wikipedia.org/wiki/John_von_Neumann.
57
• Central Arithmetic (CA): o dispositivo deve realizar as operações elementares da 
aritmética mais frequentemente e, por esse motivo, precisa ter unidades especializadas 
apenas para essas operações.
• Control Center (CC): a sequenciação apropriada das operações pode ser executada, 
de forma mais eficiente, por um controle central.
• Memória (M): qualquer dispositivo que tiver de executar longas e complicadas 
sequências de operações precisa ter uma memória considerável. 
• Recording (R): deve ser capaz de manter contato de entrada e saída, que são os 
neurônios correspondentes sensoriais e motores do cérebro humano.
• Input (I): é necessário ter unidades para transferência de informações de R para M.
• Output (O): é necessário ter unidades para transferência de informações de M para R.
O modelo de von Neumann, de acordo com Stallings (2017), é uma arquitetura de 
computador que se caracteriza pela possibilidade de uma máquina digital armazenar 
seus programas no mesmo espaço de memória em que os dados, podendo assim 
manipular tais programas. Essa arquitetura é um projeto-modelo de um computador 
digital de programa armazenado que utiliza uma unidade de processamento (CPU) e uma 
de armazenamento (“memória”) para comportar, respectivamente, instruções e dados.
Veja, a seguir, os componentes reunidos na máquina proposta por von Neumann:
• Memória.
• Unidade aritmética e lógica.
• Unidade central de processamento.
• Unidade de controle.
Qual é a função dessa máquina?
A função é a mesma da tabela de controle da máquina de Turing universal, ou seja, 
buscar um programa na memória, instrução por instrução, e executá-lo sobre os dados 
de entrada.
Todos os elementos dessa arquitetura são alinhados da estrutura 
hardware do CPU, assim o sistema pode realizar todas as suas atividades 
sem apresentar erros no desempenho. 
58
MIDIATECA
Acesse a midiateca da Unidade 3 e veja o conteúdo complementar indicado pelo 
professor sobre arquitetura de von Neumann.
59
Modelo de barramento de sistema 
O modelo de barramento de sistema representa um caminho de comunicação que 
conecta dois ou mais equipamentos tecnicamente denominado barramento de sistema 
(bus), conforme ilustra a Figura 2, apresentando também um barramento de dados, um 
de endereços e um de controle.
Algumas arquiteturas em particular apresentam um barramento de entrada e saída 
separado dos demais barramentos. 
Figura 2 - Modelo de barramento de sistema.
Fonte: Corrêa (2013).
CPU
(ALU, registradores 
e controle)
Memória principal Entrada e 
saída E/S
Nesse modelo, cada barramento é composto por um conjunto de fios interligando os 
componentes do sistema. Por exemplo, ao nos referirmos a um sistema de 32 bits no 
barramento de dados, isso quer dizer que existem 32 fios para transmitir dados, e eles 
estão interligando todas as unidades do computador. 
Conforme afirma Tanenbaum (2013), um computador moderno tem, normalmente, três 
barramentos:
60
1. Barramento de dados: para transmitir dados.
2. Barramento de endereços: para identificar onde o dado deve ser lido/escrito 
(endereço de memória). 
3. Barramento de controle: para coordenar o acessoaos barramentos de dados e 
endereços para que não ocorram conflitos.
No modelo de barramento, o acesso a dispositivos pode ser realizado de duas maneiras 
(TANENBAUM, 2013): 
• Existem arquiteturas que exigem que os dispositivos sejam 
mapeados em memória. Dessa forma, ocorre que:
• Para enviar uma informação a um dispositivo desse tipo, a 
CPU deve escrever em um (ou mais) endereço de memória 
específico. 
• Para receber informações do dispositivo, a CPU deve ler um 
(ou mais) endereço de memória específico.
• Há também arquiteturas que são mais flexíveis e possuem 
dois tipos de endereçamento:
• Endereçamento de memória.
• Endereçamento de entrada e saída (E/S). 
• Nesse caso, os dispositivos podem tanto ser mapeados em 
memória como em portas de E/S. O uso de mapeamento 
de dispositivos em portas de E/S permite que todo o 
endereçamento de memória esteja disponível, efetivamente, 
para o acesso a ela.
1
2
MIDIATECA
Acesse a midiateca da Unidade 3 e veja o conteúdo complementar indicado pelo 
professor sobre periféricos — dispositivos de entrada e saída.
61
Sistemas de computação 
Um computador digital consiste em um sistema interconectado de processadores, 
memória e dispositivos de entrada/saída (TANENBAUM, 2013). Nesta última parte desta 
unidade, você verá uma introdução sobre esses três componentes e sua interconexão, e 
sua importância para sistemas de computação. 
Processadores
A organização de um computador simples com barramento é ilustrada na Figura 3. A CPU 
(Central Processing Unit – Unidade de Processamento Central) é o “cérebro” do computador. 
E qual é sua função?
Sua função é executar programas armazenados na memória principal, buscando suas 
instruções, examinando-as e, então, executando-as uma após a outra. 
Os componentes do computador são conectados por um barramento, conjunto de fios 
paralelos que transmitem endereços, dados e sinais de controle.
Barramentos podem ser externos à CPU, conectando-a à memória e aos dispositivos de 
entrada/saída, mas também podem ser internos. Os computadores modernos possuem 
diversos barramentos.
Figura 3 - Organização de um computador simples.
Fonte: Tanenbaum (2013).
Unidade de 
controle
Barramento
Dispositivos de E/S
Unidade central de processamento (CPU)
Unidade de lógica 
e aritimética (ULA)
Registradores
Memória
Principal
Disco Impressora
62
Vamos entender melhor a CPU?
A CPU é composta de diversas partes distintas. A unidade de controle é responsável por 
buscar instruções na memória principal e determinar seu tipo. Já a unidade de aritmética 
e lógica efetua operações de cálculos e processamentos lógicos.
A CPU também contém uma pequena memória de alta velocidade usada para armazenar 
resultados temporários e realizar alguns controles de informações. Essa memória é 
composta de uma quantidade de registradores, cada um deles com determinados 
tamanho e função — em geral, eles apresentam o mesmo tamanho. Registradores podem 
ser lidos e escritos em alta velocidade porque são internos à CPU.
O registrador mais importante é o contador de programas (PC – Program Counter), 
que indica a próxima instrução a ser executada. Com tamanha importância, também 
é o registrador de instrução (IR – Instruction Register) que retém a instrução que está 
sendo executada naquele exato momento. A maioria dos computadores também possui 
diversos outros registradores, alguns de uso geral e outros de uso específico. 
A organização interna de parte de uma típica CPU baseada no modelo de von Neumann 
está ilustrada na Figura 4. 
Figura 4 - Caminho de dados de uma típica máquina de von Neumann.
Fonte: Tanenbaum (2013).
A+B
A
B
Registradores
Registradores de entrada do ULA
Registrador de saída do ULA
Barramento de entrada do ULA
ULA
A+B
A B
63
Essa parte é tecnicamente denominada “caminho de dados” e é composta por 
registradores, unidade de aritmética e lógica e por diversos barramentos que conectam as 
partes. Os registradores alimentam dois registradores de entrada da ULA, representados 
por A e B na Figura 4.
O caminho de dados é extremamente importante para todas as máquinas. A ULA efetua 
adição, subtração e outras operações simples sobre suas entradas, produzindo dessa 
forma um resultado no registrado de saída, o qual pode ser armazenado em um registrador.
Conforme afirma Tanenbaum (2013, p. 44-45), a CPU registra cada instrução em uma 
série de pequenas etapas:
1. Trazer a próxima instrução da memória até o registrador de instrução.
2. Alterar o contador de programa para que aponte para a próxima instrução.
3. Determinar o tipo de instrução trazida.
4. Se a instrução usar uma palavra de memória (Word), determinar onde esta 
palavra está.
5. Trazer a palavra para dentro de um registrador da CPU se necessário for.
6. Executar a instrução.
7. Voltar à etapa 1 para iniciar a execução da instrução seguinte.
Tal sequência de etapas costuma ser determinada pelo ciclo buscar–decodificar–
executar, que é fundamental para a operação de todos os computadores.
Memória principal
A memória é a parte do computador na qual são armazenados os programas e os dados. 
De acordo com Tanenbaum (2013), alguns cientistas da computação usam o termo 
“armazém”, ou “armazenagem”, em vez de “memória”, se bem que “armazenagem” está 
sendo cada vez mais usado para armazenagem em disco. Sem uma memória a partir 
da qual os processadores possam ler e na qual possam gravar ou escrever informações, 
não haveria computadores digitais com programas armazenados. A memória principal 
também pode ser chamada de memória real ou primária.
Vamos, agora, compreender como funcionam as memórias?
Historicamente, as CPUs sempre foram mais rápidas que as memórias (TANENBAUM, 
2013). À medida que fica possível colocar cada vez mais circuitos em um chip, os projetistas 
estão usando essas novas facilidades no paralelismo (pipelining) e em operações
64
superescalares, fazendo com que as CPUs fiquem mais velozes. Nesse contexto, segundo 
Stallings (2017), surgiu uma memória pequena e rápida denominada tecnicamente como 
“cache”. 
A ideia básica de um cache é bem simples: as palavras (word) de memória usadas com 
mais frequência são mantidas no cache; quando a CPU precisa de uma palavra, ela 
examina em primeiro lugar a cache; então, somente se a palavra não estiver ali é que ela 
recorrerá à memória principal.
Memória secundária
Seja qual for o tamanho da memória principal, ela sempre será considerada muito 
pequena. As pessoas sempre querem armazenar mais informações do que a memória 
pode conter, ainda mais porque, à medida que a tecnologia melhora, elas começam a 
pensar em armazenar coisas que antes estavam inteiramente no reino da ficção científica 
(CORRÊA, 2016).
Para tanto surgem as memórias secundárias, também conhecidas como memória de 
massa ou auxiliar, cujo objetivo é auxiliar no armazenamento de dados. Veja, a seguir, 
alguns exemplos de memórias secundárias: 
• Disco magnético.
• Unidades de fita magnética.
• Hard disk (HD).
• Compact-disc (CD).
• Digital versatile disc (DVD).
• Pen drive.
Entrada/Saída
De acordo com Tanenbaum (2013), um sistema de computador é formado por três 
componentes principais. Vamos conhecê-los? 
65
CPU
Memórias (primária e secundária) 
Equipamentos de entrada/saída (E/S), ou input/output 
(I/O), como impressoras, escâneres e modens.
1
2
3
Vale ressaltar que a maioria dos computadores pessoais e estações de trabalho apresenta 
placa-mãe que contém um chip da CPU e diversos outros chips de suporte. Ela contém, 
também, um barramento ao longo do comprimento e soquetes nos quais os conectores 
de borda das placas de E/S podem ser inseridos. A estrutura lógica de um computador 
pessoal simples é ilustrada na Figura 5. Esse computador tem um único barramento para 
conectar a CPU, a memória e os equipamentos de entrada/saída, enquanto a maioria dos 
sistemas tem dois ou mais barramentos.
Cada dispositivo de entrada/saída consiste em duas seções: uma que contém grande 
parte da eletrônica,denominada “controlador”, e outra que contém o dispositivo de 
entrada/saída em si, tal como um drive de disco.
Figura 5 - Estrutura lógica de um computador pessoal simples.
Fonte: Tanenbaum (2013).
CPU
Barramento
Memória
Controlador
de vídeo
Controlador
de teclado
Controlador
de cd-rom
Controlador
de disco rígido
66
O controlador está, em geral, contido em uma placa que é ligada em um encaixe livre. 
Mesmo o monitor não sendo um dispositivo opcional, o controlador de vídeo às vezes 
está localizado em uma placa de encaixe do tipo plug-in para permitir que o usuário 
escolha entre placas, como uma sem acelerador gráfico, por exemplo.
Exemplo
Vamos conferir alguns exemplos?
São dispositivos de:
• Entrada: teclado, mouse, escâner, webcam etc.
• Saída: monitor de vídeo, impressora, plotador, caixa de som etc.
• Entrada/saída: leitor/gravador de CD/DVD, pen drive etc.
MIDIATECA
Acesse a midiateca da Unidade 3 e veja o conteúdo complementar indicado pelo 
professor sobre os principais componentes de um computador pessoal (PC – 
Personal Computer). 
67
NA PRÁTICA
Os processadores Intel® Core™ da 9ª Geração levam o desempenho dos PCs 
tradicionais a um patamar inteiramente novo, e, no topo, a gigante Intel apresenta 
seu principal produto tradicional, o novo i9-9900K. 
Qual foi o primeiro processador Intel caracterizado de 9ª geração?
Como resposta, a Intel apresenta o processador Intel® Core™ i9 desktop para 
usuários tradicionais. O melhor de sua categoria, o i9-9900K, com 16 MB de cache 
e tecnologia Intel® Turbo Boost 2.0, aciona o máximo em frequência turbo de 
até incríveis 5,0 GHz. Acrescente a isso suporte à multitarefa em 16 vias de alto 
desempenho acionado por 8 núcleos com Tecnologia Intel® Hyper-Threading 
(Tecnologia Intel® HT) para vencer as cargas de trabalho mais exigentes. 
68
Resumo da Unidade 3
Nesta unidade, você conheceu compreendeu os modelos de von Neumann e de 
barramento de sistema, necessários para as arquiteturas de computadores digitais. Você 
estudou, também, o sistema de computação, enfatizando suas partes principais, como 
processadores, memórias e dispositivos de entrada/saída. 
CONCEITO
Os computadores digitais apresentam uma arquitetura baseada no modelo de von 
Neumann, que nada mais é que uma arquitetura de computador que se caracteriza pela 
possibilidade de uma máquina digital armazenar seus programas no mesmo espaço 
de memória em que os dados, podendo dessa forma manipular tais programas. Os 
computadores de hoje em dia apresentam processadores superpotentes.
69
Referências 
CORRÊA, A. G. D. Organização e arquitetura de computadores. São Paulo: Pearson 
Education do Brasil, 2016. Disponível na Biblioteca Virtual.
STALLINGS, W. Arquitetura e organização de computadores. 10. ed. São Paulo: Pearson 
Education, 2017. Disponível na Biblioteca Virtual.
TANENBAUM, A. S. Organização estruturada de computadores. 6. ed. São Paulo: 
Pearson Prentice Hall, 2013. Disponível na Biblioteca Virtual. 
Execução de programas
UNIDADE 4
71
Nesta unidade, você irá conhecer como a arquitetura de computadores reconhece os 
programas que são executados na memória do computador. Também irá aprender a 
diferença inerente aos processos de compilação e interpretação de programas, além de 
compreender a linguagem montadora e seus princípios.
INTRODUÇÃO
OBJETIVO
Nesta unidade, você será capaz de:
• Entender o funcionamento de programas executáveis a partir da visão da 
arquitetura de computadores, assim como a diferença entre linguagem interpretada 
e linguagem montadora.
72
Geração de programas executáveis 
Antes mesmo de falarmos na geração de programas executáveis, precisamos saber que 
a unidade de processamento central – CPU executa cada instrução em uma série de pe-
quenas etapas. Tal sequência de etapas costuma ser denominada ciclo buscar-decodi-
ficar-executar, independentemente da arquitetura do computador (TANENBAUM, 2013). 
Os computadores e suas arquiteturas utilizam programas para realizar o processamento 
de dados. Um programa nada mais é que um conjunto de instruções cuja função é gerar 
dados de saída a partir de dados de entrada (CORRÊA, 2016).
Como já sabemos, para executar as instruções do programa, a CPU utiliza ciclos de 
máquina, ora denominado ciclo buscar-decodificar-executar. Veja, abaixo, as fases que 
compõem esse ciclo de máquina:
1. Busca 2. Decodificação 3. Execução
O sistema copia a 
próxima instrução 
no registrador de 
instrução da CPU. 
O endereço da 
instrução a ser 
copiada permanece 
no registrador 
denominado 
contador de 
programa (program 
counter).
 A unidade de 
controle decodifica a 
instrução quando ela 
está no registrador 
de instrução 
(instruction register). 
Dessa etapa, resulta 
o código binário para 
uma operação que o 
sistema vai realizar.
 A ordem da tarefa é 
enviada pela unidade 
de controle para um 
componente da CPU. 
Esse componente 
recebe e executa a 
instrução ou tarefa
73
Figura 1 – Etapas de um ciclo de máquina.
Fonte: Corrêa (2016).
O ciclo de execução de programas executáveis apresenta uma equivalência entre 
processadores. Tal equivalência, que envolve hardware e interpretadores, tem importante 
implicações para a organização de computadores e para o projeto de sistemas de 
computadores.
Um programa executável é aquele cujo código-fonte produzido por uma linguagem de 
programação já tenha sido convertido em código executável. 
Segundo Stallings (2017), o compilador é um programa que converte outro programa de 
uma linguagem-fonte, tecnicamente conhecida como linguagem de programação, para 
linguagem de máquina, ora classificada como código-objeto.
Alguns compiladores geram saídas em linguagem de montagem, que é convertida para 
linguagem de máquina, por um montador diferente. 
Um compilador se distingue de um montador pelo fato de que cada instrução de entrada, 
não obrigatoriamente, corresponde a apenas uma instrução de máquina.
Um compilador pode suportar recursos diversos, como alocação automática de variáveis, 
expressões aritméticas arbitrárias, estruturas de controle em geral, escopo de variável, 
operações de entrada/saída, funções de alto nível e portabilidade de código-fonte. 
Portanto, o programa conversor que recebe o código-fonte de certa linguagem 
de programação e realiza a conferência da escrita gramatical e sintática correta, 
convertendo-o para a linguagem de máquina, gerando um programa executável, é 
tecnicamente denominado compilador. Observe a ilustração a seguir:
Execução
(sem mais instruções)
Ciclo da 
máquina
Início
Fim
BuscaDecodificação
Decodificar
Bu
sc
ar
Executar
74
Figura 2 – Processo completo de compilação.
Fonte: Tanenbaum (2013).
Código-fonte Código-objeto
Código 
executável
Escrita do programa 
na linguagem fonte 
(p.e.C)
Criação de código 
executável e 
alocação de memóriaCompilação
Execução
Editor de texto
Compilador Carregador
Ligador
A figura anterior ilustra o processo completo de conversão de um código-fonte em código 
executável. Inicialmente, o código-fonte é gerado a partir de um editor de texto, na maioria 
das vezes, próprio de certa linguagem de programação, que em seguida é convertido em 
código-objeto por meio do processo de compilação. Esse código-objeto é carregado e 
ligado a eventuais funções de bibliotecas próprias da linguagem de programação utilizada, 
a fim de gerar o código executável. Esse código executável é alocado na memória real do 
computador para poder ser efetivamente executado.
MIDIATECA
Acesse a midiateca da Unidade 4 e veja o conteúdo complementar indicado pelo 
professor sobre Albor.
75
Interpretação 
Interpretadores são programas de computador que leem o código-fonte de uma 
linguagem de programação interpretada e o convertem em código executável.
Como podemos caracterizá-los?
O interpretador caracteriza-se por realizar a leitura do código-fonte, linha a linha, 
convertendo cada leitura em código-objeto, tecnicamente denominado bytecode. 
Dependendodo interpretador, a leitura pode ser feita de forma global para somente 
depois converter o código-fonte inteiro, deixando-o pronto para ser executado (lembra 
os compiladores).
Então, a interpretação é realizada da seguinte forma: 
1. A primeira 
instrução do 
programa-fonte 
é recebida pelo 
conversor, que 
verifica se a escrita 
está correta, 
convertendo a 
instrução, portanto, 
em linguagem de 
máquina.
2. Após a checagem, 
o interpretador ordena 
ao computador que 
execute a instrução 
em código de 
máquina.
3. Esse processo é 
repetido até que a 
última linha de código 
seja efetivamente 
convertida e 
executada. 
Na verdade, o processo de interpretação apresenta um único passo: a execução do 
programa a partir do código-fonte em certa linguagem de programação.
76
Figura 3 – Processo completo de interpretação.
Fonte: Adaptada de Tanenbaum (2013).
Procedimento-
fonte 1
Módulo-
objeto 1
Módulo-
objeto 2
Módulo-
objeto 3
0 0 0 010 01110101
01010 0 0 010 010 0
10 010 0 010 010 01
0 010 010 01010 01
0 10 0 10 10 0 10 111
0 0 0 0 1 0 0 1 0 0 1 0 0
Programa executável 
(código binário)
Procedimento-
fonte 2
Interpretador
Carregador
Memória 
principal
Ligador
Procedimento-
fonte 3
Um método semelhante denominado tradução também pode ser utilizado para realizar 
tal conversão. Nesse método, em vez de armazenar instruções do programa-fonte 
na sequência que são fornecidas, o tradutor gera códigos intermediários visando não 
sobrecarregar a memória do computador. Nesse processo, se um erro for detectado, 
o processo é retornado para a primeira instrução do código-fonte, para que seja 
providenciada a correção necessária do código.
Existem três processos de conversão de código-fonte em código executável: 
1. Compilador.
2. Interpretador.
3. Tradutor.
Existe semelhança nos processos de interpretação e tradução. No entanto, este 
é bem diferente do processo de compilação.
Importante
77
MIDIATECA
Acesse a midiateca da Unidade 4 e veja o conteúdo complementar indicado pelo 
professor sobre compilador.
78
Linguagem montadora 
Uma linguagem de montagem pura, segundo Tanenbaum (2013), é uma linguagem na 
qual cada declaração produz exatamente uma instrução de máquina.
Na verdade, existe uma correspondência um para um entre instruções de máquina e 
declarações no programa de montagem. Se cada linha em linguagem de montagem 
conter exatamente uma declaração e cada palavra de máquina conter exatamente uma 
instrução de máquina, então um programa de montagem de n linhas produzirá um 
programa em linguagem de máquina de n instruções.
O motivo pelo qual as pessoas usam linguagem de montagem em vez de programação 
em linguagem de máquina é porque é muito mais fácil de programar, pois se aproxima 
mais do entendimento do homem que da máquina, diferentemente da linguagem de 
máquina, que fica mais próxima do entendimento da máquina.
Nesse contexto, podemos afirmar que o uso de nomes simbólicos e endereços 
simbólicos, em vez de binários e hexadecimais, faz uma enorme diferença. Por essa 
razão, a linguagem de montagem utiliza mnemônicos para representar suas instruções.
Corrêa (2016) afirma que existem dois tipos de montadores: montador de dois passos 
e montador de um passo. O montador de dois passos tem esse nome por fazer duas 
passagens pelo código-fonte, da seguinte maneira:
O montador lê 
o código-fonte 
e determina os 
endereços para 
as referências 
simbólicas, 
construindo uma 
tabela de símbolos.
O código-fonte é 
lido novamente, e 
os mnemônicos 
das instruções 
(abreviação de 
comandos da 
instrução) e 
as referências 
simbólicas são 
substituídos por 
códigos de máquina.
1 2
79
O montador de um passo faz apenas uma passagem pelo código-fonte, porém esse fato 
implica restrições no programa-fonte. A principal dificuldade disso envolve referências 
futuras a rótulos. Os operandos das instruções podem ser símbolos que ainda não 
foram definidos pelo programa-fonte. Portanto, o montador não sabe qual endereço 
relativo inserir na instrução traduzida. No entanto, essa dificuldade pode ser sanada 
pelo montador. Ao encontrar um operando da instrução que seja um símbolo ainda não 
definido, o montador:
• Deixa o campo do operando da instrução vazio, na instrução binária montada.
• Insere o símbolo usado como um operando na tabela de símbolos. A entrada da 
tabela é marcada para indicar que o símbolo não está definido.
• Adiciona o endereço do campo do operando da instrução, que se refere ao símbolo 
indefinido, a uma lista de referências futuras associadas à entrada na tabela de 
símbolos.
Quando a definição de símbolo é encontrada, ela é associada à tabela de símbolos 
(CORRÊA, 2016).
A linguagem de montagem (assembly), de acordo com Stallings (2017), é uma linguagem 
de programação que está bem próxima à linguagem de máquina. Em geral, cada instrução 
da linguagem de montagem é traduzida em uma instrução de máquina pelo montador. A 
linguagem de montagem é dependente do hardware, com uma linguagem de montagem 
diferente para cada tipo de processador. 
As instruções da linguagem de montagem devem fazer referência aos registra-
dores específicos do processador, incluir todos os opcodes destes e refletir o 
tamanho em bits de vários registradores do processador e dos operandos da 
linguagem de máquina. Dessa forma, um programador de linguagem de mon-
tagem deve compreender bem a arquitetura do computador. 
Importante
Salvo informar que programadores raramente usam linguagem de montagem para 
aplicações ou até programas de sistemas. Isso é feito por meio das inúmeras linguagens 
de programação de alto nível existentes no mercado.
80
O uso da linguagem de montagem reporta desvantagens significativas; de acordo com 
Stallings (2017), são elas:
1. Tempo de desenvolvimento: escrever códigos em linguagem de montagem leva 
muito mais tempo do que escrever em linguagem de alto nível.
2. Confiabilidade e segurança: é muito fácil cometer erros no código em linguagem 
de montagem, pois o montador não verifica se as convenções de chamada e 
convenções para salvar registradores são obedecidas.
3. Depuração e verificação: o código em linguagem de montagem é mais difícil de 
depurar e verificar, porque há mais possibilidade de erros do que um código de alto 
nível.
4. Manutenção: o código em linguagem de montagem é mais difícil de modificar e 
manter, porque a linguagem permite o chamado código “espaguete” não estruturado 
e o tipo de truques que são difíceis de serem entendidos por outras pessoas. Nesse 
caso, uma documentação minuciosa e um estilo de programação consistente são 
necessários.
5. Portabilidade: o código em linguagem de montagem é específico para uma 
plataforma. Assim, ir para uma plataforma diferente é muito difícil.
6. Códigos de sistemas podem usar funções intrínsecas em vez de uma 
linguagem de montagem: os melhores compiladores modernos para C++, por 
exemplo, possuem funções intrínsecas para acessar registradores de controle do 
sistema e outras instruções do sistema.
7. Código para aplicação pode usar funções intrínsecas ou classes vetoriais 
em vez de linguagem de montagem: os melhores compiladores modernos 
para C++, por exemplo, possuem funções intrínsecas para operações vetoriais e 
outras instruções especiais que antes requeriam programação em linguagem de 
montagem.
8. Compiladores melhoraram muito nos últimos anos: com a melhora significativa 
dos compiladores modernos, a linguagem de montagem foi aos poucos deixando 
de ser muito utilizada, sendo necessária, portanto, apenas para as operações de 
montagens em registradores dos processadores.
Vamos ver agora algumas vantagens do uso da linguagem de montagem:
1. Depuração e verificação: trata-se de analisar um código em linguagem de 
montagem gerado pelo compilador, ou ver a janela de montagem em um depurador. 
São úteis para localizar erros e verificar a qualidade da otimização feita pelo 
compilador para determinada parte do código.
81
2. Desenvolvimento de compiladores:

Outros materiais